




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字图像处理技术课程设计指导书08年版本 其中wetu信息包括位图信息头和颜色表两部分。 表1-1位图文件的结构1.1.1位图文件头位图文件头主要用于识别位图文件。 以下是位图文件头结构的定义typedef structtagBITMAPFILEHEADER/bmfh WORDbfType;3DWORD bfSize;WORD bfReserved1;WORD bfReserved2;DWORD bfOffBits;BITMAPFILEHEADER;其中的bfType值应该是“BM”(0x4d42),标志该文件是位图文件。 bfSize的值是位图文件的大小。 1.1.2位图信息位图信息结构的定义typedef structtagBITMAPINFOBITMAPINFOHEADER bmiHeader;RGBQUAD bmiColors1;BITMAPINFO;可见位图信息也是由两部分组成的位图信息头+颜色表1位图信息头位图信息头包含了单个像素所用字节数以及描述颜色的格式,此外还包括位图的宽度、高度、目标设备的位平面数、图像的压缩格式。 以下是位图信息头结构的定义typedef structtagBITMAPINFOHEADER/bmih DWORDbiSize;LONG biWidth;LONG biHeight;WORD biPlanes;WORD biBitCountDWORD biCompression;DWORD biSizeImage;LONG biXPelsPerMeter;LONG biYPelsPerMeter;DWORD biClrUsed;4DWORD biClrImportant;BITMAPINFOHEADER;下表是对结构体当中各个成员的说明表1-2文件信息头结构说明说明*是需要加以注意的部分,因为它们是我们在进行位图操作时经常参考的变量。 (1)对于每个像素的字节数,分别有以下意义0,用在JPEG格式中。 1,单色图,调色板中含有两种颜色,也就是我们通常说的黑白图片。 4,16色图。 8,256色图,通常说的灰度图。 16,64K图,一般没有调色板,图像数据中每两个字节表示一个像素,5个或6个位表示一个RGB分量。 24,16M真彩色图,一般没有调色板,图像数据中每3个字节表示一个像素,每个字节表示一个RGB分量。 32,4G真彩色,一般没有调色板,每4个字节表示一个像素,相对24位真彩图而言,加入了一个透明度,即RGBA模式。 (2)这个值通常为0,表示使用biBitCount确定的全部颜色,例外是使用的颜色树木小于制定的颜色深度的颜色数目的最大值。 (3)这个值通常为0,表示所有的颜色都是必需的。 2颜色表5颜色表一般是针对16位以下的图像而设置的,对于16位和16位以上的图像,由于其位图像素数据中直接对对应像素的RGB(A)颜色进行描述,因而省却了调色板。 而对于16位一下的图像,由于其位图像素数据中记录的只是调色板索引值,因而需要根据这个索引到调色板去取得相应的RGB(A)颜色。 颜色表的作用就是创建调色板。 下图是带调色板和不带调色板的位图的简单示意图图1-1带调色板的位图和不带调色板的位图之间的区别颜色表是由颜色表项组成的,颜色表项结构的定义如下typedef structtagRGBQUAD/rgbq BYTErgbBlue;BYTE rgbGreen;BYTE rgbRed;BYTE rgbReserved;RGBQUAD;其中需要注意的问题是,RGBQUAD结构中的颜色顺序是BGR,而不是平常的RGB。 1.1.3位图数据最后,在位图文件头、位图信息头、位图颜色表之后,便是位图的主体部分位图数据。 根据不同的位图,位图数据所占据的字节数也是不同的,比如,对于8位位图,每个字节代表了一个像素,对于16位位图,每两个字节代表6了一个像素,对于24位位图,每三个字节代表了一个像素,对于32位位图,每四个字节代表了一个像素。 1.2位图文件读写认识了位图文件的结构以后,对特定位图文件进行读写操作就显得简单了。 下面介绍一个能够方便进行位图读写操作的C+类。 给出该类的使用参考,对于实现代码中的关键部分做出讲解。 1.2.1类的声明class CFG_DIB:public CObjectpublic:/默认构造函数CFG_DIB();/构造函数,根据图象宽和高,以及记录每个象素所需字节数来初始化CFG_DIB(int width,int height,int nBitCounts);virtualCFG_DIB();public:HBITMAP m_hBitmap;LPBYTE m_lpDIBits;/DIB位的起始位置LPBITMAPINFOHEADER m_lpBMPHdr;/BITMAPINFOHEADER信息LPVOID m_lpvColorTable;/颜色表信息HPALETTE m_hPalette;/条调色板private:DWORD m_dwImageSize;/非BITMAPINFOHEADER或BITMAPFILEHEADER的位int m_nColorEntries;/颜色表项的个数/显示参数public:CPoint m_Dest;/目的矩形7域的左上角坐标CSize m_DestSize;/显示矩形的宽度和高度CPoint m_Src;/原矩形左下角坐标CSize m_SrcSize;/原矩形宽度和高度public:void InitDestroy();/初始化变量void ComputePaletteSize(int nBitCounts);/计算调色板大小void ComputeImage();/计算图象大小/从BMP文件中读入DIB信息BOOL ReadFile(CFile*pFile);/从BMP文件中读入DIB信息,与ReadFile不同的是使用CreateSection创建位图位BOOL ReadSection(CFile*pFile,CDC*pDC=NULL);/将DIB写入文件,保存成BMP图片格式BOOL WriteFile(CFile*pFile);/创建新的位图文件,根据参数width,height,nBitCounts分配内存空间BOOL NewFile(int width,int height,int nBitCounts);/关闭位图文件BOOL CloseFile();/显示位图BOOL Display(CDC*pDC);HBITMAP CreateBitmap(CDC*pDC);/用DIB创建DDB HBITMAPCreateSection(CDC*pDC=NULL);/创建位图位数据,即象素数据/如果DIB没有颜色表,可以用逻辑调色板BOOL SetLogPalette(CDC*pDC);/如果DIB有颜色表,可以创建系统调色板8BOOL SetWinPalette();/把DIB对象的逻辑调色板选进设备环境里,然后实现调色板UINT UseLogPalette(CDC*pDC);/得到BitmapInfoHeader的大小,包含颜色表数据int GetHeaderSize()return sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*m_nColorEntries;/得到图像的高度int GetHeight()if(m_lpBMPHdr=NULL)return0;return m_lpBMPHdr-biHeight;/得到图像的宽度int GetWidth()if(m_lpBMPHdr=NULL)return0;return m_lpBMPHdr-biWidth;/得到图像的大小int GetImageSize()return m_dwImageSize;long GetLineBit();/得到一行的象素数;1.2.2位图的读取CFG_DIB提供了两个从位图文件读取位图数据的方法ReadFile和ReadSection,二者不同之处,前者使用动态分配内存的方法初始化存储位位图数据的指针,后者则使用API函数,根据位图信息初始化存储位图数据的指针。 方法1m_lpDIBits=(LPBYTE)new charm_dwImageSize;方法2m_hBitmap=:CreateDIBSection(pDC-GetSafeHdc(),(LPBITMAPINFO)m_lpBMPHdr,DIB_RGB_COLORS,(LPVOID*)&m_lpDIBits,NULL,0);91.2.3位图读取过程中的调色板的创建和调用对读取位图的过程中需要调用的对调色板进行操作的相关函数进行说明。 读取文件的过程中,计算出调色板大小,然后调用创建调色板函数ComputePaletteSize(m_lpBMPHdr-biBitCount);SetWinPalette();在显示位图之前,设置调色板if(m_hPalette!=NULL):SelectPalette(pDC-GetSafeHdc(),m_hPalette,TRUE);1.2.4位图的显示。 位图的显示还是调用Windows的API函数来进行,需要传递的参数包括当前位图信息头,位图数据等:StretchDIBits(pDC-GetSafeHdc(),m_Dest.x,m_Dest.y,m_DestSize.cx,m_DestSize.cy,m_Src.x,m_Src.y,m_SrcSize.cx,m_SrcSize.cy,m_lpDIBits,(LPBITMAPINFO)m_lpBMPHdr,DIB_RGB_COLORS,SRCCOPY);其中的m_Dest,m_DestSize,m_Src,m_SrcSize分别代表了图像在当前设备上显示的左上角坐标和范围以及需要显示的源图像的左下角坐标和范围。 此处需要说明的是,位图数据的字节数组是从图像的最下面一行开始逐行想上存储的,所以在选取源位图的现实范围的时候需要特别注意!m_Dest,m_DestSize,m_Src,m_SrcSize需要在现实之前设置好。 1.2.5其它问题1位图的存储。 位图的存储用WriteFile实现。 2新位图的创建。 新位图的创建由NewFile实现。 需要的参数是位图的宽度、高度、以及位图像素占用的位数。 3其它问题。 存取位图数据的字节数组有个问题需要引起开发人员的注意字节数组中每个扫描行的字节数必需是4的倍数,如果不足要用0补齐。 以下是处理的办法DWORD dwBytes=(DWORD)m_lpBMPHdr-biWidth*m_lpBMPHdr-biBitCount)/32;if(DWORD)m_lpBMPHdr-biWidth*m_lpBMPHdr-biBitCount)%32)dwBytes+;10dwBytes*=4;m_dwImageSize=dwBytes*m_lpBMPHdr-biHeight;这段代码按照要求算出了用于记录图像数据的字节数组的大小。 1.3CFG_DIB的使用以下是CFG_DIB的使用示例代码。 #includefg_dib.hCFG_DIB m_fgdib;/new filem_fgdib.NewFile(width,height,nbitnum);/open fileCFile*pf;pf=new CFile;pf-Open(sFileName,CFile:modeRead);m_fgdib.ReadFile(pf);pf-Close();delete pf;/draw BMPm_fgdib.m_Dest.x=0;m_fgdib.m_Dest.y=0;m_fgdib.m_DestSize.cx=m_fgdib.GetWidth();m_fgdib.m_DestSize.cy=m_fgdib.GetHeight();m_fgdib.m_Src.x=0;m_fgdib.m_Src.y=0;m_fgdib.m_SrcSize.cx=m_fgdib.GetWidth();m_fgdib.m_SrcSize.cy=m_fgdib.GetHeight();11CDC*pDC=GetDC();m_fgdib.Display(pDC);/close BMPm_fgdib.CloseFile();12二选题一图像的点运算实现图像的几种常用点运算,包括灰度的线性变换、灰度的域值变换、灰度的窗口变换、灰度拉伸和灰度均衡。 2.1灰度的线性变换灰度的线性变换用到的线性灰度变换函数f(x)是一个一维线性函数B A)(f x f x f+?=灰度变换方程为fB Df Df DAA B+?=A)(式中参数A f为线性函数的斜率,B f为线性函数的在y轴的截距,D A表示输入图像的灰度,BD表示输出图像的灰度。 当A f1时,输出图像的对比度将增大;当A f1时,输出图像的对比度将减少;当A f=1且B f0时,操作仅使所有像素的灰度值上移或下移,其效果是使整个图像更暗或更亮;如果A f1)物体灰度区间以改善图像同样如果图像灰度几种在较量的区域而导致图像偏亮,也可以用灰度拉伸功能来压缩(斜率s0,r1-s1,r2-s2,r3-s3,r4-s4,r5-s5,r6-s6,r7-s7所以灰度级对应为r0-1/7,r1-3/7,r2-5/7,r3-6/7,r4-6/7,r5-1,r6-1,r7-1可得到新的直方图。 1s1s1s76s76s75s73s71s76543210,17三选题二图像的几何变换实现图像的几种常用几何变换算法,包括图像的平移、图像的镜像变换、图像的转置、图像的缩放和图像的旋转。 3.1图像的平移图像平移是图像操作中的一项基本功能,它是将图像沿x轴或者y轴方向移动一定距离的操作。 平移算法很简单,只要找到新图像的点在图像中的对应位置,然后把信息保存就可以了。 平移变换可以用矩阵形式表示如下式中(x*,y*)为平移后的坐标,(x,y)为平移前的坐标。 Tx和Ty分别为X方向和Y方向的平移量。 平移后有可能某些点不在原图中,可以直接将它的像素值统一设置为0或者255(对于灰度图就是黑色或者白色)。 同样,若有点不再原图中,也就说明原图中有点被移出显示区域。 算法的参考界面和效果如下所示图3-1图像平移的参考界面和效果图3.2图像的镜像变换图像的镜像变换分为两种水平镜像,另外一种是垂直镜像(或称为图像颠倒)。 ?+=?=?111001001yxyxT yTxTTyxyx*118图像垂直镜像是指把定义好的图像区域上下翻转地显示在屏幕上。 分析图像垂直镜像的过程,可发现每行的图像信息都保持不变,而只是改变了行的顺序,将第一行与最后的第n行相互交换,第二行与第n1行交换,依此类推,从而实现了图像的垂直镜像。 只需采用按行交换的方式,即可方便地修改缓冲区内容,实现图像的垂直镜像。 基本步骤如下 (1)将原图像读入缓冲区,并擦除原图像; (2)计算图像的高度,即行数height;计算图像宽度width;根据宽度、高度生成新缓冲区; (3)把第一行与最末行交换,第2行与第n1行交换,依此类推,直至全部交换完毕。 既原图中的(x、y)点,在新生成的图象中对应为x1=x,y1=height-1-y。 把原图中的象素值读入新缓冲区的(x1,y1)点处。 (4)把交换后的图像缓冲区内容重新显示在屏幕上。 图3-2图像垂直镜像效果图水平镜像变换是指将指定区域的图像左右翻转地显示在屏幕。 分析水平镜像变换过程可以发现每行图像信息的处理方式是相同的,而且行顺序不发生变化,只是每一行的像素信息按从左到右的顺序进行了左右颠倒,从而实现了水平镜像变换。 因此,采用按行逐点变换的方式实现图像的镜像。 首先,对于左上角为(left,top),右下角为(right,bottom)矩形区域图像,给出其中任意点(x0,y0)镜像变换后的新坐标(x,y)的坐标变换公式19x=rightx0left y=y0根据以上公式,对各个像素点计算新坐标后,直接把它显示在屏幕的相应位置上。 如果完全逐点地进行交换,处理一个像素点就要读取一次像素值,从而降低了变换速度。 由于像素点是顺序存放在各个bit位上,每读取一个字节就包含了8个像素点的信息,只需设置不同的位屏值bitmask,就可以获得不同像素点的信息。 因此采用按行逐字节变换的方式,每读一次就进行8个像素点的变换,以提高变换速度。 将一矩形区域的图像进行水平镜像变换的基本步骤如下 (1)用getimage()把图像保存到内存缓冲区,并擦除原图像。 (2)计算图像高度,即行数高度height和宽度width;计算保存一行图像信息占用的字节数linebytes。 计算公式如下height=bottomtop1;width=rightleft1;linebyte=(width7)84; (3)对图像进行镜像。 (4)释放内存图像缓冲区。 图3-3图像水平镜像效果图203.3图像的转置图像的转置操作是将图像像素的x坐标和y坐标互换。 该操作将改变图像的大小,图像的高度和宽度将互换。 图3-4图像转置效果图3.4图像缩放缩放变换可以用矩阵表示式中(x*,y*)为缩放后的坐标,(x,y)为缩放前的坐标。 Sx和Sy分别为X方向和Y方向的缩放量。 图像缩放产生的新图像中的像素可能在原图中找不到相应的像素点,这样就必须进行近似处理;可以采用最邻近差值法,也可以采用双线性差值法。 最近邻插值是直接赋值为和它最相近的像素值。 这种方法计算简单,但会出现马赛克现象。 双线性插值该方法的原理是,当所产生的图像中的像素在原图像中找不到相应的像素点时,求出该像素点在原图像中的位置,然后求该位置处的周围四个像素点的距离比,根据该比率,由四个邻域的像素灰度值进行线性插值。 ?=?=?111000000yxyx*yxyxssssyx121图3-5双线性插值示意图3.5图像旋转图像旋转是指把定义的图像绕某一点以逆时针或顺时针方向旋转一定的角度,通常是指绕图像的中心以逆时针方向旋转。 假设图像的左上角为(left,top),右下角为(right,bottom),则图像上任意点(x0,y0)绕其中心(xcenter,ycenter)逆时针旋转angle角度后,新的坐标位置(x,y)的计算公式为xcenter=(rightleft1)2left;ycenter=(bottomtop1)2top;x=(x0xcenter)cos(y0ycenter)sinxcenter;y=(x0xcenter)sin(y0ycenter)cosycenter;与图像的镜像变换相类似,也采用按行逐点变换的方式实现图像的旋转,其步骤如下 (1)用getimage()把图像保存到内存缓冲区,并擦除原图像。 (2)计算图像高度height,宽度width,及保存一行图像信息占用的字节数linebytes,计算公式与镜像变换的计算公式相同。 (3)对图像逐行进行旋转变换。 (4)释放内存图像缓冲区。 值得指出的是,这种处理方法不够。 为此可以采用另一种方法先在图像变换), (1),(),()y,(y x f y x fqy x f xf?+=1),(1)1,(1),(1),(+?+=+y xf yxfpy xf yxf),()1,(),(),(yxf yxfpy xf yxf?+=(x,y)(x,y1)(x1,y)x,y(x1,y1)p1p1qq22缓冲区中处理完毕后,再将变换后的图像一次显示在屏幕上。 这样可以取得较好的显示效果。 23四选题三图像的增强实现图像的几种常用增强算法,包括图像的线性平滑、图像的中值滤波、图像的锐化(梯度锐化和拉普拉斯锐化)和伪彩色图像增强。 4.1模板操作模板操作是数字图像处理中常用的一种运算方式,图像的平滑、锐化、细化、边缘检测等都要用到模板操作。 模板操作的步骤1.将模板在图中漫游,并将模板中心与某像素重合。 2.将模板系数与模板下对应像素相乘。 3.将所有乘积相加4.将上述求和结果赋予模板中心对应像素。 例如,有一种常见的平滑算法是将原图中的一个像素的灰度值和它周围邻近8个像素的灰度值相加,然后将求得的平均值作为新图像中该像素的灰度值。 该操作的模板可表示为如下形式带星号的数据表示该元素为中心元素,即这个元素是将要处理的元素。 如果模板为则该模板操作的含义是将原图中一个像素的灰度值和它右下相邻近的8个像素值相加,然后将求得的平均值作为新图像中该像素的灰度值。 模板操作实现了一种邻域运算,即某个像素点的结果不仅和本像素灰度有关,而且和其邻域点的值有关。 在模板操作中,还存在一些具体问题需要解决首先是图像边界问题,当在图111111*19111?1*1111119111?24像上移动模板至图像的边界时,在原图像中找不到与卷积核中的加权系数相对应的9个像素,即模板移出了图像边界,这种现象在图像的上下左右四个边界上均会出现。 解决这个问题可以采用两种简单方法一种方法是忽略图像边界数据,不做任何处理,只是复制原图的灰度值。 另一种方法是在图像四周复制原图像边界像素的值,从而使卷积核悬挂在图像四周时可以进行正常的计算。 实际应用中,多采用第一种方法。 其次,是计算出来的像素值的动态范围问题,对此可简单地将其值置为0或255即可。 4.2图像的线性平滑图像的平滑是一种实用的数字图像处理技术,主要目的是减少图像的噪声。 一般情况下,在空间域内可以用平滑模板的操作实现图像平滑,这种平滑方法属于线性平滑。 平滑模板的思想是通过一点和周围几个点的运算(通常为平均运算)来去除突然变化的点,从而滤掉一定的噪声,但图像有一定程度的模糊。 常用的平滑模板有图像线性平滑算法的参考界面如下图4-1线性平滑参考界面010110*14010?111110*18111?111112*110111?111111*19111?121124*216121?254.3图像的中值滤波中值滤波是一种非线性的信号处理方法。 在一定条件下可以克服线性滤波器带来的图像细节模糊。 中值滤波一般采用一个含有奇数个点的滑动窗口,将窗口中各点灰度的中值来替代指定点(一般是窗口的中心点)的灰度值。 常用的二维中值滤波窗口形状有线状、方形、圆形和十字形等。 二维中值滤波的操作步骤如下1将窗口在图中移动;2读取窗口内对应像素的灰度值;3将这些灰度值从小到大排成1列;4找出这些值里排在中间的数值5将这个中间值赋给对应窗口中心位置的像素。 中值滤波的参考界面如下图4-2中值滤波参考界面4.4图像的锐化图像的锐化方法主要有两种方法一种是微分法,另外一种是高通滤波法。 这里需要完成的是微分法中具有代表性的两种算法梯度锐化和拉普拉斯锐化。 4.4.1梯度锐化对于离散数字图像(i,j)点的梯度可以近似写成Gf(x,y)=|f(i,j)-f(i+1,j)|+f(i,j)-f(i,j+1)|或Gf(x,y)=|f(i,j)-f(i+1,j+1)|+|f(i+1,j)-f(i,j+1)。 上述两个公式的示意26图如下所示图4-3梯度计算公式示意图当梯度计算完之后,可以根据需要生成不同的梯度增强图像。 第一种是使各点的灰度g(x,y)等于该点的梯度幅度,即g(x,y)=Gf(x,y)此法的缺点是增强的图像仅显示灰度变化比较陡的边缘轮廓,而灰度变化平缓的区域则呈黑色。 第二种增强的图像是使式中T是一个非负的阈值,适当选取T,即可使明显的边缘轮廓得到突出,又不会破坏原灰度变化比较平缓的背景。 第三种增强图像是使式中T是根据需要指定的一个灰度级,它将明显边缘用一固定的灰度级LG来实现。 第四种增强图像是使此法将背景用一个固定灰度级LG来实现,便于研究边缘灰度的变化。 第五种增强图像是使(,)(,)(,)(,)?=?其他G f x yG f x y Tg x yf x y(,)(,)(,)GL G fx y Tg x yfxy?=?其他(,)(,)(,)GG fxyGfxyTgx yL?=?其他(,)(,)GBL GfxyTgxyL?=?其他27此法将背景和边缘用二值图像表示,便于研究边缘所在位置。 可以使用上述一种方法对图像进行锐化。 4.4.2拉普拉斯锐化拉普拉斯算子是常用的边缘增强算子,拉普拉斯运算也是偏导数运算的线性组合运算,而且是一种各向同性(旋转不变性)的线性运算。 拉普拉斯锐化可以表示成模板的形式,常见的拉普拉斯锐化模板有拉普拉斯锐化就是对图像用拉普拉斯锐化模板做模板操作。 4.5伪彩色增强人眼对彩色比较敏感,所以需要将灰度图象变换成彩色图像,我们把这种由图像的灰度变换而来的彩色叫做伪彩色。 可以有多种方式实现灰度到彩色的变换,最简单的就是把黑白图像的灰度级别从0到255分成255个区间,给每个区间指定一种彩色。 在VC中实现这种伪彩色变换可以用指定的伪彩色调色板来替换当前图像调色板。 每种伪彩色调色板可以根据需要自己配制。 图4-4伪彩色调色板选择参考界面01015*1010?11119*1111?12125*2121?28五选题四形态学图像处理实现二值图像的几种常用的形态学处理方法,包括腐蚀、膨胀、开运算、闭运算和细化。 5.1基本符号和术语5.1.1元素和集合在数字图像处理的数学形态学运算中,把一幅图像称为一个集合。 对于二值图像而言,习惯上认为取值为1的点对应于景物,用阴影表示,而取值为0的点构成背景,用白色表示,这类图像的集合是直接表示的。 考虑所有值为1的点的集合为A,则A与图像是一一对应的。 对于一幅图像A,如果点a在A的区域以内,那么就说a是A的元素,记为aA,否则,记作aA,如图5-1(a)所示。 对于两幅图像A和B,如果对B中的每一个点b(bB)都有bA,那么称B包含于A,记作B A。 如果同时还有A中至少存在一个点a,aA且aB,那么称B真包含于A,记作B A,如图5-1(b)所示。 图5-1元素与集合间的关系5.1.2交集、并集和补集两个图像集合A和B的公共点组成的集合称为两个集合的交集,记为AB,即AB=aaA且aB。 两个集合A和B的所有元素组成的集合称为两个集合的并集,记为AB,即AB=aaA或aB。 对一幅图像A,在图像A区域以外的所有点构成的集合称为A的补集,记为A C,即A C=aaA。 交集、并集和补集运算是集合的最基本的运算,如图5-2所示。 ?(a)(b)29图5-2集合的交集、并集和补集5.1.3击中(Hit)与击不中(Miss)设有两幅图像A和B,如果AB,那么称B击中A,记为BA,其中是空集合的符号;否则,如果AB=,那么称B击不中A,如图5-3所示。 图5-3击中与击不中(a)B击中A;(b)B击不中A5.1.4平移和反射设A是一幅数字图像(见图5-4(a)),b是一个点(见图5-4(b)),那么定义A被b平移后的结果为Abab|aA,即取出A中的每个点a的坐标值,将其与点b的坐标值相加,得到一个新的点的坐标值a+b,所有这些新点所构成的图像就是A被b平移的结果,记为A+b,如图5-4(c)所示。 A关于图像原点的反射结果为A V=a|-aA,即将A中的每个点取相反数后所得的新图像,如图5-4(d)所示。 图5-4平移与反射0123412345(a)01234123(b)0123412345-1-2-3-40-1-2-3-4(c)(d)305.1.5目标和结构元素被处理的图像称为目标图像,一般用大写英文字母表示。 为了确定目标图像的结构,必须逐个考察图像各部分之间的关系,并且进行检验,最后得到一个各部分之间关系的集合。 在考察目标图像各部分之间的关系时,需要设计一种收集信息的“探针”,称为“结构元素”。 “结构元素”一般用大写英文字母表示,例如用S表示。 在图像中不断移动结构元素,就可以考察图像之间各部分的关系。 一般,结构元素的尺寸要明显小于目标图像的尺寸。 5.2腐蚀腐蚀是最基本的一种数学形态学运算。 对一个给定的目标图像X和一个结构元素S,想象一下将S在图像上移动。 在每一个当前位置x,S+x只有三种可能的状态(见图5-5) (1)S+xX;(5-1) (2)S+xX C; (3)S+xX与S+xX C均不为空。 图5-5S+x的三种可能的状态第一种情形说明S+x与X相关最大,第二种情形说明S+x与X不相关,而第三种情形说明S+x与X只是部分相关。 因而满足式(5-1)的点x的全体构成结构元素与图像最大相关点集,这个点集称为S对X的腐蚀(简称腐蚀,有时也称X用S腐蚀),记为XS。 腐蚀也可以用集合的方式定义,即(5-2)上式表明,X用S腐蚀的结果是所有使S平移x后仍在X中的x的集合。 换句?|X Sx Sx X=+?31话说,用S来腐蚀X得到的集合是S完全包括在X中时S的原点位置的集合。 图5-6腐蚀运算示例本部分要求实现几个基本结构元素的腐蚀操作算法,包括1*3的结构元素,3*1的结构元素和3*3的结构元素,结构元素的原点均设为结构元素的中心位置。 参考的腐蚀结构设定参考界面如下图5-7腐蚀结构设定参考界面5.3膨胀腐蚀可以看作是将图像X中每一与结构元素S全等的子集S+x收缩为点x。 反之,也可以将X中的每一个点x扩大为S+x,这就是膨胀运算,记为XS。 若用集合语言,它的定义为XS=x|S V+xX(5-3)本部分要求实现几个基本结构元素的膨胀操作算法,包括1*3的结构元素,3*1的结构元素和3*3的结构元素,结构元素的原点均设为结构元素的中心位置。 参考的膨胀结构设定参考界面如下?32图5-8膨胀结构设定参考界面5.4开、闭运算对图像X及结构元素S,用符号XS表示S对图像X作开运算,用符号XS表示S对图像X作闭运算,它们的定义为XS=(X S)S(5-4)XS=(X S)S(5-5)由式(5-4)和式(5-5)可知,XS可视为对腐蚀图像X S用膨胀来进行恢复,而XS可看作是对膨胀图像X S用腐蚀来进行恢复。 不过这一恢复不是信息无损的,即它们通常不等于原始图像X。 由于开运算和闭运算是腐蚀和膨胀的组合运算,所以其算法可以直接利用腐蚀和膨胀算法得到。 本部分要求实现几个基本结构元素的开、闭运算算法,包括1*3的结构元素,3*1的结构元素和3*3的结构元素,结构元素的原点均设为结构元素的中心位置。 5.5细化二值图像的细化算法如下设已知目标点标记为1,背景点标记为0。 边界点是指本身标记为1而其8连通邻域中至少有一个标记为0的点。 算法对一幅图像的所有边界点即一个33区域都进行如下检验和操作 (1)考虑以边界点为中心的8邻域,设p1为中心点,对其邻域的8个点逆时?33针绕中心点分别标记为p2,p3,p9,其中p2位于p1的上方。 如果p1=1(即黑点)时,下面4个条件同时满足,则删除p1(p1=0)2N(p1)6,其中N(p1)是p1的非零邻点的个数;S(p1)=1,其中S(p1)是以p2,p3,p4,p9为序时这些点的值从0到1变化的次数;p2p4p6=0或者S(p1)1;p4p6p8=0或者S(p1)1。 (2)同第 (1)步,仅将中的条件改为p2p4p8=0,中的条件改为p2p6p8=0。 同样当对所有边界点都检验完毕后,将所有满足条件的点删除。 以上两步操作构成一次迭代。 算法反复迭代,直至没有点再满足标记删除的条件,这时剩下的点就组成区域的骨架。 图5-9给出了这一算法的应用示例。 其中,图5-9(b)、(c)、(d)是p1不可删除的三种情况。 在图5-9(b)中删除p1会分割区域,图5-9(c)中删除p1会分割缩短边缘,图5-9(d)中满足条件2N(p1)6但p1不可删除。 图5-9膨胀结构设定参考界面p3p2p9p4p1p8p5p6p7(a)1(b)10p1101000(c)10p1000001(d)01p101011(e)(f)34六选题五图像边缘检测实现灰度图像的几种常用的边缘检测算法,包括Roberts边缘检测算法、Sobel边缘检测算法、Prewitt边缘检测算法、Krisch边缘检测算法、拉普拉斯边缘检测算法和Canny边缘检测算法。 6.1一阶微分算子边缘检测一阶微分算子边缘检测方法中的微分算子包括Roberts算子、Sobel算子、Prewitt算子和Krisch算子。 Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子。 它由下式给出g(x,y)=f(x,y)-f(x+1,y+1)2+f(x+1,y)-f(x,y+1)21/2(6-1)Sobel边缘检测算子有两个模板构成,一个用于检测垂直方向的边缘,另一个用于检测水平方向的边缘。 图6-1Sobel边缘检测算子分别用上述的两个模板对图像做模板运算,这样每个点均有两个输出,取两个输出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮连锁加盟与区域代理合作协议范本
- 餐饮门面租赁合同租赁终止条件与违约责任解析
- 员工培训案例
- 茶园承包与茶叶品牌保护与维权合作协议
- 生态工业园区厂房土地抵押借款合同
- 餐饮连锁品牌加盟加盟商权益保障合同
- 智能家居系统承包安装服务合同范本
- 拆除工程安全责任书:建筑拆除安全合同
- 名医诊疗经验传承师承合同
- 师生夏季安全教育
- 2025年湖南省中考英语试卷真题(含答案)
- 护理急诊急救培训课件
- 2025年卫生系统招聘考试(公共基础知识)新版真题卷(附详细解析)
- 2024年司法局司法辅助岗招聘考试笔试试题(含答案)
- 重庆市普通高中2025届高一下化学期末学业质量监测试题含解析
- 2025年人力资源管理师考试试卷及答案
- 北方华创招聘笔试题库2025
- 2025郑州航空工业管理学院辅导员考试试题及答案
- 浙江省嘉兴市2023-2024学年高一下学期6月期末考试英语试题(含答案)
- 多模态数据融合的智能告警机制-洞察阐释
- 2024年广东省台山市事业单位公开招聘教师岗考试题带答案分析
评论
0/150
提交评论