数字图像处理03-数学基础ppt课件_第1页
数字图像处理03-数学基础ppt课件_第2页
数字图像处理03-数学基础ppt课件_第3页
数字图像处理03-数学基础ppt课件_第4页
数字图像处理03-数学基础ppt课件_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

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

文档简介

.,数字图像处理DigitalImageProcessing,第二讲图像的数字化,温静wjing,.,编程方法,三种形式选一C+的CDIB类方法OpenCV库结合C(或C+)Matlab,.,(1)CDIB类方法,图像处理的功能封装为CDIB类C(或C+)的程序结构MFC的程序框架(用向导生成框架)用Windows的程序框架图像处理利用类的对象,通过成员函数实现例如:CDibm_pDibInit;if(!m_pDibInit-Read(,.,(1)CDib类方法,.,(1)CDib类方法(续),CDib类:完成bmp的操作定义对象CDibmydib;(包括头文件CDib.h)读取像素的方法:mydib.GetPixel(20,40);读取(20,40)坐标处的像素颜色值,返回颜色数值写像素的方法:mydib.WritePixel(35,49,color);将(35,49)坐标处的像素置为当前color的颜色值。,.,(1)图像读入方法(3),利用MFC的打开文件对话框实现打开图像文件的代码如下:CDibmybmp;CSizesizeimage;voidCImageprocessView:OnOpen()/定义CFileDialog类的对象CFileDialogFileDlg(TRUE,_T(*.bmp),OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,imagefiles(*.bmp)|*.bmp|AVIfiles(*.avi)|*.avi|AllFiles(*.*)|*.*|,NULL);,.,(1)图像读入方法(3),chartitle=OpenImage;FileDlg.m_ofn.lpstrTitle=title;CFilefile;if(FileDlg.DoModal()=IDOK)if(!file.Open(FileDlg.GetPathName(),CFile:modeRead)AfxMessageBox(cannotopenthefile);return;,.,(2)图像显示方法(3),CDib类的方法在MFC的View类中加入OnDraw成员函数,利用该成员函数在View中显示图像,假设mybmp是图像类的对象,将屏幕设备坐标系的m_origin位置作为图像原点,绘制尺度为sizeimage的图像为:CDibmybmp;CPointm_origin;CSizesizeimage(100,200);mybmp.Draw(pDC,m_origin,sizeimage);/在的窗口内显示图像,.,(1)图像读入方法(3),if(!mybmp.Read(,.,(2)OpenCV库结合C(或C+),Intel开源计算机视觉库OpenCV图像处理结构分析运动分析与对象跟踪模式识别照相机定标和三维重建OpenCV是Intel开源计算机视觉库。它由一系列C函数和少量C+类构成,实现了图像处理和计算机视觉方面的很多通用算法,.,OpenCV网址,/,.,OpenCV参考手册,CxCore中文参考手册Cv中文参考手册CvAux中文参考手册HighGUI中文参考手册,.,OpenCV图像处理基础,1、加入头文件#includecv.h#includehighgui.h“2、使用IplImage*img1;img1=cvLoadImage(path,1);img11=cvLoadImage(path,0);,.,(1)图像读入方法(2),OpenCV方法IplImage*img=0;img=cvLoadImage(lena.jpg,1);/异常判断if(!img)printf(Couldnotloadimagefile:%sn,filename);exit(0);,.,(2)图像显示方法(2),OpenCV使用cvShowImage函数显示图像,其调用方法如下:cvShowImage(Image,pImg);其中pImg表示已经定义的图像指针,Image为显示窗口的名称。例如:IplImage*pImg;/声明IplImage指针/读入图像pImg=cvLoadImage(lena.jpg,1);cvNamedWindow(Image,1);/创建窗口cvShowImage(Image,pImg);/显示图像cvWaitKey(0);/等待按键cvDestroyWindow(Image);/销毁窗口cvReleaseImage(/释放图像,.,(3)matlab处理方法,M文件编写%读取图像;I=imread(sag.bmp);figure(1);imshow(I);%将图像转换为灰度图像J=rgb2gray(I);figure(2);imshow(J);%存盘%imwrite(J,e:/photo2.bmp);,.,(2)Matlab方法,imread的使用方法imread:读取matalab的真彩图像图像格式转换函数:gray2ind将灰度图像转换成索引图像grayslice通过设定阈值将灰度图像转换成索引色图像im2bw通过设定亮度阈值将真彩色、索引色、灰度图转换成二值图ind2gray将索引色图像转换成灰度图像ind2rgb将索引色图像转换成真彩色图像mat2gray将一个数据矩阵转换成一副灰度图rgb2gray将一副真彩色图像转换成灰度图像;rgb2ind将真彩色图像转换成索引色图像,.,(1)图像读入方法(1),Matlab方法用Matlab方法读入图像在上章已经阐述:Iimread(x.bmp);或Iimread(x,bmp);Matlab读入图像的类型包括强度图像(即灰度图像)、二进制图像、索引图像和RGB图像。,.,(2)图像显示方法(1),(1)Matlab方法例如:Iimread(x.bmp);imshow(I)(2)OpenCV方法,.,(3)彩色图像的灰度化方法,彩色图像的灰度化处理方法如下:对于彩色图像中的任意一个像素,如果其RGB的三个分量分别为R、G和B,该图像像素的灰度Gray值一般用下面公式进行计算:,.,(3)彩色图像的灰度化方法,for(intx=0;xsizeimage.cx;x+)for(inty=0;y1时,输出图像对比度增大;当01时,输出图像对比度减小;当0时,图像亮区域变暗,暗区域变亮,即图像求补。,.,当图像的曝光不足或过度时,图像灰度值就会限制在一个较小的范围内,这时在显示器上看到的将是一个模糊的图像。利用线性点运算对图像进行处理,就能增强图像的灰度层次,改善图像的视觉效果。,.,图3-2cameraman图像经过不同的线性点运算后的结果,.,3.7.2非线性点运算分析,.,.,3.7.3直方图修正分析,1点运算对直方图的影响下面通过一个示例来说明点运算对直方图的影响。【例3-3】cameraman图像f(x)=1.25x+45的直方图变化情况。,.,直方图均衡化又称为直方图平坦化。直方图均衡化的基本思想是将原始图像的不均衡的直方图变化为均匀分布的形式。即将输入图像转换为在每一灰度级上都有相同的像素点数(即输出的直方图是平坦的,其分布为均匀分布)。直方图均衡化的结果扩展了像元取值的动态范围,从而达到增强图像整体对比度的效果。直方图均衡化参考以下示例。,2直方图均衡化,.,3.8代数运算,3.8.1代数运算的意义3.8.2加法运算3.8.3减法运算3.8.4乘法运算3.8.5除法运算,.,3.8.1代数运算的意义,在数字图像处理技术中,代数运算具有非常广泛的应用和重要的意义。图像相加也可用于将一幅图像的内容叠加到另一幅图像上,从而实现二次曝光(double-exposure)。图像相减运算可用于消除一幅图像中所不需要的加性图案,加性图案可能是缓慢变化的背景阴影、周期性噪声,或在图像上每一像素点均已知的附加污染等。减法运算还可用于检测同一场景的两幅图像之间的变化。,.,在数字图像处理中,虽然乘、除运算应用得相对少一些,但它们也具有很重要的应用。例如,在获取数字化图像过程中,图像数字化设备对一幅图像各点的敏感程度不可能完全相同,乘、除运算可用于纠正这方面的不利影响。此外,乘法运算在获取图像的局部图案时发挥作用,用一幅掩膜图像(maskimage)乘以某一图像可遮住该图像中的某些部分,使其仅保留图像中感兴趣的部分,而除法运算还可以产生对颜色和多光谱图像分析十分重要的比率图像。,.,3.8.2加法运算,加法运算通常用于平均值降噪等多种场合。图像相加一般用于对同一场景的多幅图像求平均,以便有效地降低加性噪声。若有一静止场景的图像被加性随机噪声污染,且已获得由幅该静止场景图像组成的图像集合,则图像可表示为,.,S(x,y)为静止场景的理想图像,Ni(x,y)表示由于胶片的颗粒或数字化系统中的电子噪声所引起的噪声图像。集合中的每幅图像被不同的噪声图像所污染。设P(x,y)表示功率信噪比,对于图像中的任意像素点,则P(x,y)可定义为,.,.,.,.,同时在MATLAB中提供函数imadd实现图像的加法运算,其语法格式为:z=imadd(A,B)其中A为图像,若B是一幅图像,则z为两个图像的求和,此时要求B的大小必须和A相等;若B是一个标量(双精度),则z表示对图像A整体加上某个值,即图像的亮度调整。,.,(a)加操作,IMAGE1,IMAGE2,IMAGE1+IMAGE2,.,相加,M=1,M=2,M=4,M=16,Addition:averagingfornoisereduction,.,.,3.8.3减法运算,图像相减常用于检测变化及运动的物体,图像相减运算又称为图像差分运算。差分方法可以分为可控制环境下的简单差分方法和基于背景模型的差分方法。,.,在MATLAB中,图像的减法用imsubtract和imabsdiff函数可以完成,其语法格式为:z=imsubtract(a,b);%差值结果小于0的赋值为0;a、b大小相等。z=imabsdiff(a,b)%差值结果取绝对值,1消除背景影响,.,所谓差影法,实际上就是图像的减法运算(又称减影技术),是指将同一景物在不同时间拍摄的图像或同一景物在不同波段的图像相减。差值图像提供了图像间的差异信息,能用于指导动态监测、运动目标的检测和跟踪、图像背景的消除及目标识别等。,2差影法,.,.,(b)减操作,IMAGE1,IMAGE2,IMAGE1-IMAGE2,0,0,.,图像减操作实例,.,差影法进行混合图像的分离,(a)混合图像,(b)被减图像,(c)差影图像,.,3求梯度幅度,.,.,3.8.4乘法运算,乘法运算可用来遮住图像的某些部分,其典型运用是用于获得掩膜图像。对于需要保留下来的区域,掩膜图像的值置为1,而在需要被抑制掉的区域,掩膜图像的值置为0,原图像乘上掩膜图像,可抹去图像的某些部分,即使该部分为0。然后可利用一个互补的掩膜来抹去第二幅图像中的另一些区域,而这些区域在第一幅图像中被完整地保留了下来。,.,一般情况下,利用计算机图像处理软件生成掩膜图像的步骤如下:(1)新建一个与原始图像大小相同的图层,图层文件一般保存为二值图像文件;(2)用户在新建图层上人工勾绘出所需要保留的区域,区域的确定也可以由其他二值图像文件导入或由计算机图形文件(矢量)经转换生成;,.,(3)确定局部区域后,将整个图层保存为二值图像,选定区域内的像素点值为1,非选定区域像素点值为0;(4)将原始图像与(3)形成的二值图像进行乘法运算,即可将原始图像选定区域外像素点的灰度值置0,而选定区域内像素的灰度值保持不变,得到与原始图像分离的局部图像,即掩膜图像。,.,(c)乘操作,-100,0,0,0,10000,0,0,0,10000,0,0,0,0,0,0,-100,IMAGE1,IMAGE2,IMAGE1*IMAGE2,0,0,.,图像相乘实例,.,3.8.5除法运算,图像除法运算可以用来校正由于照明或传感器的非均匀性造成的图像灰度阴影,除法运算还被用于产生比率图像,这对于多光谱图像的分析是十分有用的。利用不同时间段图像的除法得到的比率图像常常可以用来对图像进行变化检测。,.,(d)除操作,-100,0,0,0,1,0,0,0,1,0,0,0,0,0,0,-100,IMAGE1,IMAGE2,IMAGE1/IMAGE2,0,0,.,图像相除实例,从这个处理结果可以明显识别出地貌类型,.,Matlab,相除,.,Matlab,相除,.,(2)逻辑操作,AND,OR和补运算,表示为:AND:pANDqOR:pORqNOT:NOTq逻辑运算前的预处理如果是灰度图像,先要进行二值化处理如果是彩色图像,要经过灰度化及二值化处理,.,彩色图像的灰度化处理方法,RGB图像转灰度图像:Gray=R*0.299+G*0.587+B*0.114例如:intgray=color.rgbRed*0.299+color.rgbGreen*0.587+color.rgbBlue*0.114;color.rgbBlue=(unsignedchar)gray;color.rgbGreen=(unsignedchar)gray;color.rgbRed=(unsignedchar)gray;mybmp.WritePixel(x,y,color);,.,97,二值化处理(Gray-levelslicing),突出一定范围的信息,.,98,.,if(graythresh)gray=0;gray=0;gray=0;elsegray=255;gray=255;gray=255;,.,OR运算,IMAGE1,IMAGE2,1OR2,.,AND运算,IMAGE1,IMAGE2,1AND2,.,补运算,IMAGE1,NOTIMAGE1,.,3.9特定区域处理,2.9.1指定感兴趣区域2.9.2特定区域滤波2.9.3特定区域填充,.,3.9.1指定感兴趣区域,MATLAB中对特定区域的处理是通过二值掩模来实现的。MATLAB图像处理工具箱提供了3个函数用于生成二值掩模,从而选择特定区域,下面分别介绍。,.,roipoly函数用于选择图像中的多边形区域。roipoly函数返回二值图像BW,选中区域的像素值为1,其余部分的值为0。这个二值图像可以作为掩模,通过与原图的运算选择目标或背景。其语法格式如下:BW=roipoly(I,c,r)BW=roipoly(I)BW=roipoly(x,y,I,xi,yi)BW,xi,yi=roipoly(.)x,y,BW,xi,yi=roipoly(.),(1)roipoly,.,MATLAB图像处理工具箱提供了roicolor函数可以对RGB图像和灰度图像实现按灰度或亮度选择区域,其语法格式为:BW=roicolor(A,low,high)BW=roicolor(A,v)其中BW=roicolor(A,low,high)表示按指定的灰度范围分割图像,返回二值掩模BW,lowhigh为所要选择区域的灰度范围。如果low大于high,则返回为空矩阵;BW=roicolor(A,v)是按向量v中指定的灰度值为选择区域。,(2)roicolor,.,该函数可以转化指定的多边形区域为二值掩模。其语法格式为:BW=poly2mask(x,y,m,n)x和y表示两个向量,指定一个多边形区域,BW的大小为mn,在BW中指定区域内的像素为1,指定区域外的像素为0。如果x和y指定的区域不封闭,则poly2mask自动封闭这个多边形。,(3)poly2mask,.,3.9.2特定区域滤波,MATLAB图像处理工具箱中提供了一个区域滤波函数roifilt2,其语法格式为:J=roifilt2(h,I,BW)J=roifilt2(h,I,BW,fun)J=roifilt2(h,I,BW,fun

温馨提示

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

评论

0/150

提交评论