重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
matlab的psnr(x,y)函数:x应为加了噪声的图像,y为原图,输出为峰值信噪比(Peak Signal-to-Noise Ratio, PSNR)。
网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、小程序设计、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了湘潭免费建站欢迎大家使用!
'uint8' 是8bit正整数。出错是说psnr不识别整数的输入。
你试试psnr(double(I),double(I1))
如果还不好使。
你的函数必须存在另外一个叫psnr.m的文件里
函数可以写在函数里,写在脚本里的函数不好使。
x1=imread(original);
x2=imread(test);
x1=double(x1);
x2=double(x2);
[m,n]=size(x1);
[m2,n2]=size(x2);
if m2~=m||n2~=n;
error('图像选择错误');
end;
msevalue=0;
for i=1:m;
for j=1:n;
msevalue=msevalue+(x1(i,j)-x2(i,j))^2;
end;
end;
msevalue=msevalue/(m*n);
disp(['输入数据的mse为:',num2str(msevalue)]);
psnrvalue=255^2/msevalue;
psnrvalue=10*log10(psnrvalue);
以上是求PSNR的程序,直接加在主函数后面就可以,或者新建一个m文件来保存之后调用。头两句直接读入原图像和经过处理的图像,把图像数据矩阵存放在x1和x2中~~例如x1=imread('lena.bmp');
上面那个是做合并加法+时的转换,返回的数据如果是整数序列,序列的加法就成了新增整型,并引起错误。而需要的是字符串的合并。
下面由于print打印函数默认会对最终输入的对象进行repr()字符表示化处理,所以不需要再次转换字符串
1、相关系数就用命令corrcoef
min(min(corrcoef(x1, x2))) 就是x1,x2之间的相关系数。
比如
t = (1:0.1:100)';
w = 2*pi;
x1=sin(w*t)+randn(size(t));
x2=cos(w*t)+randn(size(t));
x3=sin(w*t)+randn(size(t));
x1_x2 = min(min(corrcoef(x1, x2)))
x1_x3 = min(min(corrcoef(x1, x3)))
2、用corrcoef函数
设a1,b1,c1,d1 ,a2,b2,c2,d2 分别为f(x)和g(x)的系数
x=[a1,b1,c1,d1];
y=[a2,b2,c2,d2];
z=corrcoef(x,y)