在MATLAB中计算单个图像中的SNR

Omi*_*idi 2 matlab image noise

我有这个图像:

嘈杂的图像

我想计算它的SNR.对于我使用的代码:

img=imread('noicy.JPG');
img=double(img(:));
ima=max(img(:));
imi=min(img(:));
ims=std(img(:));
snr=20*log10((ima-imi)./ims)
Run Code Online (Sandbox Code Playgroud)

这是计算SNR的正确代码吗?

NKN*_*NKN 9

SNR的定义可以在这里这里找到:

标准和行业定义都可以使用(10log(x)20log(x)).检查一下

现在,signal它等于像素值(mean(img(:)))的平均值,并且是像素值()noise的标准偏差或误差值std(img(:)).

您可以使用比率或SNR=10*log10(signal/noise)以分贝表示结果.