《運動估計作業(yè) MATLAB仿真》由會員分享,可在線閱讀,更多相關(guān)《運動估計作業(yè) MATLAB仿真(6頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 運動是視頻序列的一個主要特點之一運動估計技術(shù)是視頻壓縮領(lǐng)域中最重要、發(fā)展最快的技術(shù)之一,它是提高編碼效率的主要途徑。研究快速有效的運動估計算法一直是視頻編碼領(lǐng)域的熱點問題
運動估計主程序
clear all
mbSize=16;
p=7;
filename='hao.yuv';
fp=fopen(filename,'r');
width=176;
height=144;
i=17;
fseek(fp,i* 1.5 *width*height,'bof');
bufI=fread(fp,width*height,'uchar');
imgI=double((reshap
2、e(bufI,width,height))');
imgI0=uint8((reshape(bufI,width,height))');
Figure1,imshow(imgI0);
title('第10幀');
imgI=double(imgI0);
fseek(fp,0.5*width*height,'cof');
bufP=fread(fp,width*height,'uchar');
imgP0=uint8((reshape(bufP,width,height))');
figure,imshow(imgP0);
title('第35幀');
imgP=do
3、uble(imgP0);
將搜索中心定在搜索框的最左上角點。
搜索中心從左至右,從上至下移位,并計算每一個點,直到計算完搜索框內(nèi)所有點。
比較所有計算的點,最小值點即為最佳匹配點。
全搜索法
[motionVect, computations] = motionEstES(b,a,blocksize,p);
imgComp = motionComp(a, motionVect, blocksize);
c=b-imgComp;
figure(2);
subplot(121);
imshow(uint8(imgComp));
4、
title('全搜索法運動估計得到的第35幀');
subplot(122);
imshow(uint8(c));
title('與第35幀的誤差');
ESpsnr = imgPSNR(b, imgComp, 255);
、
先以中心點為搜索中心,進(jìn)行四周±4點距離搜索,計算9個點,得到最小值點。
將搜索中心移至最小值點,進(jìn)行四周±2點距離搜索,計算9個點,得到最小值點。
將搜索中心移至最小值點,進(jìn)行四周±1
5、點距離搜索,計算9個點,得到最小值點,此最小值點即為最終的搜索結(jié)果作為運動估計的最優(yōu)匹配點。
三步法
[motionVect,computations ] = motionEstTSS(b, a, blocksize, p)
imgComp = motionComp(a, motionVect, blocksize);
c=b-imgComp;
figure(3);
subplot(121);
imshow(uint8(imgComp));
title('三步法運動估計得到的第35幀');
6、 subplot(122);
imshow(uint8(c));
title('與第35幀的誤差');
TSSpsnr = imgPSNR(b, imgComp, 255);
先以中心點為搜索中心,進(jìn)行大鉆石搜索,計算9個點。
如果9個點的最小值點不在大鉆石的中心,則將大鉆石的中心移至該點,重復(fù)大鉆石搜索,直到最小值點處于大鉆石中心為止。
在大鉆石的中心點切換到小鉆石搜索模式,共搜索5個點,其中值最小的點即為最終的搜索結(jié)果作為運動估計的最優(yōu)匹配點。
四步法
[motionVect,computations ] = moti
7、onEst4SS(b, a, blocksize, p)
toc
imgComp = motionComp(a, motionVect, blocksize);
c=b-imgComp;
figure(4);
subplot(121);
imshow(uint8(imgComp));
title('四步法運動估計得到的第35幀');
subplot(122);
imshow(uint8(c));
title('與第35幀的誤差');
SS4psnr = imgPSNR(
8、b, imgComp, 255);
鉆石法
[motionVect,computations ] = motionEstDS(b, a, blocksize, p)
toc
imgComp = motionComp(a, motionVect, blocksize);
c=b-imgComp;
figure(5);
subplot(121);
imshow(uint8(imgComp));
title('鉆石法運動估計得到的第35幀');
subplot(122);
imshow(uint8(c));
title('與第35幀的誤差');
DSpsnr = imgPSNR(b, imgComp, 255);