数字视频实验一、二.doc

上传人:wj 文档编号:4872386 上传时间:2023-05-07 格式:DOC 页数:9 大小:1.36MB
下载 相关 举报
数字视频实验一、二.doc_第1页
第1页 / 共9页
数字视频实验一、二.doc_第2页
第2页 / 共9页
数字视频实验一、二.doc_第3页
第3页 / 共9页
数字视频实验一、二.doc_第4页
第4页 / 共9页
数字视频实验一、二.doc_第5页
第5页 / 共9页
数字视频实验一、二.doc_第6页
第6页 / 共9页
数字视频实验一、二.doc_第7页
第7页 / 共9页
数字视频实验一、二.doc_第8页
第8页 / 共9页
数字视频实验一、二.doc_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数字视频实验一、二.doc

《数字视频实验一、二.doc》由会员分享,可在线阅读,更多相关《数字视频实验一、二.doc(9页珍藏版)》请在冰点文库上搜索。

数字视频实验一、二.doc

实验一:

读取YUV视频文件学时安排:

2

实验类别:

课内实验

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

一、实验目的和任务

熟悉MATLAB软件开发环境,了解YUV色彩模型,编写MATLAB程序读取YUV格式视频文件及各分量数据。

二、实验原理

利用MATLAB图像处理工具箱中的函数,在MATLAB编程环境下,实现YUV序列图像及各分量数据的读取。

三、实验内容和步骤

1. 运行MATLAB集成开发环境,编写MATLAB程序读取YUV视频文件,对YUV各分量进行提取、观察和比较。

2. 编写RGB和YUV视频文件转换程序

3. 课后撰写实验报告。

(—)读取YUV格式视频并提取分量

1)读取YUV格式文件

程序如下:

%¶ÁÈ¡YUV¸ñʽÎļþÐÅÏ¢

functionYUV_ReadShow(filename,frameNumMax,formatT)

ifnargin==0

frameNumMax=100;

formatT='qcif';%yuv¸ñʽÎļþÀàÐÍ

filename='C:

\DocumentsandSettings\Administrator\×ÀÃæ\akiyo_qcif.yuv';%'foreman.qcif';%YUV¸ñʽÎļþ

end

%³õʼ»¯Ö¡¸ñʽ

switchformatT

case'qcif'

H=144;%¸ß

W=176;%¿í

case'cif'

H=288;%¸ß

W=352;%¿í

otherwise

H=480;%¸ß

W=720;%¿í

end

forframeNum=1:

frameNumMax;

%¶ÁÈ¡YUV¸ñʽÎļþÄÚÈÝ

[Y,U,V]=yuv_import(filename,[W,H],1,frameNum);

tmp=Y{1};

%ÏÔʾYUV¸ñʽµÄͼƬ

img1=zeros(H+H/2,W);

img1(1:

H,:

)=Y{1};

img1(H+1:

end,1:

W/2)=V{1};

img1(H+1:

end,W/2+1:

end)=U{1};

subplot(121),imshow(uint8(img1));

pause(1/30);%ÔÝÍ£ÒÔÏÔʾÊÓƵ¶¯»­

end

%YUV¸ñʽµÄͼƬװÔØ

function[Y,U,V]=yuv_import(filename,dims,numfrm,startfrm)

fid=fopen(filename,'r');

if(fid<0)

error('Filedoesnotexist!

');

end;

Yd=zeros(dims

(1),dims

(2));

UVd=zeros(dims

(1)/2,dims

(2)/2);%UV·ÖÁ¿µÄλÖÃ

frelem=numel(Yd)+2*numel(UVd);%ÊÓƵͼÏñÏÔʾµÄ¿í¶È

if(nargin==4)%gotothestartingframe

fseek(fid,startfrm*frelem,0);

end;

Y=cell(1,numfrm);

U=cell(1,numfrm);

V=cell(1,numfrm);

fori=1:

numfrm

Yd=fread(fid,[dims

(1)dims

(2)],'uint8');

Y{i}=Yd';%תÖÃ

UVd=fread(fid,[dims

(1)/2dims

(2)/2],'uint8');

U{i}=UVd';

UVd=fread(fid,[dims

(1)/2dims

(2)/2],'uint8');

V{i}=UVd';

end;

fclose(fid);

结果如下:

2)分量提取

程序如下:

%读取YUV格式视频程序

functionyuv

[fname,pname]=uigetfile('*.yuv;*.jqcif');%获得文件路径

FileName=fullfile(pname,fname);%选择文件

FileLength=length(FileName);%获取文件名长度

%判断打开的是YUV格式视频还是QCIF格式图片,并设置相应的像素大小

if(FileName(FileLength-2:

1:

FileLength)=='yuv')

wide=176*2;

high=144*2;

end

if(FileName(FileLength-3:

1:

FileLength)=='qcif')

wide=176;

high=144;

end

File=fopen(FileName);%打开文件

framenumber=input('读取第几帧:

');

%从第framenumber帧开始读取数据

fseek(File,(framenumber-1)*high*wide*3/2,'bof');

%读取相应分量数据

Y=double(fread(File,[wide,high],'uint8'))';

U=double(fread(File,[wide/2,high/2],'uint8'))';

V=double(fread(File,[wide/2,high/2],'uint8'))';

%显示YUV各图像分量

figure

(1);

subplot(2,2,1)

imshow(uint8(Y));

title(['第'num2str(framenumber)'帧Y分量图']);

subplot(2,2,2)

imshow(uint8(U));

title(['第'num2str(framenumber)'帧U分量图']);

subplot(2,2,3)

imshow(uint8(V));

title(['第'num2str(framenumber)'帧V分量图']);

实验结果:

(二)YUV与RGB互相转换

程序如下:

%YUV格式与RGB格式视频相互转换程序

functionrgb

[fname,pname]=uigetfile('*.yuv;*.jqcif');%获得文件路径

FileName=fullfile(pname,fname);%选择文件

FileLength=length(FileName);%获取文件名长度

%判断打开的是YUV格式视频还是QCIF格式图片,并设置相应的像素大小

if(FileName(FileLength-2:

1:

FileLength)=='yuv')

wide=176*2;

high=144*2;

end

if(FileName(FileLength-3:

1:

FileLength)=='qcif')

wide=176;

high=144;

end

File=fopen(FileName);%打开文件

picture=zeros(1.5*high,wide);

framenumber=input('读取第几帧:

');

%从第framenumber帧开始读取数据

fseek(File,(framenumber-1)*high*wide*3/2,'bof');

%读取相应分量数据

Y=double(fread(File,[wide,high],'uint8'))';

U=double(fread(File,[wide/2,high/2],'uint8'))';

V=double(fread(File,[wide/2,high/2],'uint8'))';

%将YUV三分量图像拼接成一幅图片

picture(1:

high,1:

wide)=Y;

picture(high+1:

1.5*high,1:

wide/2)=U;

picture(high+1:

1.5*high,wide/2+1:

wide)=V;

Y1(1:

high/2,1:

wide/2)=Y(1:

2:

high,1:

2:

wide);%将Y分量图像缩小一半

%将YUV各分量图像通过公式转换为RGB各分量

R=Y1+1.14*(V-128);

G=Y1-0.39*(U-128)-0.58*(V-128);

B=Y1+2.03*(U-128);

%将R,G,B各分量合成RGB图像

picture1=zeros(high/2,wide/2,3);

picture1(:

:

1)=R;

picture1(:

:

2)=G;

picture1(:

:

3)=B;

RGB=uint8(cat(3,R,G,B));

%图像结果显示

figure

(1);

subplot(1,2,1);

imshow(uint8(picture));

title(['第'num2str(framenumber)'帧YUV格式图像各分量图']);

subplot(1,2,2);

imshow(RGB);

title(['第'num2str(framenumber)'帧转换为RGB图像显示']);

结果如下:

四、注意事项和要求

预先复习预习MATLAB图像编程知识,复习视频文件格式和各种格式转换原理。

五、参考书目

数字视频技术教材。

实验二:

序列图像的运动估计实验学时安排:

2

实验类别:

课内实验

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

一、实验目的和任务

进一步熟悉MATLAB软件开发环境。

学习在MATLAB编程环境下实现对标准序列图像的前后两帧图像间进行运动估计,并统计得到的运动矢量。

二、实验原理

利用MATLAB图像处理工具箱中的函数,在MATLAB编程环境下,用穷尽块匹配算法实现序列图像的帧间运动估计。

三、实验内容和步骤

1. 将标准序列图像的前后两帧图像文件存入计算机,运行MATLAB集成开发环境。

2. 编程实现序列图像的整象素精度穷尽块匹配算法。

3. 课后撰写实验报告。

程序如下:

clear;

closeall;

clc;

%装入图像

A=imread('C:

\DocumentsandSettings\Administrator\桌面\1.bmp');%读入图像

B=imread('C:

\DocumentsandSettings\Administrator\桌面\2.bmp');

f2=rgb2gray(A);%将图像转换成灰度图像

f1=rgb2gray(B);%将图像转换成灰度图像

fp=0;

figure,imshow(f2),title('目标帧');

figure,imshow(f1),title('锚定帧')

N=16;R=16;

height=256;

width=256;

fori=1:

N:

height-N+1

forj=1:

N:

width-N+1

MAD_min=256*N*N;

dy=0;dx=0;

fork=-R:

1:

R,

forl=-R:

1:

R

ifi+k<1

MAD=256*N*N;

elseifi+k>height-N

MAD=256*N*N;

elseifj+l<1

MAD=256*N*N;

elseifj+l>width-N

MAD=256*N*N;

else

MAD=sum(sum(abs(double(f1(i:

i+N-1,j:

j+N-1))-double(f2(i+k:

i+k+N-1,j+l:

j+l+N-1)))));

end

ifMAD

MAD_min=MAD;

dy=k;dx=l;

end;end;end;

fp(i:

i+N-1,j:

j+N-1)=f2(i+dy:

i+dy+N-1,j+dx:

j+dx+N-1);

iblk=floor((i-1)/N+1);jblk=floor((j-1)/N+1);

mvx(iblk,jblk)=dx;

mvy(iblk,jblk)=dy;

end;end;

figure,imshow(uint8(fp)),title('预测帧');

[X,Y]=meshgrid(N/2:

N:

256-N/2);

Y=256-Y;

figure,quiver(X,Y,mvx,mvy),title('整像素精度的运动场');

diff=abs(double(f1)-fp);

figure,imshow(uint8(diff)),title('diff');

PSNR=20*log10(255)+20*log10(256)-10*log10(sum(sum(diff.*diff)));

试验结果如下:

四、注意事项和要求

预习MATLAB图像编程知识,复习序列图像的整象素精度穷尽块匹配算法原理。

五、参考书目

数字视频技术教材。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 节日庆典

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2