matlab psnr最后有三个数,大神 帮忙看下程序 为什么最后没有MSE和PSNR的结果?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

DATA=imread('wm.jpg');

DATA=rgb2gray(DATA);

tic

DATA=double(DATA);

size1=size(DATA);

% 分块;

tu=DATA(1:size1(1),1:size1(2),1);

xx=size1(2);

yy=size1(1);

nrx=xx/8;

nry=yy/8;

ndx=xx/16;

ndy=yy/16;

DD=zeros(ndy,ndx,8,64);

cund1=zeros(16,16);

cund2=zeros(8,8);

cund3=zeros(1,64);

cund33=zeros(1,64);

cund4=zeros(8,8);

RRR=zeros(nry,nrx,6);

cunr=zeros(1,64);

for i=1:ndy

for j=1:ndx

cund1=tu(1+16*(i-1):16+16*(i-1),1+16*(j-1):16+16*(j-1));

for l=1:8

for m=1:8

cund2(l,m)=(cund1(1+2*(l-1),1+2*(m-1))+cund1(2+2*(l-1),2+2*(m-1))+cund1(2+2*(l-1),1+2*(m-1))+cund1(1+2*(l-1),2+2*(m-1)))/4;

end;

end;

DD(i,j,1,1:64)=reshape(cund2,[1,64]);

cund4=fliplr(cund2);

DD(i,j,2,1:64)=reshape(cund4,[1,64]);

cund4=flipud(cund2);

DD(i,j,3,1:64)=reshape(cund4,[1,64]);

cund4=flipud(fliplr(cund2));

DD(i,j,4,1:64)=reshape(cund4,[1,64]);

cund4=rot90(flipud(cund2));

DD(i,j,5,1:64)=reshape(cund4,[1,64]);

cund4=rot90(cund2);

DD(i,j,6,1:64)=reshape(cund4,[1,64]);

cund4=rot90(rot90(rot90(cund2)));

DD(i,j,7,1:64)=reshape(cund4,[1,64]);

cund4=cund2';

DD(i,j,8,1:64)=reshape(cund4,[1,64]);

end;

end;

% 匹配

for i=1:nry

for j=1:nrx

cunr=reshape(tu(1+8*(i-1):8+8*(i-1),1+8*(j-1):8+8*(j-1)),[1,64]);

sumalpha=sum(cunr);

sumalpha2=norm(cunr)^2;

dx=1;

dy=1;

ut=1;

minH=10^20;

minot=0;

minst=0;

for k=1:ndy

for l=1:ndx

for m=1:8

cund3(1:64)=DD(k,l,m,1:64);

sumbeta=sum(cund3);

sumbeta2=norm(cund3)^2;

alphabeta=cunr*cund3';

if (64*sumbeta2-sumbeta^2)~=0

st=(64*alphabeta-sumalpha*sumbeta)/(64*sumbeta2-sumbeta^2);

elseif (64*alphabeta-sumalpha*sumbeta)==0||st > 1 || st < -1

st=0;

else

st=10^20;

end;

ot=(sumalpha-st*sumbeta)/64;

H=(sumalpha2+st*(st*sumbeta2-2*alphabeta+2*ot*sumbeta)+ot*(64*ot-2*sumalpha))/64;

if H

dx=l;

dy=k;

ut=m;

minot=ot;

minst=st;

minH=H;

cund33=cund3;

end;

end;

end;

end;

RRR(i,j,1)=minst;

RRR(i,j,2)=minot;

RRR(i,j,3)=dy;

RRR(i,j,4)=dx;

RRR(i,j,5)=ut;

RRR(i,j,6)=minH;

end;

end;

% 编码

huifu=ones(yy,xx);

for iter=1:10

for i=1:nry

for j=1:nrx

st=RRR(i,j,1);

ot=RRR(i,j,2);

dy=RRR(i,j,3);

dx=RRR(i,j,4);

ut=RRR(i,j,5);

cund1=huifu(1+16*(dy-1):16+16*(dy-1),1+16*(dx-1):16+16*(dx-1));

for l=1:8

for m=1:8

cund2(l,m)=(cund1(1+2*(l-1),1+2*(m-1))+cund1(2+2*(l-1),2+2*(m-1))+cund1(2+2*(l-1),1+2*(m-1))+cund1(1+2*(l-1),2+2*(m-1)))/4;

end;

end;

switch ut

case 1

cund4=cund2;

case 2

cund4=fliplr(cund2);

case 3

cund4=flipud(cund2);

case 4

cund4=flipud(fliplr(cund2));

case 5

cund4=rot90(flipud(cund2));

case 6

cund4=rot90(cund2);

case 7

cund4=rot90(rot90(rot90(cund2)));

case 8

cund4=cund2';

end;

huifu(1+8*(i-1):8+8*(i-1),1+8*(j-1):8+8*(j-1))=st*cund4+ot;

end;

end;

end;

toc

% 计算mse

mse=0;

for i=1:nrx

for j=1:nry

a=(DATA(i,j)-huifu(i,j))^2;

mse=mse+a;

end

end

mse=mse/(256*256);

psnr=10*log10((255*255)/mse);

Igray = mat2gray(DATA);

huifu = mat2gray(huifu);

subplot(1,2,1),imshow(Igray);

subplot(1,2,2),imshow(huifu);

因为算法中的分块 我把图像尺寸改成了480×480 结果就出来俩对比图 没出MSE和PSNR结果 就没法对图像进行客观分析了 有没有图像压缩的大腿 个解释下啊 谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值