DFT를 사용한 서브 픽셀 이미지 이동은 실제로 어떻게 작동합니까?


12

서브 픽셀 시프트 이미지 생성과 관련된 응용 프로그램의 여러 이미지 보간 방법의 품질을 평가하려고합니다. 나는이 모든 보간 변형을 사용하여 서브 픽셀 시프트의 결과를 완벽하게 시프트 된 이미지와 비교할 수 있다고 생각했지만 이미지를 얻을 수는 없습니다 (보간이 필요한 이유는 무엇입니까?).

주파수 영역에서 DFT + 시프트를 사용하는 것에 대해 생각하고 있었으며 이미지를 명시 적으로 보간하는 것 (쌍 선형, 이중 입방체 등 사용)과 비교하여 실제로 어떻게 작동하는지 확실하지 않습니다. 완벽하게 시프트 된 이미지를 생성 할 수는 없지만 손가락을 넣을 수는 없습니다. DFT를 사용한 서브 픽셀 이동은 보간을 적용하는 것과 동일합니까? 이 방법으로 얻은 이미지에서 픽셀 값의 바이어스는 무엇입니까? 감사!

편집 : 문제를 생각한 후 FFT는 고조파 (사인 함수) 측면에서 원래 함수의 근사치 (더욱 DFT)이므로 일종의 삼각 보간에 해당한다고 생각했습니다. 삼각법 보간 인 이산 데이터에 대한 "푸리에 시리즈 보간"공식을 기억하지만 연결되어 있는지 확실하지 않습니다.


FFT (고속 푸리에 변환)는 이산 푸리에 변환을위한 알고리즘입니다. DFT는 고조파 측면에서 원래 기능의 근사치가 아니라 복잡한 지수 직교 기반으로 신호를 투사합니다.
Bryan

그러나 신호 자체는 일부 강도 분포의 샘플링 및 양자화 된 근사치이며 DFT는 이론적 인 분포와 비교하여 고조파 성분에 대해 제한됩니다. IDFT에서 정확한 신호를 다시 얻을 수 있지만 IDFT를 다시하기 전에 이동과 같은 일을하는 경우 편향이 있습니다. 아니면 뭔가 빠졌습니까?
neuviemeporte

DFT는 실제로 이산화 된 입력을 취하지 만 양자화 된 입력에 제한되지는 않습니다. 신호가 중요하지 않습니다. 당신이 지적했듯이, 당신은 정확한 신호를 다시 얻을 수 있습니다. 그러나 "shifting"이 무슨 뜻인지 잘 모르겠습니다. 주파수 영역에서의 시프 팅 특성은 잘 알려져있다 (시간 영역에서의 복잡한 주파수 변환). "시간"영역에서 변화하고 싶은 것이 있다면 DFT 이중에 대해 생각해야합니다.
Bryan

1
나는 신호의 DFT (푸리에 시프트 정리를 사용하여 "픽셀 도메인"에서 이미지의 서브 픽셀 시프트와 같은)의 DFT에 대한 작업을 수행하면 IDFT가 @ hotpaw2의 설명에 따라 보간 결과를 반환한다는 것을 의미합니다 대답. 이 보간은 신호가 대역 제한되지 않고 DFT 자체가 유한 한 양자화 된 (0-255) 샘플 세트로부터 계산 되었기 때문에 불완전합니다.
neuviemeporte

답변:


4

주파수 영역에서 DFT / FFT와 제로 패딩을 추가 한 다음 더 긴 IDFT / IFFT는 보간 점을 반환합니다. 이 포인트는주기적인 Sinc 커널을 사용하여 보간되며, 이는 원래 샘플 속도의 절반 이하로 엄격하게 밴드 제한되는 원본 데이터에 대한 완벽한 보간입니다. 그러나 데이터는 원형 랩핑 된 것처럼 작동하므로 일부 이미지의 가장자리에서 이상한 결과가 발생할 수 있습니다. 따라서 보간 전에 원본 소스의 가장자리를 멋진 필러 또는 프레임 색상으로 채울 수 있습니다.

2 배까지 업 샘플링하는 경우 (IFFT 앞의 길이를 두 배로 늘리기 위해 FFT 제로 패드) 보간 된 포인트를 사용하여 반 픽셀 이동을 수행 할 수 있습니다. 세 번째 픽셀 이동 등의 경우 3 배. 이동의 경우 원래 크기와 초과 보간 된 점을 버려 원하는 크기를 얻을 수 있습니다.


5
@ hotpaw2 : DFT에 대한 보간 커널은 무한한 sinc ()가 아닙니다. 실제로 DFT는 이산적이고 유한 한 변환입니다. DFT에 의한 보간은 일부 저자에 의해 주기적 sinc () 라고도하는 Dirichlet 커널과의 컨볼 루션에 해당합니다 . en.wikipedia.org/wiki/Dirichlet_kernel
Arrigo

@Arrigo : 동의합니다. 수정 답변을 수정했습니다.
hotpaw2

@ hotpaw2 : FFT를 두 배 크기로 채우면 IFFT가 두 배 크기의 재구성을 생성합니다. 잉여와 어떻게해야할지 모르겠습니까? 감사합니다
neuviemeporte

불필요한 잉여 점수는 버립니다. 2X 업 샘플에서는 재구성 된 원래 포인트와 교대로 다른 모든 것이 전환됩니다. 3X 업 샘플에서는 원본과 교대로 2 개의 시프트 포인트 (1/3 및 2/3 씩)를 얻습니다. 등 업 샘플링할수록 더 많이 버립니다.
hotpaw2

7

DFT를 사용하여 이미지를 전환하는 방법을 이해하려면 몇 가지 주요 정보가 필요합니다.

첫째, 푸리에의 정리 : 아마도 연속적인 (즉, 아날로그) 사례를 먼저 보는 것이 더 쉽습니다. 함수가 있다고 상상해보십시오. g (t)라고 부릅니다. 간단히하기 위해, g (t)는 아날로그 오디오 녹음이라고하자. 이것은 연속적인 1 차원 함수이며 시간의 함수로서 순간 압력을 나타낸다.

이제 g (t)는 오디오 녹음을 표현할 수있는 방법 중 하나입니다. 또 다른 하나는 G (f)입니다. G (f)는 g (t)의 푸리에 변환입니다. 따라서 G (f) == FT (g (t))입니다. G (f)는 g (t)와 모두 동일한 정보를 갖지만 시간 도메인 대신 주파수 도메인에서 해당 정보를 나타냅니다. 푸리에 변환 (Fourier Transforms)에 대해서는 몇 가지 까다로운 세부 사항이 있습니다.

G (f)를 g (t)에 포함 된 "주파수 분포"로 생각할 수 있습니다. 따라서 g (t)가 사인파 (즉, 순수한 톤)이면 G (f)는 해당 톤의 주파수를 제외하고 모든 곳에서 0이됩니다. 이것은 아마도 G (f)가 ​​일반적으로 복잡한 함수라는 것을 언급하기에 좋은 지적 일 것입니다. 즉, 실수와 허수의 구성 요소 또는 크기와 위상을 갖는 것으로 생각할 수있는 복소수를 반환합니다.

δ()δ

자 이제 벨트 아래에 연속 FT가 있습니다.

두 번째 통찰력은 다음과 같습니다. 이산 푸리에 변환은 샘플링 된 신호가 아날로그 신호이므로 푸리에 변환입니다. 이 경우 "이산"은 범위가 아니라 함수 영역 (시간 또는 주파수)의 양자화를 나타냅니다. 사운드 카드에서 얻은 샘플링 된 디지털 신호는 도메인과 범위 모두에서 양자화됩니다.

사운드 카드에서 얻은 디지털 바이트 스트림에는 마이크의 원래 연속 (아날로그) 신호에 대한 "샘플"이 포함됩니다. 샘플링 된 g (t)의 DFT를 취해도 여전히 G (f)를 얻습니다. G (f)는 g (t)에 포함 된 정보를 나타내는 다른 방법 일뿐입니다. 우리가 순종하면 나이 퀴 스트의 theorum을 우리의 이산 G (f는) 우리의 원래의 연속 신호의 모든 정보가 있어야하므로, 샘플링 된 신호 g (t)는, 원래의 연속 신호의 모든 "정보"를 포함하고 있습니다. 괄호로, G (f)는 여전히 복잡한 함수입니다.

이것은 서브 픽셀 쉬프팅의 마법이 들어오는 곳이지만,이 경우 오디오 신호가 샘플보다 적은 시간으로 오디오 신호를 쉬프트하는 것에 대해 씁니다.

이자형나는π2

그 수단은, 우리는 (기준 시간에 우리의 오디오 레코딩을 전환 할 수 있는 간단 G (t)의 위상을 수정하여 샘플 시간의 일부를 포함하여, 우리는 선택할 양). 실제로, 그 진술은 아마도 너무 캐주얼합니다. 정량화되지 않은 샘플링 된 신호의 경우 위상을 임의로 조정할 수 있습니다 (이는 도메인의 양자화와 범위의 범위를 더 일찍 구분 한 이유 중 하나입니다). 그러나, 양자화 된 샘플링 된 신호 (예를 들어, 오디오의 바이트 스트림)에있어서, 양자화 스텝 크기 (즉, 비트 수)는 위상을 조정할 수있는 해상도를 결정한다. 역 푸리에 변환 G (f) (또는이 샘플링 된 신호의 경우 DIFT)를 선택하면 새로운 샘플 세트 g '(t) = DIFT (G (F))는 모두 선택한 양만큼 시간이 이동합니다.

이것을 픽셀에 적용한다는 것은 여기서 논의 된 1 차원 FT 대신 2 차원 FT를 사용한다는 것을 의미합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.