版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数字图像处理数字图像处理Digital Image Processing第二讲 图像的数字化温 静Page 2三种形式选一 C+的CDIB类方法 OpenCV库结合C(或C+) MatlabPage 3 图像处理的功能封装为CDIB类 C(或C+)的程序结构 MFC的程序框架(用向导生成框架) 用Windows的程序框架 图像处理利用类的对象,通过成员函数实现 例如: CDib m_pDibInit; if(!m_pDibInit-Read(&file)AfxMessageBox(cannot read the file);return;Page 4Page 5(续)(续)CDib类:
2、完成bmp的操作定义对象 CDib mydib; (包括头文件CDib.h) 读取像素的方法: mydib.GetPixel(20,40); 读取(20,40)坐标处的像素颜色值,返回颜色数值写像素的方法: mydib.WritePixel(35,49,color); 将(35,49)坐标处的像素置为当前color的颜色值。 Page 6 利用MFC的打开文件对话框实现打开图像文件的代码如下:CDib mybmp;CSize sizeimage;void CImageprocessView:OnOpen() /定义CFileDialog类的对象 CFileDialog FileDlg(TRUE
3、, _T(*.bmp), ,OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,image files (*.bmp) |*.bmp|AVI files (*.avi) |*.avi|All Files (*.*)|*.*|,NULL); Page 7char title= Open Image;FileDlg.m_ofn.lpstrTitle= title;CFile file ;if( FileDlg.DoModal() = IDOK ) if(!file.Open(FileDlg.GetPathName(), CFile:modeRe
4、ad)AfxMessageBox(cannot open the file);return; Page 8CDib类的方法 在MFC的View类中加入OnDraw成员函数,利用该成员函数在View中显示图像,假设mybmp是图像类的对象,将屏幕设备坐标系的m_origin位置作为图像原点,绘制尺度为sizeimage的图像为:CDib mybmp; CPoint m_origin; CSize sizeimage(100,200);mybmp.Draw(pDC,m_origin,sizeimage); /在的窗口内显示图像Page 9if(!mybmp.Read(&file)AfxMe
5、ssageBox(cannot read the file);return;if (mybmp.m_lpBMIH-biCompression != BI_RGB)AfxMessageBox(Can not read compressed file.);return ;/取得图像的尺度sizeimage=mybmp.GetDimensions();Page 10Intel 开源计算机视觉库OpenCV图像处理 结构分析 运动分析与对象跟踪 模式识别 照相机定标和三维重建OpenCV是Intel开源计算机视觉库。它由一系列 C 函数和少量 C+ 类构成,实现了图像处理和计算机视觉方面的很多通用算法
6、Page 11/http:/ 12 CxCore中文参考手册 Cv中文参考手册 CvAux中文参考手册 HighGUI中文参考手册 Page 131、加入头文件#include cv.h#include highgui.h“2、使用 IplImage *img1; img1=cvLoadImage(path,1);img11=cvLoadImage(path,0);Page 14 OpenCV方法IplImage* img = 0;img=cvLoadImage(lena.jpg,1); /异常判断if(!img) printf(Could not load i
7、mage file: %sn, filename); exit(0); Page 15OpenCV使用cvShowImage函数显示图像,其调用方法如下:cvShowImage( Image, pImg ); 其中pImg表示已经定义的图像指针,Image为显示窗口的名称。例如:IplImage* pImg; /声明IplImage指针 /读入图像 pImg =cvLoadImage(lena.jpg,1); cvNamedWindow( Image, 1 ); /创建窗口 cvShowImage( Image, pImg ); /显示图像 cvWaitKey(0); /等待按键 cvDest
8、royWindow( Image ); /销毁窗口 cvReleaseImage( &pImg ); /释放图像 Page 16M文件编写%读取图像;I=imread(sag.bmp);figure(1);imshow(I);%将图像转换为灰度图像J=rgb2gray(I);figure(2);imshow(J);%存盘%imwrite(J,e:/photo2.bmp); Page 17imread的使用方法 imread:读取matalab的真彩图像 图像格式转换函数: gray2ind 将灰度图像转换成索引图像 grayslice 通过设定阈值将灰度图像转换成索引色图像 im2bw
9、 通过设定亮度阈值将真彩色、索引色、灰度图转换成二值图 ind2gray 将索引色图像转换成灰度图像 ind2rgb 将索引色图像转换成真彩色图像 mat2gray 将一个数据矩阵转换成一副灰度图 rgb2gray 将一副真彩色图像转换成灰度图像; rgb2ind 将真彩色图像转换成索引色图像 Page 18Matlab方法用Matlab方法读入图像在上章已经阐述:Iimread(x.bmp); 或Iimread(x,bmp); Matlab读入图像的类型包括强度图像(即灰度图像)、二进制图像、索引图像和RGB图像。 Page 19 (1)Matlab方法例如:Iimread(x.bmp);
10、imshow(I)(2)OpenCV方法 Page 20彩色图像的灰度化处理方法如下:对于彩色图像中的任意一个像素,如果其RGB的三个分量分别为R、G和B,该图像像素的灰度Gray值一般用下面公式进行计算: 114. 0587. 0299. 0BGRGrayPage 21for(int x = 0; x sizeimage.cx; x+)for(int y = 0; y 11时,输出图像对比度增大;时,输出图像对比度增大;当当0011时,输出图像对比度减小;当时,输出图像对比度减小;当00时,图像亮区域变暗,暗区域变亮,即图像时,图像亮区域变暗,暗区域变亮,即图像求补。求补。Page 58 当
11、图像的曝光不足或过度时,图像灰度当图像的曝光不足或过度时,图像灰度值就会限制在一个较小的范围内,这时在显值就会限制在一个较小的范围内,这时在显示器上看到的将是一个模糊的图像。示器上看到的将是一个模糊的图像。 利用线性点运算对图像进行处理,就能利用线性点运算对图像进行处理,就能增强图像的灰度层次,改善图像的视觉效果。增强图像的灰度层次,改善图像的视觉效果。 Page 59Page 603.7.2 非线性点运算分析非线性点运算分析Page 61Page 623.7.3 直方图修正分析直方图修正分析1点运算对直方图的影响点运算对直方图的影响 下面通过一个示例来说明点运算对直方下面通过一个示例来说明点
12、运算对直方图的影响。图的影响。 【例例3-33-3】cameramancameraman图像图像f (x)=1.25x + f (x)=1.25x + 4545的直方图变化情况。的直方图变化情况。Page 63 直方图均衡化又称为直方图平坦化。直方图均衡化又称为直方图平坦化。 直方图均衡化的基本思想是将原始图像的不均衡直方图均衡化的基本思想是将原始图像的不均衡的直方图变化为均匀分布的形式。的直方图变化为均匀分布的形式。 即将输入图像转换为在每一灰度级上都有相同的即将输入图像转换为在每一灰度级上都有相同的像素点数(即输出的直方图是平坦的,其分布为均像素点数(即输出的直方图是平坦的,其分布为均匀分
13、布)。匀分布)。 直方图均衡化的结果扩展了像元取值的动态范围,直方图均衡化的结果扩展了像元取值的动态范围,从而达到增强图像整体对比度的效果。从而达到增强图像整体对比度的效果。 直方图均衡化参考以下示例。直方图均衡化参考以下示例。2直方图均衡化直方图均衡化Page 643.8 3.8 代数运算代数运算 3.8.1 代数运算的意义 3.8.2 加法运算 3.8.3 减法运算 3.8.4 乘法运算 3.8.5 除法运算 Page 653.8.1 代数运算的意义代数运算的意义 在数字图像处理技术中,代数运算具有非常广在数字图像处理技术中,代数运算具有非常广泛的应用和重要的意义。泛的应用和重要的意义。
14、图像相加也可用于将一幅图像的内容叠加到另图像相加也可用于将一幅图像的内容叠加到另一幅图像上,从而实现二次曝光(一幅图像上,从而实现二次曝光(double-double-exposureexposure)。)。 图像相减运算可用于消除一幅图像中所不需要图像相减运算可用于消除一幅图像中所不需要的加性图案,加性图案可能是缓慢变化的背景阴影、的加性图案,加性图案可能是缓慢变化的背景阴影、周期性噪声,或在图像上每一像素点均已知的附加周期性噪声,或在图像上每一像素点均已知的附加污染等。污染等。 减法运算还可用于检测同一场景的两幅图像之减法运算还可用于检测同一场景的两幅图像之间的变化。间的变化。Page 6
15、6 在数字图像处理中,虽然乘、除运算应用得相在数字图像处理中,虽然乘、除运算应用得相对少一些,但它们也具有很重要的应用。对少一些,但它们也具有很重要的应用。 例如,在获取数字化图像过程中,图像数字化例如,在获取数字化图像过程中,图像数字化设备对一幅图像各点的敏感程度不可能完全相同,设备对一幅图像各点的敏感程度不可能完全相同,乘、除运算可用于纠正这方面的不利影响。乘、除运算可用于纠正这方面的不利影响。 此外,乘法运算在获取图像的局部图案时发挥此外,乘法运算在获取图像的局部图案时发挥作用,用一幅掩膜图像(作用,用一幅掩膜图像(mask imagemask image)乘以某一图)乘以某一图像可遮住
16、该图像中的某些部分,使其仅保留图像中像可遮住该图像中的某些部分,使其仅保留图像中感兴趣的部分,而除法运算还可以产生对颜色和多感兴趣的部分,而除法运算还可以产生对颜色和多光谱图像分析十分重要的比率图像。光谱图像分析十分重要的比率图像。Page 673.8.2 加法运算加法运算 加法运算通常用于平均值降噪等多种场加法运算通常用于平均值降噪等多种场合。图像相加一般用于对同一场景的多幅图合。图像相加一般用于对同一场景的多幅图像求平均,以便有效地降低加性噪声。像求平均,以便有效地降低加性噪声。 若有一静止场景的图像被加性随机噪声若有一静止场景的图像被加性随机噪声污染,且已获得由幅该静止场景图像组成的污染
17、,且已获得由幅该静止场景图像组成的图像集合,则图像可表示为图像集合,则图像可表示为( , )( , )( , )iiD x yS x yN x yPage 68 S S( (x x, ,y y) )为静止场景的理想图像,为静止场景的理想图像,N Ni i( (x x, ,y y) )表示由表示由于胶片的颗粒或数字化系统中的电子噪声所引起的于胶片的颗粒或数字化系统中的电子噪声所引起的噪声图像。噪声图像。 集合中的每幅图像被不同的噪声图像所污染。集合中的每幅图像被不同的噪声图像所污染。 设设P P( (x x, ,y y) )表示功率信噪比,对于图像中的任意表示功率信噪比,对于图像中的任意像素点,
18、则像素点,则P P( (x x, ,y y) )可定义为可定义为22( , )( , )( , )Sx yP x yE Nx yPage 69Page 70Page 71Page 72 同时在同时在MATLABMATLAB中提供函数中提供函数imaddimadd实现图像实现图像的加法运算,其语法格式为:的加法运算,其语法格式为: z=imadd(A, B)z=imadd(A, B) 其中其中A A为图像,若为图像,若B B是一幅图像,则是一幅图像,则z z为两为两个图像的求和,此时要求个图像的求和,此时要求B B的大小必须和的大小必须和A A相相等;若等;若B B是一个标量(双精度),则是一个
19、标量(双精度),则z z表示对表示对图像图像A A整体加上某个值,即图像的亮度调整。整体加上某个值,即图像的亮度调整。Page 730000100010010010000000001000001000001000000001001000002000100100200000000100IMAGE 1IMAGE 2IMAGE 1 + IMAGE 2Page 74相加M=1M=2M=4M=16Addition: averaging for noise reductionPage 75Page 763.8.3 减法运算减法运算 图像相减常用于检测变化及运动的物体,图像相减常用于检测变化及运动的物体,图
20、像相减运算又称为图像差分运算。图像相减运算又称为图像差分运算。 差分方法可以分为可控制环境下的简单差分方法可以分为可控制环境下的简单差分方法和基于背景模型的差分方法。差分方法和基于背景模型的差分方法。 Page 77 在在MATLABMATLAB中,图像的减法用中,图像的减法用imsubtractimsubtract和和imabsdiffimabsdiff函数可以完成,其语法格式为:函数可以完成,其语法格式为:z=imsubtract(a, b);z=imsubtract(a, b);% %差值结果小于差值结果小于0 0的赋值为的赋值为0 0;a a、b b大小相等。大小相等。z=imabsd
21、iff(a, b) %z=imabsdiff(a, b) %差值结果取绝对值差值结果取绝对值1消除背景影响消除背景影响Page 78 所谓差影法,实际上就是图像的减法运算所谓差影法,实际上就是图像的减法运算(又称减影技术),是指将同一景物在不同(又称减影技术),是指将同一景物在不同时间拍摄的图像或同一景物在不同波段的图时间拍摄的图像或同一景物在不同波段的图像相减。像相减。 差值图像提供了图像间的差异信息,能用差值图像提供了图像间的差异信息,能用于指导动态监测、运动目标的检测和跟踪、于指导动态监测、运动目标的检测和跟踪、图像背景的消除及目标识别等。图像背景的消除及目标识别等。2差影法差影法Pag
22、e 79Page 80000010001001001000000000100000100000100000000100-100000001001000000000-100IMAGE 1IMAGE 2IMAGE 1 - IMAGE 200Page 81Page 82差影法进行混合图像的分离差影法进行混合图像的分离(a a)混合图像)混合图像(b b)被减图像)被减图像(c c)差影图像)差影图像Page 833求梯度幅度求梯度幅度Page 84Page 853.8.4 乘法运算乘法运算 乘法运算可用来遮住图像的某些部分,乘法运算可用来遮住图像的某些部分,其典型运用是用于获得掩膜图像。其典型运用是
23、用于获得掩膜图像。 对于需要保留下来的区域,掩膜图像的对于需要保留下来的区域,掩膜图像的值置为值置为1 1,而在需要被抑制掉的区域,掩膜图,而在需要被抑制掉的区域,掩膜图像的值置为像的值置为0 0,原图像乘上掩膜图像,可抹去,原图像乘上掩膜图像,可抹去图像的某些部分,即使该部分为图像的某些部分,即使该部分为0 0。 然后可利用一个互补的掩膜来抹去第二然后可利用一个互补的掩膜来抹去第二幅图像中的另一些区域,而这些区域在第一幅图像中的另一些区域,而这些区域在第一幅图像中被完整地保留了下来。幅图像中被完整地保留了下来。 Page 86 一般情况下,利用计算机图像处理软件一般情况下,利用计算机图像处理
24、软件生成掩膜图像的步骤如下:生成掩膜图像的步骤如下: (1 1)新建一个与原始图像大小相同的图)新建一个与原始图像大小相同的图层,图层文件一般保存为二值图像文件;层,图层文件一般保存为二值图像文件; (2 2)用户在新建图层上人工勾绘出所需)用户在新建图层上人工勾绘出所需要保留的区域,区域的确定也可以由其他二要保留的区域,区域的确定也可以由其他二值图像文件导入或由计算机图形文件(矢量)值图像文件导入或由计算机图形文件(矢量)经转换生成;经转换生成;Page 87 (3 3)确定局部区域后,将整个图层保存)确定局部区域后,将整个图层保存为二值图像,选定区域内的像素点值为为二值图像,选定区域内的像
25、素点值为1 1,非,非选定区域像素点值为选定区域像素点值为0 0; (4 4)将原始图像与()将原始图像与(3 3)形成的二值图)形成的二值图像进行乘法运算,即可将原始图像选定区域像进行乘法运算,即可将原始图像选定区域外像素点的灰度值置外像素点的灰度值置0 0,而选定区域内像素的,而选定区域内像素的灰度值保持不变,得到与原始图像分离的局灰度值保持不变,得到与原始图像分离的局部图像,即掩膜图像。部图像,即掩膜图像。Page 88000010001001001000000000100000100000100000000100-1000001000000010000000000-100IMAGE 1
26、IMAGE 2IMAGE 1 * IMAGE 200255255Page 89Page 903.8.5 除法运算除法运算 图像除法运算可以用来校正由于照明或传图像除法运算可以用来校正由于照明或传感器的非均匀性造成的图像灰度阴影,除法感器的非均匀性造成的图像灰度阴影,除法运算还被用于产生比率图像,这对于多光谱运算还被用于产生比率图像,这对于多光谱图像的分析是十分有用的。图像的分析是十分有用的。 利用不同时间段图像的除法得到的比率图利用不同时间段图像的除法得到的比率图像常常可以用来对图像进行变化检测。像常常可以用来对图像进行变化检测。Page 910000100010010010000000001
27、00000100000100000000100-10000010001000000-100IMAGE 1IMAGE 2IMAGE 1 / IMAGE 200Page 92 从这个处理结果可以明显识别出地貌类型 Page 93Matlab相除Page 94Matlab相除Page 95AND, OR 和补运算, 表示为:AND : p AND qOR : p OR qNOT : NOT q 逻辑运算前的预处理 如果是灰度图像,先要进行处理 如果是彩色图像,要经过处理Page 96RGB图像转灰度图像: Gray = R*0.299 + G*0.587 + B*0.114例如: int gray
28、= color.rgbRed*0.299 + color.rgbGreen*0.587 + color.rgbBlue*0.114;color.rgbBlue = (unsigned char)gray;color.rgbGreen = (unsigned char)gray;color.rgbRed = (unsigned char)gray;mybmp.WritePixel(x, y,color);Page 9797突出一定范围的信息突出一定范围的信息Page 9898Page 99if( gray thresh) gray = 0; gray = 0; gray = 0;else gra
29、y =255; gray = 255; gray = 255;Page 100IMAGE 1IMAGE 21 OR 20000000002552552552552552552552552552552550255000255002550002552552552550255000255255255255255255255Page 101IMAGE 1IMAGE 21 AND 20000000002552552552552552552552552552552550255000255002550000000000000000000Page 1020000000002552552552552552552
30、552552552552552552552552552550000000IMAGE 1NOT IMAGE 1Page 1033.9 3.9 特定区域处理特定区域处理 2.9.1 指定感兴趣区域 2.9.2 特定区域滤波 2.9.3 特定区域填充 Page 1043.9.1 指定感兴趣区域指定感兴趣区域 MATLAB MATLAB中对特定区域的处理是通过二值中对特定区域的处理是通过二值掩模来实现的。掩模来实现的。 MATLABMATLAB图像处理工具箱提供了图像处理工具箱提供了3 3个函数用个函数用于生成二值掩模,从而选择特定区域,下面于生成二值掩模,从而选择特定区域,下面分别介绍。分别介绍。P
31、age 105 roipoly roipoly函数用于选择图像中的多边形区域。函数用于选择图像中的多边形区域。roipolyroipoly函数返回二值图像函数返回二值图像BWBW,选中区域的像素值,选中区域的像素值为为1 1,其余部分的值为,其余部分的值为0 0。 这个二值图像可以作为掩模,通过与原图的运这个二值图像可以作为掩模,通过与原图的运算选择目标或背景。算选择目标或背景。 其语法格式如下:其语法格式如下:BW= roipoly(I, c, r)BW= roipoly(I, c, r)BW= roipoly(I)BW= roipoly(I)BW= roipoly(x, y, I, xi,
32、 yi)BW= roipoly(x, y, I, xi, yi)BW, xi, yi= roipoly(.)BW, xi, yi= roipoly(.)x, y, BW, xi, yi= roipoly(.)x, y, BW, xi, yi= roipoly(.)Page 106 MATLAB MATLAB图像处理工具箱提供了图像处理工具箱提供了roicolorroicolor函数可函数可以对以对RGBRGB图像和灰度图像实现按灰度或亮度选择区域,图像和灰度图像实现按灰度或亮度选择区域,其语法格式为:其语法格式为:BW= roicolor(A, low, high)BW= roicolor(A
33、, low, high)BW= roicolor(A, v)BW= roicolor(A, v) 其中其中BW= roicolor(A, low, high)BW= roicolor(A, low, high)表示按指定表示按指定的灰度范围分割图像,返回二值掩模的灰度范围分割图像,返回二值掩模BWBW,low low highhigh为所要选择区域的灰度范围。为所要选择区域的灰度范围。 如果如果lowlow大于大于highhigh,则返回为空矩阵;,则返回为空矩阵;BW= BW= roicolor(A, v)roicolor(A, v)是按向量是按向量v v中指定的灰度值为选择中指定的灰度值为
34、选择区域。区域。Page 107 该函数可以转化指定的多边形区域为二值掩模。该函数可以转化指定的多边形区域为二值掩模。 其语法格式为:其语法格式为:BW=poly2mask(x, y, m, n)BW=poly2mask(x, y, m, n) x x和和y y表示两个向量,指定一个多边形区域,表示两个向量,指定一个多边形区域,BWBW的大小为的大小为m m n n,在,在BWBW中指定区域内的像素为中指定区域内的像素为1 1,指定区域外的像素为指定区域外的像素为0 0。 如果如果x x和和y y指定的区域不封闭,则指定的区域不封闭,则poly2maskpoly2mask自自动封闭这个多边形。
35、动封闭这个多边形。 Page 1083.9.2 特定区域滤波特定区域滤波 MATLAB MATLAB图像处理工具箱中提供了一个区域滤波图像处理工具箱中提供了一个区域滤波函数函数roifilt2roifilt2,其语法格式为:,其语法格式为:J= roifilt2(h, I, BW)J= roifilt2(h, I, BW)J= roifilt2(h, I, BW, fun)J= roifilt2(h, I, BW, fun)J= roifilt2(h, I, BW, fun, P1, P2, .)J= roifilt2(h, I, BW, fun, P1, P2, .) 其中其中J= roif
36、ilt2(h, I, BW)J= roifilt2(h, I, BW)为使用滤波器为使用滤波器h h对对图像图像I I中用二值掩模中用二值掩模BWBW选中的区域进行滤波;选中的区域进行滤波;J= J= roifilt2(h, I, BW, fun)roifilt2(h, I, BW, fun)和和J= roifilt2(h, I, J= roifilt2(h, I, BW, fun, P1, P2, .)BW, fun, P1, P2, .)对图像对图像I I中用二值掩模中用二值掩模BWBW选选中的区域作函数运算中的区域作函数运算funfun,其中,其中funfun是描述函数运算是描述函数运算的字符串,参数的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年医疗器械保修与用户满意度调查合同3篇
- 2025版高端商业地产认筹协议正式文本3篇
- 2024年科研设备采购及施工合作协议2篇
- 宝鸡职业技术学院《药学科研写作》2023-2024学年第一学期期末试卷
- 2024年高校科研设施共享合同
- 2025版劳动合同解除与经济补偿及再就业服务协议3篇
- 2024年进出口业务合作伙伴合同
- 话费费用合同范文
- 蚌埠医学院《社会工作专业英语》2023-2024学年第一学期期末试卷
- 蚌埠学院《策划方法学》2023-2024学年第一学期期末试卷
- 陕西西安浐灞生态区管理委员会招聘考试真题2022
- 保安先进班组事迹范文(28篇)
- DRG付费改革理论考核试题题库与答案
- 气动输送管道安装工艺
- 2006年考研英语一真题及答案详细解析
- 改扩建工程施工图设计说明
- 壮族文化的灵魂广西花山岩画
- 新时代职业英语《 通用英语1》教学课件U5
- 概算实施方案
- 物业企业安全生产责任清单参考模板
- 建筑给水钢塑复合管管道工程技术规程
评论
0/150
提交评论