當前位置:首頁 » 文件管理 » psnr壓縮

psnr壓縮

發布時間: 2022-08-10 15:16:53

❶ 圖像壓縮 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),一種評價圖像的客觀標准

熱點內容
app什麼情況下找不到伺服器 發布:2025-05-12 15:46:25 瀏覽:713
php跳過if 發布:2025-05-12 15:34:29 瀏覽:466
不定時演算法 發布:2025-05-12 15:30:16 瀏覽:129
c語言延時1ms程序 發布:2025-05-12 15:01:30 瀏覽:163
動物園靈長類動物配置什麼植物 發布:2025-05-12 14:49:59 瀏覽:732
wifi密碼設置什麼好 發布:2025-05-12 14:49:17 瀏覽:147
三位數乘兩位數速演算法 發布:2025-05-12 13:05:48 瀏覽:396
暴風影音緩存在哪裡 發布:2025-05-12 12:42:03 瀏覽:539
access資料庫exe 發布:2025-05-12 12:39:04 瀏覽:627
五開的配置是什麼 發布:2025-05-12 12:36:37 瀏覽:363