0
我試圖實現光譜方法以獲得CImg圖像的顯着性,但是我無法到達那裏。 這可能看起來像是從這個問題(spectral residual saliency detection in C++ with CImg)轉發,但我想我解決了這個問題的兩個錯誤(atan2和FFT參數)。CImg - 使用光譜方法的顯着性
這裏是我的代碼:
int main(int argc, char * argv[]) {
const char * input_file = "img/pic.png";
CImg<float> input = CImg<float>(input_file);
const CImg<float> mask(3,3,1,1,1.0f/9.0f);
resize_fft(input); // Resize for fft
CImg<float> gray = any2gray(input); // to single channel grayscale
CImgList<float> fft = gray.get_FFT();
CImg<float> amp = (fft[0].get_pow(2) + fft[1].get_pow(2)).get_sqrt();
CImg<float> amp_log = (amp + 1.0f).get_log().get_normalize(0, 255);
CImg<float> phase = fft[1].get_atan2(fft[0]);
CImg<float> residual = amp_log - amp_log.get_convolve(mask);
CImg<float> real = residual.get_exp();
CImg<float>::FFT(real, phase, true);
real.save("img/001.png");
real.normalize(0, 255).save("img/002.png");
return 1;
}
兩個保存圖片001和002最終被噪音般的畫面,還是一樣的頻率空間。 如果你們能幫助我,我不會在做什麼事情?
謝謝。