이것은 "프로그래밍"질문이 아닙니다. 그러나 나는 이것이이 공동체에서 널리 알려지고 이해되는 어떤 것이라 확신합니다.서로 다른 차원의 두 이미지의 스펙트럼을 어떻게 곱합니까?
필자는 이미지 x와 훨씬 더 작은 이미지 y를 가지고 있으며, 나는 FFT를 곱하여 두 가지를 컨버팅해야합니다. 그러나 그들은 같은 크기가 아니기 때문에 나는 주파수 영역 곱셈을하는 법을 모른다.
x (4096 x 4096 크기의 정수 행렬) 인 x의 (2 차원) FFT를 사용하면 주파수 도메인 표현 인 X (복소수 행렬 임)를 얻을 수 있다고 생각합니다. 2048 x 2048).
유사하게, (차원 64 x 64의 정수 행렬 인) y의 2 차원 FFT를 취하여 주파수 도메인 표현 Y를 얻습니다. (또한 복소수의 행렬이기도합니다. 그것의 차원은 32 x 32이다.)
나는 Numerical Recipes에서 fourn 함수를 사용하기 때문에 입력 행렬 x와 y는 이산 푸리에 변환 X로 대체되는 1 차원 배열로 축소되어야한다. 요점은 이것이 이미지에 2 차원 문제가 있음에도 불구하고 1 차원 배열로 작업하고 있다는 것입니다.
정확히 동일한 크기의 두 이미지 x와 y를 컨볼 루션하려했다면 말입니다. 그것 모두 매우 직관적입니다 :
X = FFT(x)
Y = FFT(y)
Z = X * Y (term by term multiplication)
Convolution of x and y = IFFT(Z)
그러나 X와 Y가 다른 길이 인 경우 어떻게 곱셈을 수행합니까?
하나의 가능성은 x와 동일한 치수를 갖기 위해 y를 패딩하는 것입니다. 그러나 이것은 끔찍하게 비효율적 인 것처럼 보인다. 또 다른 가능성은 X와 동일한 차원을 갖도록 Y를 패딩하는 것입니다. 그러나 주파수 공간에서 이것이 무엇을 의미하는지 모르겠습니다.
이 질문을하는 또 다른 방법은 다음과 같습니다. FFT를 사용하여 매우 다른 차원의 두 이미지를 컨버전하여 스펙트럼 (주파수 도메인 표현)을 곱할 수 있다면 어떻게 그 곱셈을 수행합니까?
감사합니다.
~ 마이클.
이 회선으로 무엇을하려고합니까? 작은 이미지 y의 큰 이미지 x에 대한 2D 컨볼 루션을 계산 하시겠습니까? 예를 들어 큰 이미지 x에서 작은 패치 y를 검색하는 경우 회선을 사용하여 y에 대한 상관 관계 검색을 구현할 수 있습니다. 푸리에 도메인에서 훨씬 더 효율적입니다. 그러나 이것이 당신의 목표라면 이것을 1D로 무너 뜨리는 것을 원하지 않을 것입니다. x와 y의 스펙트럼을 곱하는 어플리케이션은 무엇입니까? –