2017-01-31 15 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) - Spectrum imageПостроение изображения после применения обратного преобразования Фурье opencv

Теперь, после обнуления местоположения помехового пикселя в спектре, я просто хочу посмотреть, как теперь изменяется исходное изображение. Я применил к нему обратный DFT и восстановил изображение, но изображение имеет нулевое изображение. Вот мой код:

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

@Miki мой вопрос после применения IDFT, как я могу восстановить изображение – Bala

+0

Поскольку вы нормализуете данные между 0 и 1, я полагаю, вам нужно масштабировать их до 0,255: 'inverseTransform.convertTo (finalimage, CV_8U, 255); 'Обратите внимание, что в связанном ответе нет нормализации. – Miki

ответ

-1

Inverse DFT вот что вам нужно здесь. Here - ответ на ваш вопрос.

+2

В следующий раз, когда вы обнаружите, что правильный ответ на вопрос находится в другом месте на SO, отметьте как дубликат, а не напишите ответ со ссылкой – Miki

+0

@Miki ok, спасибо за отзыв. –