資源描述:
《預(yù)測圖像編碼和解碼.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、題目:7,對圖象p04-01實施預(yù)測編碼和解碼,并將原圖象與解碼圖象進行方差計算,考察解碼后圖象的視覺效果。預(yù)測模型為:原理:預(yù)測就是根據(jù)過去時刻的樣本序列,運用一種模型,預(yù)測當前的樣本值。預(yù)測編碼是易于實現(xiàn)的,如差分脈沖編碼調(diào)制(DPCM)方法。這種方法中,對每一個像素灰度值,都用先前掃描過的像素灰度值去減,求出它們的差值,此差值稱為預(yù)測誤差,預(yù)測誤差被量化和編碼與傳送。接收端再將此差值與預(yù)測值相加,重建原始圖像像素信號。由于量化和傳送的僅是誤差信號,根據(jù)一般掃描圖像信號在空間及時間鄰域內(nèi)各像素的相關(guān)性,預(yù)測誤差分布更加集中,即熵值比原來圖像小,可用較少的單位像素比特率
2、進行編碼,使得圖像數(shù)據(jù)得以壓縮。DPCM系統(tǒng)的基本系統(tǒng)框圖如下圖所示。在該系統(tǒng)中,為時刻的亮度取樣值。預(yù)測器根據(jù)時刻之前的樣本,,……,對作預(yù)測,得到預(yù)測值。與之間的誤差為:量化器對進行量化得到。編碼器對進行編碼發(fā)送。接收端解碼時的預(yù)測過程與發(fā)送端相同,所用預(yù)測器亦相同。接收端恢復(fù)的輸出信號是的近似值,兩者的誤差是當輸入圖像信號是模擬信號時,“量化”過程中的信息損失是不可避免的。當足夠小時,輸入信號和DPCM系統(tǒng)的輸出信號幾乎一致。其它預(yù)測方法還有以下幾種:(1)前值預(yù)測:用同一行中臨近的前一像素預(yù)測,即(2)一維預(yù)測:用同一行中前面若干像素預(yù)測。(3)二維預(yù)測:
3、用幾行內(nèi)像素預(yù)測。(4)三維預(yù)測:利用相鄰兩幀圖像信號的相關(guān)性預(yù)測。程序為(一):clc;I=imread('lena512.bmp');I2=I;I=double(I);fid=fopen('mydata.dat','w');[m,n]=size(I);J=ones(m,n);J(1:m,1)=I(1:m,1);J(1,1:n)=I(1,1:n);J(1:m,n)=I(1:m,n);J(m,1:n)=I(m,1:n);fork=2:m-1forL=2:n-1J(k,L)=I(k,L)-(I(k,L-1)/2+I(k-1,L)/2);endendJ=round(J);co
4、nt=fwrite(fid,J,'int8');cc=fclose(fid);fid=fopen('mydata.dat','r');I1=fread(fid,cont,'int8');tt=1;forL=1:nfork=1:mI(k,L)=I1(tt);tt=tt+1;endendI=double(I);J=ones(m,n);J(1:m,1)=I(1:m,1);J(1,1:n)=I(1,1:n);J(1:m,n)=I(1:m,n);J(m,1:n)=I(m,1:n);fork=2:m-1forL=2:n-1J(k,L)=I(k,L)+((J(k,L-1))/2+(J(
5、k-1,L))/2);endendcc=fclose(fid);J=uint8(J);subplot(1,2,1),imshow(I2);title('原圖');subplot(1,2,2),imshow(J);title('解碼圖像');fork=1:mforl=1:nA(k,l)=J(k,l)-I2(k,l);endendfork=1:mforl=1:nA(k,l)=A(k,l)*A(k,l);endendb=sum(A(:));s=b/(m*n)%兩幅圖的方差運行結(jié)果為:程序為(二):clc;i1=imread('lena512.bmp');i=double(i1)
6、;[m,n]=size(i);p=zeros(m,n);y=zeros(m,n);y(1:m,1)=i(1:m,1);p(1:m,1)=i(1:m,1);y(1,1:n)=i(1,1:n);p(1,1:n)=i(1,1:n);y(1:m,n)=i(1:m,n);p(1:m,n)=i(1:m,n);p(m,1:n)=i(m,1:n);y(m,1:n)=i(m,1:n);fork=2:m-1;forl=2:n-1;y(k,l)=(i(k,l-1)/2+i(k-1,l)/2);p(k,l)=round(i(k,l)-y(k,l));endendp=round(p);subplo
7、t(3,2,1),imshow(i1);title('原灰度圖像');subplot(3,2,2),imshow(uint8(y),[0256]);title('利用模型預(yù)測后的圖像');subplot(3,2,3),imshow(abs(p),[01]);title('編碼的絕對殘差圖像');j=zeros(m,n);j(1:m,1)=y(1:m,1);j(1,1:n)=y(1,1:n);j(1:m,n)=y(1:m,n);j(m,1:n)=y(m,1:n);fork=2:m-1;forl=2:n-1;j(k,l)=p(k,