资源描述:
《灰值图像形态学-《计算机图像处理》课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、《计算机图像处理》课程设计报告题目灰值图像形态学专业计算机科学与技术班级学号姓名指导教师签名华东理工大学信息学院计算机系2013年5月15日一.课程设计题目灰值图像形态学二.日期2013.4.3-2013.5.8三.环境(操作系统,开发语言)操作系统是Windows开发语言是VisualC++语言四.设计内容(设计要求)(1)开发一个基于VisualC++.NET2003(或更高版本)MFC的图像的形态学处理的程序,必须用CImage类作为图像处理的对象。(2)程序必须具备的功能:a)可选择文件名,读入并显示一张原始图像文件。b)在
2、显示的原始图像旁边显示至少二张不同的形态学处理后的图像。五.说明(1)说明使用的二种图像处理方法的名称,并对这二种图像处理方法的效果进行比较说明:两种处理方法为:灰值形态学的腐蚀和灰值形态学的膨胀效果分析:l灰值形态学腐蚀:就是把图像区域的内边界点变成背景,是区域缩小一圈。腐蚀可以消除目标图像所有边界点以及边界上的突出部分;分离两个目标之间的细小连通;腐蚀对于从一幅图像中去除一些小而无意义的目标是很有用的。算法中关键点是:g(j,k)=min{f(j,k),f(j,k+1),f(j-1,k+1),…,f(j+1,k+1)}l灰值形态
3、学膨胀:就是将区域的外边界变成对象点,使区域扩大一圈。膨胀运算把图像周围的点合并进图像;连通两个距离比较小的图像;在连接图像中的断续点和填补图像中的空洞是非常有用的。算法关键点是:g(j,k)=max{f(j,k),f(j,k+1),f(j-1,k+1),…,f(j+1,k+1)}(1)处理前后的截图处理效果一:处理效果二:(2)程序功能实现的关键函数及关键源代码关键函数和关键源代码如下:OnDraw():将工作画布WorkCanvas中的图像传送到屏幕画布CDC中voidCImageView::OnDraw(CDC*pDC){CI
4、mageDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);if(!pDoc)return;intnWidth,nHeight;if(!WorkCanvas.IsNull()){nWidth=WorkCanvas.GetWidth();nHeight=WorkCanvas.GetHeight();WorkCanvas.BitBlt(*pDC,0,0,nWidth,nHeight,0,0,SRCCOPY);//用WorkCanvus的Bitblt()函数将WorkCanvus中的图象数据传送到画布(例如
5、CClientDC或pDC)上}}CopyImage():CImage类对象之间的复制,工作画布复制到副本画布voidCopyImage(CImage*pNewImage,CImage*pOldImage){CDC*pDC,*pNewDC;intnWidth,nHeight,nBitsPerPixel;nWidth=pOldImage->GetWidth();nHeight=pOldImage->GetHeight();nBitsPerPixel=pOldImage->GetBPP();if(!pNewImage->IsNull()
6、)//目标位图非空pNewImage->Destroy();//删除目标位图pNewImage->Create(nWidth,nHeight,nBitsPerPixel,0);//建立CImage类对象新位图CopyColorTables(pNewImage,pOldImage);//复制调色板pDC=CDC::FromHandle(pOldImage->GetDC());//建立源位图CDCpNewDC=CDC::FromHandle(pNewImage->GetDC());//建立目标位图CDCpNewDC->BitBlt(0,
7、0,nWidth,nHeight,pDC,0,0,SRCCOPY);//复制像素数据pOldImage->ReleaseDC();//释放CDC指针pNewImage->ReleaseDC();}IndexToGreyImage():索引图像变灰阶图像voidIndexToGreyImage(CImage*pNewImage,CImage*pOldImage){RGBQUADColorTabs[256];BYTEcOldPixel,cNewPixel;inti,y,x,nOldWidth,nOldHeight,nColorTable
8、Entries;intRGBToGrey[256];if(pOldImage->GetBPP()==8){nOldWidth=pOldImage->GetWidth();nOldHeight=pOldImage->GetHeight(