psnr压缩
❶ 图像压缩 MATLAB实现 如何解压缩一个被压缩过的图像 急急急
法对图像进行压缩,得到一组压缩编码,然后解码这组编码,得到一幅解压缩图像.对解码图像与原始图像求差值,得到一差值图像,然后对该差值图像进行适当的编码.对差值图像的编码与初级编码共同构成对原始图像的编码.这种方法需要选择合适的初级编码方法与差值编码方法,使得这两者相结合,可以得到一种综合性能较好的编码方法。
其定义如图。
%%%%%%%%%%%%%%
clear
tic
%Image1=imread('pic\cameraman.tif');
xianshi;
number=input(' input the number:');
Image1=suoxiao('pic\cameraman.tif',number);
[imagem imagen]=size(Image1);
Sr=4;Sd=8;
Rnum=(imagem/Sr)*(imagen/Sr);
Dnum=(imagem/Sd)*(imagen/Sd);
Image2=zeros(Dnum,Sr,Sr);
Image2=blkproc(Image1,[Sd/Sr,Sd/Sr],'mean(mean(x))');
%压缩image1为原来1/2
% there are no eight tranformation for simpleness
RBlocks=zeros(Rnum,Sr,Sr);
DBlocks=zeros(Dnum,Sd,Sd);
DBlocksRece=zeros(Dnum*8,Sr,Sr);
%%取R块,K记标号----------------------------------
for i=1:imagem/Sr
for j=1:imagen/Sr
k=(i-1)*imagen/Sr+j;
RBlocks(k,:,:)=Image1((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr);
end
end
%取R块,K记标号----------------------------------
for i=1:imagem/Sd
for j=1:imagen/Sd
k=(i-1)*imagen/Sd+j;
m=Sr;n=Sr;
DBlocksRece(k,:,:)=Image2((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr);
DBlocksRece(k+Dnum,:,:)=DBlocksRece(k,m:-1:1,:); % 行上下翻转===(x轴对称)
DBlocksRece(k+2*Dnum,:,:)=DBlocksRece(k,:,n:-1:1); % 列左右翻转 ==== y轴对称
DBlocksRece(k+3*Dnum,:,:)=DBlocksRece(k,m:-1:1,n:-1:1); % 先行翻,再列翻 旋转180度
DBlocksRece(k+4*Dnum,:,:)=reshape(DBlocksRece(k,:,:),Sr,Sr)'; % 关于y=-x对称
A=reshape( DBlocksRece(k+3*Dnum,:,:),Sr,Sr)';
DBlocksRece(k+5*Dnum,:,:)=A(:,n:-1:1); % 关于y=x对称
DBlocksRece(k+6*Dnum,:,:)=imrotate(reshape(DBlocksRece(k,:,:),Sr,Sr),90); % 逆时针旋转90度
DBlocksRece(k+7*Dnum,:,:)=imrotate(reshape(DBlocksRece(k,:,:),Sr,Sr),270); % 逆时针旋转270度
DBlocks(k,:,:)=Image1((i-1)*Sd+1:i*Sd,(j-1)*Sd+1:j*Sd);
end
end
RandDbest=zeros(Rnum,1)+256^3;
RandDbests=zeros(Rnum,1);
RandDbesto=zeros(Rnum,1);
RandDbestj=zeros(Rnum,1);
for i=1:Rnum
x=reshape(RBlocks(i,:,:),Sr*Sr,1);
meanx=mean(x);
for j=1:Dnum*8
y=reshape(DBlocksRece(j,:,:),Sr*Sr,1);
meany=mean(y);
s=(x-meanx)'*(y-meany)/((y-meany)'*(y-meany));%计算s
o=(meanx-s*meany);%计算o
c=(x-s*y-o)'*(x-s*y-o);%距离
if (RandDbest(i)>c)&(abs(s)<1)
RandDbest(i)=c;
RandDbests(i)=s;
RandDbesto(i)=o;
RandDbestj(i)=j;%可以找到对应变换和D块
end
end
end
%iteration limit
toc
tic
m=8;%解码迭代次数
e=mean(mean(Image1));
Image3=e*ones(imagem,imagen);%解码初始图象
for L=1:m
Image4=blkproc(Image3,[Sd/Sr,Sd/Sr],'mean(mean(x))');
for i=1:imagem/Sr
for j=1:imagen/Sr
m=Sr;n=Sr;
k=(i-1)*imagen/Sr+j;
l=RandDbestj(k);
k1=mod(l-1,Dnum)+1;%第几个D
l1=(l-k1)/Dnum+1;%变换号
%R对应D在Image4的起始点
j1=mod(k1-1,imagen/Sd)+1;
i1=(k1-j1)/(imagen/Sd)+1;
%变换------------------------------------------------------------------------
DBlocksRece(k1,:,:)=Image4((i1-1)*Sr+1:i1*Sr,(j1-1)*Sr+1:j1*Sr);
switch l1-1
case 0
DBlocksRece(l,:,:)=Image4((i1-1)*Sr+1:i1*Sr,(j1-1)*Sr+1:j1*Sr);
case 1
DBlocksRece(l,:,:)=DBlocksRece(k1,m:-1:1,:);
case 2
DBlocksRece(l,:,:)=DBlocksRece(k1,:,n:-1:1);
case 3
DBlocksRece(l,:,:)=DBlocksRece(k1,m:-1:1,n:-1:1);
case 4
DBlocksRece(l,:,:)=reshape(DBlocksRece(k1,:,:),Sr,Sr)';
case 5
DBlocksRece(k1+3*Dnum,:,:)=DBlocksRece(k1,m:-1:1,n:-1:1);
A=reshape( DBlocksRece(k1+3*Dnum,:,:),Sr,Sr)';
DBlocksRece(l,:,:)=A(:,n:-1:1);
case 6
DBlocksRece(l,:,:)=imrotate(reshape(DBlocksRece(k1,:,:),Sr,Sr),90);
case 7
DBlocksRece(l,:,:)=imrotate(reshape(DBlocksRece(k1,:,:),Sr,Sr),270);
end
%变换结束--------------------------------------------------------------------
RBlocks(k,:,:)=RandDbests(k)*DBlocksRece(l,:,:)+RandDbesto(k);
%生成R---------------------------
Image3((i-1)*Sr+1:i*Sr,(j-1)*Sr+1:j*Sr)=reshape(RBlocks(k,:,:),Sr,Sr);%更新迭代图象
end
end
wucha=double(Image1)-Image3;%误差图
Ps1(L)=20*log10(255/(sqrt(mean(mean(wucha.^2)))))
PSNR=psnr(wucha)
figure
imshow(uint8(Image3))
end
toc
figure
wucha=uint8(wucha);
imshow(wucha)
figure
imshow(uint8(Image1)),title('原图');
save('sa.mat')
fangtu(wucha);%%%%分形主函数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
子函数:1:
function b=suoxiao(filename,bili)
a=imread(filename);
a=double(a);
[m,n]=size(a);
i=1;
while i=m/bili
j=1;
while j=n/bili
k=mean(mean(a(bili*(i-1)+1:bili*(i-1)+bili,bili*(j-1)+1:bili*(j-1)+bili)));
b(i,j)=k;
j=j+1;
end
i=i+1;
end
%b=uint8(b);
size(b)
%imshow(b)
子函数2:
%clc
function fangtu(a)
J=a;
%计算灰度图象的直方图数据,a为如象数组
L=256; %灰度级
Ps = zeros(L,1); %统计直方图结果数据
nk=zeros(L,1);
[row,col]=size(a);
n=row*col; %总像素个数
for i = 1:row
for j = 1:col
num = double(a(i,j))+1; %获取像素点灰度级
nk(num) = nk(num)+1; %统计nk
end
end
%计算直方图概率估计
for i=1:L
Ps(i)=nk(i)/n;
end
figure;
subplot(3,1,1);imshow(J),title('误差图');
subplot(3,1,2),plot(nk),title('直方图(nk)');
subplot(3,1,3),plot(Ps),title('直方图(Ps)');
子函数3:
function PSNR=psnr(a)
[m,n]=size(a);
a=uint8(a);
a=double(a);
imagesize=m*n;
MSE=sum(dot(a,a))/ imagesize;
PSNR=10*log10(255^2/MSE);
%%%%%%%%%%%%%%%%%%%%%%
说明:
1、因为本程序时间长,FX中先选择图片的大小
2、编码与解码
3、做误差图和只方图
4:画出每次迭代的解码图象
❷ patchwork算法的psnr值是多少
没有国际标准。 这个不仅和你的算法有关,还和你的压缩率有关。 如果压缩率不同,那么PSNR值大的不一定好... 所以这个东西是不能用30或者40来量化的。
❸ 什么是峰值信噪比(PSNR)及均方误差(MSE)
峰值信噪比(英语:Peak signal-to-noise ratio,常缩写为PSNR)是一个表示信号最大可能功率和影响它的表示精度的破坏性噪声功率的比值的工程术语。由于许多信号都有非常宽的动态范围,峰值信噪比常用对数分贝单位来表示。
均方误差(mean-square error, MSE)是反映估计量与被估计量之间差异程度的一种度量。
峰值信噪比经常用作图像压缩等领域中信号重建质量的测量方法,它常简单地通过均方误差(MSE)进行定义。
(3)psnr压缩扩展阅读:
一、音频信噪比
音频信噪比是指音响设备播放时,正常声音信号强度与噪声信号强度的比值。当信噪比低,小信号输入时噪音严重,在整个音域的声音明显变得浑浊不清,不知发的是什么音,严重影响音质。
信噪比的大小是用有用信号功率(或电压)和噪声功率(或电压)比值的对数来表示的。这样计算出来的单位称为“贝尔”。实用中因为贝尔这个单位太大,所以用它的十分之一做计算单位,称为“分贝”。
二、查询信噪比
网页信噪比查询信噪比(Signal/Noise),原是电声学领域中的一个概念,指声音源产生最大不失真声音信号强度与同时发出噪音强度之间的比率。
在网页优化中同样存在这样的原理,搜索引擎抓取页面,主要抓取除去html标签后的文本内容,这部分内容可以认为是不失真声音信号,而同时产生的那部分html标签内容,可以被认为是噪音。
因此,网页信噪音比,可以这样理解:指网页中的文本内容部分与生成这些文本而产生的html标签内容的比率。声学中,信噪比越高,说明声音信号越清晰,同理,网页信噪比越高,说明页面中纯文本内容相对越多,搜索引擎抓取页面也越容易。
❹ 压缩后的图片与原图片相比有什么不同
用压缩软件将图片压缩,首先来说图片占的容量减少了好多,图片的质量是根据你的压缩比来定的,一般50%以上不会发生什么变化,50%那以下那就可能会发生颜色形状等方面的变化.
❺ 衡量图像的客观标准有MSE,PSNR(峰值信噪比),PSNR多少算是好的图像压缩试验结果
没有国际标准。
这个不仅和你的算法有关,还和你的压缩率有关。
如果压缩率不同,那么PSNR值大的不一定好...
所以这个东西是不能用30或者40来量化的。
❻ PSNR能为负值么
PSNR不能为负值,主要参考一下公式:
峰值信噪比(PSNR),一种评价图像的客观标准。它具有局限性,PSNR是“Peak Signal to Noise Ratio”的缩写。peak的中文意思是顶点。而ratio的意思是比率或比列的。整个意思就是到达噪音比率的顶点信号,psnr一般是用于最大值信号和背景噪音之间的一个工程项目。通常在经过影像压缩之后,输出的影像都会在某种程度与原始影像不同。为了衡量经过处理后的影像品质,我们通常会参考PSNR值来衡量某个处理程序能否令人满意。它是原图像与被处理图像之间的均方误差相对于(2^n-1)^2的对数值(信号最大值的平方,n是每个采样值的比特数),它的单位是dB。 MATLAB用法的公式如下:
PSNR=10*log10((2^n-1)^2/MSE)
❼ 1.在图像压缩中,码率是什么意思
1.图像的码率是单位像素编码所需要的编码长度(压缩后的存储空间);
2.由1知道码率越高,压缩并解码后的图像越清晰;
3.psnr=10*log10((255^2)/(MSE)。
MSE是均方误差:MSE=sqrt(sum(sum((X-Y).^2))/(m*n));
❽ H.264中PSNR参数是什么意思
计算psnr值
峰值信噪比(PSNR),一种评价图像的客观标准