数字视频实验一、二Word格式文档下载.doc
- 文档编号:14567153
- 上传时间:2022-10-23
- 格式:DOC
- 页数:9
- 大小:1.36MB
数字视频实验一、二Word格式文档下载.doc
《数字视频实验一、二Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《数字视频实验一、二Word格式文档下载.doc(9页珍藏版)》请在冰豆网上搜索。
½
Î
Ä
¼
þ
Ð
Å
Ï
¢
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'
H=144;
%¸
ß
W=176;
%¿
í
case'
cif'
H=288;
W=352;
%¿
otherwise
H=480;
%¸
W=720;
forframeNum=1:
frameNumMax;
%¶
Ú
Ý
[Y,U,V]=yuv_import(filename,[W,H],1,frameNum);
tmp=Y{1};
%Ï
Ô
¾
µ
Æ
¬
img1=zeros(H+H/2,W);
img1(1:
H,:
)=Y{1};
img1(H+1:
end,1:
W/2)=V{1};
end,W/2+1:
end)=U{1};
subplot(121),imshow(uint8(img1));
pause(1/30);
%Ô
£
Ò
Ó
¶
×
°
Ø
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);
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],'
U{i}=UVd'
UVd=fread(fid,[dims
(1)/2dims
(2)/2],'
V{i}=UVd'
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;
if(FileName(FileLength-3:
wide=176;
high=144;
File=fopen(FileName);
%打开文件
framenumber=input('
读取第几帧:
%从第framenumber帧开始读取数据
fseek(File,(framenumber-1)*high*wide*3/2,'
bof'
%读取相应分量数据
Y=double(fread(File,[wide,high],'
))'
U=double(fread(File,[wide/2,high/2],'
V=double(fread(File,[wide/2,high/2],'
%显示YUV各图像分量
figure
(1);
subplot(2,2,1)
imshow(uint8(Y));
title(['
第'
num2str(framenumber)'
帧Y分量图'
]);
subplot(2,2,2)
imshow(uint8(U));
帧U分量图'
subplot(2,2,3)
imshow(uint8(V));
帧V分量图'
实验结果:
(二)YUV与RGB互相转换
%YUV格式与RGB格式视频相互转换程序
functionrgb
*.jqcif'
picture=zeros(1.5*high,wide);
%将YUV三分量图像拼接成一幅图片
picture(1:
high,1:
wide)=Y;
picture(high+1:
1.5*high,1:
wide/2)=U;
1.5*high,wide/2+1:
wide)=V;
Y1(1:
high/2,1:
wide/2)=Y(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;
2)=G;
3)=B;
RGB=uint8(cat(3,R,G,B));
%图像结果显示
subplot(1,2,1);
imshow(uint8(picture));
帧YUV格式图像各分量图'
subplot(1,2,2);
imshow(RGB);
帧转换为RGB图像显示'
四、注意事项和要求
预先复习预习MATLAB图像编程知识,复习视频文件格式和各种格式转换原理。
五、参考书目
数字视频技术教材。
实验二:
序列图像的运动估计实验学时安排:
课内实验
进一步熟悉MATLAB软件开发环境。
学习在MATLAB编程环境下实现对标准序列图像的前后两帧图像间进行运动估计,并统计得到的运动矢量。
利用MATLAB图像处理工具箱中的函数,在MATLAB编程环境下,用穷尽块匹配算法实现序列图像的帧间运动估计。
将标准序列图像的前后两帧图像文件存入计算机,运行MATLAB集成开发环境。
编程实现序列图像的整象素精度穷尽块匹配算法。
clear;
closeall;
clc;
%装入图像
A=imread('
\DocumentsandSettings\Administrator\桌面\1.bmp'
%读入图像
B=imread('
\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;
N:
height-N+1
forj=1:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字视频 实验