为什么超声图像的PSNR会降低?

时间:2013-11-24 07:18:05

标签: image matlab image-processing

我正在使用不同类型的滤镜来去除超声图像中的斑点噪声。我已经将下面的论文作为我的基础论文并尝试重现本文的结果:

My Base Paper

我设计了所有过滤器并使用默认的matlab图像进行了测试。我对结果很满意。滤波图像的均方误差(MSE)小于噪声图像的均方误差(MSE),滤波图像的信噪比(SNR)和峰值信噪比(PSNR)大于噪声图像。

但遗憾的是,当我尝试用于超声波图像时,结果却相反。也就是说,滤波图像的MSE大于噪声图像的MSE和SNR&滤波图像的PSNR小于噪声图像的PSNR。

我尝试了许多其他超声图像,但无法正确使用。

Lena.jpg的结果

Lena

*******质量测量***********

*******吵闹的形象***********

均方误差= 0.0080186

信噪比(SNR)= 69.4875

峰值信噪比(PSNR)= 69.0898

******* 3 x 3中位数过滤器***********

均方误差= 0.00257916

信噪比(SNR)= 74.4137

峰值信噪比(PSNR)= 74.016

******* 5 x 5中位数过滤器***********

均方误差= 0.00188434

信噪比(SNR)= 75.7769

峰值信噪比(PSNR)= 75.3792

******* 7 x 7中位数过滤器***********

均方误差= 0.00208378

信噪比(SNR)= 75.34

峰值信噪比(PSNR)= 74.9423

ultrasound.jpg的结果

Results for ultrasound image

*******质量测量***********

*******吵闹的形象***********

均方误差= 0.00153502

信噪比(SNR)= 64.8881

峰值信噪比(PSNR)= 76.2697

******* 3 x 3中位数过滤器***********

均方误差= 0.00770785

信噪比(SNR)= 57.8799

峰值信噪比(PSNR)= 69.2615

******* 5 x 5中位数过滤器***********

均方误差= 0.00810142

信噪比(SNR)= 57.6637

峰值信噪比(PSNR)= 69.0452

******* 7 x 7中位数过滤器***********

均方误差= 0.00853159

信噪比(SNR)= 57.439

峰值信噪比(PSNR)= 68.8205


我不确定为什么我会得到这样的结果。我添加了用于质量测量的代码。请纠正我如果我做错了什么。

function metrics = Metrics1(Orig_Image,Esti_Image)


    %---Mean-Square Error(MSE) Calculation
    Orig_Image = im2double(Orig_Image);%---Convert image to double class
    Esti_Image = im2double(Esti_Image);%---Convert image to double class
    [M N] = size(Orig_Image);%---Size of Original Image
    err = Orig_Image - Esti_Image;%---Difference between two images
    metrics.M_SE = (sum(sum(err .* err)))/(M * N);

    %---Signal-to-Noise Ratio(SNR) Calculation
    metrics.SNR = 10*log10((1/M*N)*sum(sum(Orig_Image.*Orig_Image))/(metrics.M_SE));

    %---Peak Signal-to-Noise Ratio(PSNR) Calculation 
    if(metrics.M_SE > 0)
        metrics.PSNR = 10*log10(255*255/metrics.M_SE);
    else
        metrics.PSNR = 99;
    end

     %---Mean and Standard Deviation

    %---Beta Calculation
    h = fspecial('laplacian');
    I1 = imfilter(Orig_Image,h);
    I2 = imfilter(Esti_Image,h);
    I_1 = mean2(I1);
    I_2 = mean2(I2);
    metrics.Beta = sum(sum((I1 - I_1).*(I2 - I_2)))./(sqrt(sum(((I1 - I_1).^2).*((I2 - I_2).^2))));
end

2 个答案:

答案 0 :(得分:2)

过滤后的超声图像具有更高的MSE(和更低的SNR)的原因仅仅是因为ultrasound.jpg没有噪音,而Lena.jpg相当干净。{/ p>

您的过滤实际上消除了椒盐/斑点噪声,但这会使滤波后的图像与原始图像更加不同,原始图像可能具有与此类噪声相似的频率特性。当然,添加噪音会产生错误,但是当您使用添加的噪点过滤图像时,它实际上变得更多与原始图像不同,至少在MSE意义上是这样。

您没有假想的完美超声图像。

答案 1 :(得分:0)

奇怪的是,你的超声波MSE比Lena大得多。请确保您的像素强度比例和噪声添加正确,并在Orig_Image中选择正确的原始图像(无噪声)。

要检查代码是否正常工作,您可以选择一个小区域(4 x 4,逐个像素)来比较具有不同噪声级别的图像的中值滤波器。