本文详细介绍了如何使用MATLAB进行读写YUV文件,并给出了详细的代码及其分析。
示例程序如下:
close all;
clear;
fid1=fopen('D:\HM-14.0-ROI\bin\vc10\Win32\Release\Result\背景建模Result\hall_cif_352x288_300\QP=22\bgf_rec.yuv','rb');
fid2=fopen('D:\HM-14.0-ROI\bin\vc10\Win32\Release\Result\背景建模Result\hall_cif_352x288_300\QP=22\cal_rec.yuv','rb');
outfid=fopen('D:\HM-14.0-ROI\bin\vc10\Win32\Release\Result\背景建模Result\hall_cif_352x288_300\QP=22\com_rec.yuv','wb');
%fseek(fid,352*288*1.5*10,'bof');
fseek(fid1,0,'bof');
fseek(fid2,0,'bof');
Y_bgf=fread(fid1,[352,288],'uint8');
for j=1:300
Y_cal=fread(fid2,[352,288],'uint8');
Cb_cal=fread(fid2,[352/2,288/2],'uint8');
Cr_cal=fread(fid2,[352/2,288/2],'uint8');
for x=1:352
for y=1:288
if Y_cal(x,y)<5
Y_cal(x,y)=Y_bgf(x,y);
end;
end;
end;
fwrite(outfid,Y_cal,'uint8');
fwrite(outfid,Cb_cal,'uint8');
fwrite(outfid,Cr_cal,'uint8');
end;
fclose(fid1);
fclose(fid2);
fclose(outfid);
下图是背景建模得到的背景:
下图是差分计算得到的差分图:
下图采用上面代码得到的合成图:
最后给出原图如下:
从实验结果可以看出,合成图与原图在主观上基本没有差别。
原文:http://blog.csdn.net/frd2009041510/article/details/42154151