Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2009-05-28
年龄: 38
帖子: 2
声望力: 0 ![]() |
![]()
function [PSNR,MSE]=evalue(Im,RecIm)
A=0; [m,n]=size(Im); for i=1:m for j=1:n A=A+(Im(i,j)-RecIm(i,j))^2; end end a=max(Im); PSNR=10*log10(m*n*(a^2)/A); MSE=A/(m*n); 这个M文件的作用是计算原始图像与输出图像的峰值信噪比和均方差,Im是原始图像矩阵,RecIm是处理后重构的图像矩阵,请问这样计算峰值性噪比和均方差对不对?我运行了一下提示有错误,错误如下: ??? Error using ==> mpower Integer data types are not fully supported for this operation. Both operands must be scalar. Error in ==> evalue at 10 PSNR=10*log10(m*n*(a^2)/A); 我刚刚开始运用MATLAB 不是很熟练 请高手帮忙解答 谢谢! |
![]() |
![]() |
![]() |
#2 |
普通会员
注册日期: 2008-08-17
年龄: 43
帖子: 77
声望力: 18 ![]() |
![]()
看来一般这里a是数组了,a^2是数组相乘,除非是一维的,否则对不上号。可能你想用a.^2,即每个元素分别相乘,如果没猜错的话。
那个for语句也可以换成: A=A+(Im-RecIm).^2,当然要求维数一样。 |
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2009-05-28
年龄: 38
帖子: 2
声望力: 0 ![]() |
![]()
这个a是想求出输入图像矩阵数据中峰值 不知道这么求对不对 还请高手再指点指点
|
![]() |
![]() |