这里有PSNR的程序,供参考
function psnr=PSNR(Img1,Img0)
%计算图像Img1对Img0的PSNR值
%输入参数
% Img1:给定图像 Img1
% Img0:参考图像
%图像大小必须一样
%输出参数
% psnr:PSNR
N3=size(Img1);
tmp=minus(uint8(Img1),uint8(Img0));
tmp=tmptmp;
MSE=sum(sum(tmp))/(N3(1)N3(2));
if(MSE~=0)
psnr=10log10(65025/MSE);
else
psnr=10000; %标记为无穷大
end
'uint8' 是8bit正整数。出错是说psnr不识别整数的输入。
你试试psnr(double(I),double(I1))
如果还不好使。
你的函数必须存在另外一个叫psnrm的文件里
函数可以写在函数里,写在脚本里的函数不好使。
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
就是数字图像处理后的评价参数(SNR)信噪比,MSE(均方差)与PSNR(峰值信噪比)下面是我写的,不知道对不!请高手指教!谢谢!
MSE:
x=imread('e:\image\houbmp');
x1=imread('e:\image\11bmp');
x=double(x);
x1=double(x1);
[m,n]=size(x);
for i=1:m;
for j=1:n;
a(i,j)=x(i,j)-x1(i,j);
end
end
b=0;
for i=1:m;
for j=1:n;
b=b+a(i,j);
end
end
c=b/(mn)
SNR:
clear all;
x=imread('e:\image\2bmp');
x1=imread('e:\image\hbmp');
x=double(x);
x1=double(x1);
for i=1:110;
for j=1:110;
a(i,j)=x(i,j)^2;%after filtering's single
b(i,j)=x(i,j)-x1(i,j);
end
end
d=0;
e=0;
for i=1:110;
for j=1:110;
d=d+a(i,j);
e=e+b(i,j)b(i,j);
end
end
f=log10(d/e);
g=10f
解析:
建议你去网上下载一个checkmark,matlab写的,里面有你需要的全部东东,还有一些更宝贵的代码
以上。
做过的老狼
以上就是关于Matlab程序运行时出现个错误Undefined function or method 'psnr' for input arguments of type 'uint8'.全部的内容,包括:Matlab程序运行时出现个错误Undefined function or method 'psnr' for input arguments of type 'uint8'.、我在用matlab编程计算图像峰值信噪比和均方差值得程序运行后 没有得到相关的计算结果 怎么回事、matlab数字图像处理中求MSE与PSNR SNR语句,请!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)