2017-01-31 9 views
-1

푸리에 스펙트럼에서 수평 및 수직으로 보이는 노이즈 구성 요소를 제거하려고 시도한 후에 링크 http://www.docs.opencv.org/2.4/doc/tutorials/core/discrete_fourier_transform/discrete_fourier_transform.html의 코드를 따라 이미지에 푸리에 변환을 적용하려고합니다. (http://www.imagemagick.org/Usage/fourier/twigs_spectrum.png) - 스펙트럼 이미지역 푸리에 변환 opencv를 적용한 후 이미지 생성하기

스펙트럼의 노이즈 픽셀 위치를 제로화 한 후에 이제 원래 이미지가 어떻게 바뀌 었는지보고 싶습니다. 나는 역 DFT를 적용하고 이미지도 재구성했지만 이미지는 null 이미지입니다. 여기 내 코드는 다음과 같습니다.

Mat magI_copy; 
magI.copyTo(magI_copy); 
//magI.convertTo(magI_copy, CV_8U); 
//imshow("image", magI_copy); waitKey(); 
for (int i = 0; i < 86; i++){ 
    for (int j = 127; j < 130;j++){ 
     magI_copy.at<float>(i, j) = 0; 
    } 
} 
for (int i = 171; i < magI_copy.rows; i++){ 
    for (int j = 127; j < 130; j++){ 
     magI_copy.at<float>(i, j) = 0; 
    } 
} 
for (int i = 126; i < 131; i++){ 
    for (int j = 0; j < 87; j++){ 
     magI_copy.at<float>(i, j) = 0; 
    } 
} 
for (int i = 126; i < 131; i++){ 
    for (int j = 170; j < magI_copy.cols; j++){ 
     magI_copy.at<float>(i, j) = 0; 
    } 
} 
///////////Inverse Transform 

cv::Mat inverseTransform; 
cv::dft(magI_copy, inverseTransform, cv::DFT_INVERSE | cv::DFT_REAL_OUTPUT); 
normalize(inverseTransform, inverseTransform, 0, 1, CV_MINMAX); 
Mat finalimage; 
inverseTransform.convertTo(finalimage, CV_8U); 
+0

내 질문 IDFT를 적용한 후 어떻게 이미지를 재구성 할 수 있습니다 – Bala

+0

당신은 0과 1 사이의 데이터를 정상화하고 있기 때문에, 나는 당신이 그들을 0,255로 스케일링 할 필요가 있다고 가정합니다 :'inverseTransform.convertTo (finalimage, CV_8U, 255); '링크 된 답변에는 정규화가 없다는 것에 유의하십시오. – Miki

답변

-1

Inverse DFT이 여기에 필요합니다. Here은 귀하의 질문에 대한 답변입니다.

+2

질문에 대한 정답이 다른 곳에서 발견되면 다음 링크로 대답을 쓰는 대신 중복으로 표시하십시오 – Miki

+0

@Miki ok, 팁 주셔서 감사합니다. –