MATLAB实现DCP去雾算法:PSNR与SSIM偏低问题求助及解决
复现DCP去雾算法时PSNR/SSIM指标异常的解决办法
我是MATLAB图像处理领域的新手,最近在复现He等人的《Single Image Haze Removal Using Dark Channel Prior》(DCP)论文。去雾后的图像视觉清晰度表现正常,但PSNR和SSIM指标却差得离谱:对比其他基准实验的16.62(PSNR)和0.8179(SSIM),我的实现仅能达到7.07和0.002。
折腾后终于定位到问题——图像类型转换时需用im2uint8()替代uint8(),修正后指标恢复正常。
修正后的完整实现代码如下:
image = imread(imagePath); % dehaze patch_size = 15; omega = 0.95; r = 60; eps = 0.001; tx = 0.1; haze_free = dcp_guidedfilter(image, patch_size, omega, r, eps, tx, true); % measure quality haze_free = im2uint8(haze_free); % 关键修正:用im2uint8替代uint8 [peaksnr, snr] = psnr(haze_free, image); [ssimval,ssimmap] = ssim(haze_free, image);
内容的提问来源于stack exchange,提问作者Hai Pham
相关产品推荐
相关产品推荐

