이미지의 주파수 구성 요소를 식별하는 데 문제가 있습니다.
여기서 간단히 생성 한 256×256 바이너리- 이미지.
a = [zeros(256,128) ones(256,128)]; imshow(a);
이미지 FFT 촬영 및 이동 제로 주파수를 중앙에,
f = fft2(a) shft = fftshift(f); imshow(log(shft)) %stretching
결과,
몇 개의 주파수 성분이 있고 그 주파수는 무엇인지 어떻게 식별합니까?
또한 1D 시퀀스의 FFT를 계산하고 해당 시퀀스가 있는지 플로팅하면 음수에 대한 특정 값은 무엇을 의미합니까? 어떻게 음의 빈도가있을 수 있나요?
댓글
- 관련 (중복 가능) : dsp. stackexchange.com/q/1637/77
- 변환의 기능을 이해하는 가장 좋은 방법 중 하나는 역 변환을 실험하는 것입니다. 점을 그린 다음 역변환하여 생성되는 파도를 확인하십시오. 그런 다음 다른 위치에 점을 표시 한 다음 선 등을 시도합니다. 음의 주파수에 대해서는 dsp.stackexchange.com/q/431/29 를 참조하십시오. li>
답변
어떻게 음의 주파수가있을 수 있습니까?
FFT 계수는 주파수가 아니라 복잡한 진폭입니다. 계수의 계수는 진폭을 나타내고 계수의 인수는 위상을 나타냅니다.
log(shft)
계산을 위해 Matlab에서 경고 또는 오류 메시지를 받아야합니다. div>, shft는 복잡한 행렬이므로 결과는 실제가 아니며 이미지로 표시 할 수 없습니다.
댓글
- 말하는 모든 것 사실이지만 질문을 회피하는 것이기도합니다. 계수의 절반은 음의 주파수에 해당하는 것으로 해석 될 수 있습니다.
답변
첫 번째 제안은 결과를 2D로 해석하기 전에 1 차원에서 FFT를 이해하십시오.
이산 푸리에 변환 (FFT는 DFT의 구현)은 복잡한 변환입니다. 크기가 N 인 2 개의 벡터 복소 벡터 사이를 변환합니다.
p>
따라서 1D의 경우 음수 값뿐만 아니라 일반적으로 복잡한 값도 얻게됩니다.
2D에서도 마찬가지입니다. imshow 함수는 아마도 복잡한 행렬의 실제 부분을 차지하고있을 것입니다 (imshow 문서에 명확하지 않음).
Answer
abs
명령이 누락되었습니다.
다음을 시도하십시오.
f = fft2(a) shft = fftshift(abs(f)); imshow(log(shft)) %stretching