数字信号处理实验报告-二维图像数字信号处理应用实验_第1页
数字信号处理实验报告-二维图像数字信号处理应用实验_第2页
数字信号处理实验报告-二维图像数字信号处理应用实验_第3页
数字信号处理实验报告-二维图像数字信号处理应用实验_第4页
数字信号处理实验报告-二维图像数字信号处理应用实验_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字信号处理实验报告 实验名称:二维图像数字信号处理应用实验学院:信息科学与技术学院系别:通信工程系一、实验目的1.结合二维图像信号处理,直观感受数字信号处理的基本实现过程。2.了解二维图像信号处理的一些基本处理。3.初步了解MATLAB的二维信号处理能力。二、实验原理1.MATLAB进行图像处理的步骤如下所示:

2.图像类别与数据格式有以下方式表示:(1)真彩图像由R、G、B一个三维矩阵(N*M*3)描述,数据可以是浮点型也可以是整型。(2)灰度图像由一个二维矩阵(N*M)描述;利用转换公式,将RGB图像转换为灰度图像的公式为:Gray

=

R*0.299

+

G*0.587

+

B*0.114(3)二值图像0表示黑色,1表示白色,由一个二维矩阵(N*M)描述,矩阵的元素为0或1.3.,MATLAB进行图像处理的函数如下所示:

(1)读取图像函数imread可以从任何Matlab支持的图像文件格式中,以任意位深度读取一幅图像。格式为:X=imread(‘FILENAME.FMT’)(2)图像显示Imshow可以显示真彩、灰度、二值等各种图像。 Imshow(gray):显示灰度图像,gray为一个二维矩阵 Imshow(RGB):显示真彩图像,RGB为一个三维矩阵 Imshow(BW):显示二值图像,BW为一个二维矩阵(3)保存图像imwrite函数:imwrite(I,'文件名.文件格式')文件格式:bmp、jpg、pcx、tif。实验内容1.利用编程实现将真彩图像转换成为灰度图像利用imread读入trees.jpg(注意为uint8格式)。利用转换公式,将RGB图像转换为灰度图像Gray

=

R*0.299

+

G*0.587

+

B*0.114。利用函uint8,将灰度图像的值转换uint8,并进行显示将此灰度图像存储成为trees_gray.jpg文件,程序效果等同于函数rgb2gray()。程序如下所示:(见rgbtogray.m文件)clearall;closeallrgb=imread('trees.jpg');gray_1=rgb2gray(rgb);[x,y,z]=size(rgb);rgb1=double(rgb)gray=zeros(x,y);%灰度处理fori=1:xforj=1:ygray(i,j)=rgb1(i,j,1)*0.299+rgb1(i,j,2)*0.587+rgb1(i,j,3)*0.114;endendgray2=[];gray2=uint8(gray);%显示图像figure(1)imshow(gray2)figure(2)imshow(gray_1)%存储图像imwrite(gray_1,'trees_gray.jpg');imwrite(gray2,'trees_grayself.jpg')得到图像与调用函数生成的图像如下所示可以看出两幅图并无明显差异。利用编程将灰度图像转换成为二值图像利用imread读入trees_gray.jpg,设定阈值,将灰度图像转换二值图像,利用函数logical(),将数值转换logical,并进行显示,将此二值图像存储成为trees_bw.jpg文件。程序效果等同于函数im2bw()程序如下所示:(见test1_2.m文件)clearall;closeallgray=imread('trees_gray.jpg');bw2=im2bw(gray);[x,y]=size(gray);bw=[];fori=1:xforj=1:yifgray(i,j)>128bw(i,j)=1;elsebw(i,j)=0;endendendbw1=[];bw1=logical(bw)figure(1)imshow(bw1)figure(2)imshow(bw2)imwrite(bw1,'trees_bwself.jpg');imwrite(bw2,'trees_bw.jpg');得到图像与调用函数生成的图像如下所示可以看出两幅图没有明显差异。3.在保证将图像的长宽比不变的情况下,将图像缩小原来的一半利用imread读入trees_gray.jpg,利用size函数得到图像的长和宽,利用图像之间的关联性将图像缩小原来的一半,显示缩小后的图像,将此缩小后图像存储成为trees_small.jpg文件。程序如下所示:(见small.m文件)clearall;closeallgray=imread('trees_gray.jpg');gray1=double(gray)[x,y]=size(gray1);gray2=zeros(floor(x/2),floor(y/2));fori=1:floor(x/2)forj=1:floor(y/2)gray2(i,j)=gray(i*2,j*2);endendgray3=uint8(gray2)figure(1)imshow(gray3)imwrite(gray3,'trees_small.jpg');得到缩小图像如下所示4.在保证将图像的长宽比不变的情况下,将图像增大为原来的一倍利用imread读入trees_gray.jpg,利用size函数得到图像的长和宽,利用zeros生成矩阵,矩阵大小为原来两倍,利用图像之间的相关性将原来图像数据写入新生成的矩阵中,显示放大后的图像,将此放大后图像存储成为trees_big.jpg文件。程序如下所示:(见big.m文件)clearall;closeallgray=imread('trees_gray.jpg');gray1=double(gray)[x,y]=size(gray1);gray2=zeros(x*2,y*2);%将可以直接得到的点进行赋值fori=1:xforj=1:ygray2(i*2,j*2)=gray1(i,j);endend%对第一行和第一列进行赋值fori=1:2*xforj=1:2*ygray2(i,1)=gray2(i,2);gray2(1,j)=gray2(2,j);endend%横向插值fori=3:2:(2*x-1)forj=1:2:(2*y-1)gray2(i,j)=(gray2(i-1,j)+gray2(i+1,j))/2;endend%纵向插值fori=1:x*2forj=3:2:(2*y-1)gray2(i,j)=(gray2(i,j-1)+gray2(i,j+1))/2;endendgray3=uint8(gray2);figure(1)imshow(gray3)imwrite(gray3,'trees_big.jpg');得到图像如下所示5.利用背景差分法实现图像的运动目标检测,并绘制出运动目标的二值图像具体步骤:分别读入car00.jpg和car11.jpg图像;将两幅图像转换成为灰度图(3)利用背景差分法实现目标检测(取绝对值,函数abs)(4)设定阈值(自行设定)将相减后的图片转换成为二值图像,识别目标。程序如下所示:(见yundongmubiao.m文件)clearall;closeallcar0=imread('car00.jpg');car1=imread('car11.jpg');gray_0=rgb2gray(car0);gray_1=rgb2gray(car1);gray0=double(gray_0);gray1=double(gray_1);[x,y]=size(gray0);d=zeros(x,y);fori=1:xforj=1:yifabs(gray0(i,j)-gray1(i,j))>50d(i,j)=0;elsed(i,j)=1;endendendfigure(1)imshow(d)imwrite(d,'mubiao.jpg');源图片如下所示得到运动目标图像如下所示利用差分法实现图像的边缘检测具体步骤:(1)读入二值图像“太极.jpg”(1)进行X

轴方向的差分运算(注意取绝对值,abs),绘制出X

轴方向差分后的二值图像(3)进行Y

轴方向的差分运算(注意取绝对值,abs),绘制出Y

轴方向差分后的二值图像(4)将X

轴方向差分后的二值图像和Y

轴方向差分后的二值图像相加得到检测后的边缘图像程序如下所示:(见bianyuanjiance.m文件)clearall;closealltaiji=imread('太极.jpg');taiji_1=double(taiji);[x,y,z]=size(taiji);taiji1=zeros(x,y)%转化为灰色图像fori=1:xforj=1:ytaiji1(i,j)=taiji_1(i,j,1)*0.299+taiji_1(i,j,2)*0.587+taiji_1(i,j,3)*0.114;endendhengxiang=zeros(x,y);zongxiang=zeros(x,y);sum=zeros(x,y);fori=1:x-1forj=1:y-1ifabs(taiji1(i+1,j)-taiji1(i,j))>50hengxiang(i,j)=1;endendendfori=1:x-1forj=1:y-1ifabs(taiji1(i,j+1)-taiji1(i,j))>50zongxiang(i,j)=1;endendendsum=hengxiang+zongxiang;fori=1:xforj=1:yifsum(i,j)~=0sum(i,j)=1;%避免2的出现endendendfigure(1)imshow(hengxiang)figure(2)imshow(zongxiang)figure(3)imshow(sum)imwrite(hengxiang,'横向差分.jpg');imwrite(zongxiang,'纵向差分.jpg');imwrite(sum,'边缘检测.jpg');源图片如下所示横向差分检测及纵向差分检测的值如下所示得到边缘检测图像如下所示实验总结Matlab进行图像处理需要进行读取文件、格式转换、保存图形、存储图像的步骤。图像文件在matlab中的存储格式有真彩图像、灰度图像以及黑白图像。其中,真彩图像所占的内存最大。在进行图像处理时通常先将图像转化为灰色图像,同时把矩阵值转化为double型,输出时将矩阵值转化为uint8型。实验一中是利用Gray

=

R*0.299

+

G*0.587

+

B*0.114公式将真彩图像转化为灰度图像,与用rgb2gray()函数生成的图像相比较可看出两者实现功能相同。实验二中将灰色图像转化为二值图像时,将阀值设为128.灰度值大于128的点变为白色,灰度值小于128的点变为黑色。实验三中

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论