西南科技大学本科生毕业论文
结论
随着科学技术的发展,数字图像处理技术已经在我们日常生活中体现出了越来越重要的地位。尤其是在医学上,数字图像处理技术无时无刻不在体现这它的优势与不可或缺性。本文则主要讨论了如何构建一个简单的数字图像处理系统,对图像进行增强,并最终实现腹腔内肝脏部分的提取工作。介绍了如何实现图像平滑、图像锐化和区域生长的功能,本文主要做了如下工作:
1.对C++语言、MFC技术和开放源代码的计算机视觉类库OpenCV进行了介绍,讨论了运用VC++平台和MFC技术来实现本次设计的优点。
2.通过简要概述利用平均模板、高斯模板和中值滤波为图像平滑的理论基础,归纳出算法实现。利用不同模板的平滑后效果图进行了比较,总结出了图像平滑的一些规律和各个模板实现平滑后效果的优劣。
3. 通过简要概述利用梯度算子和拉普拉斯算子为图像锐化的理论基础,并归纳出梯度算子进行图像锐化的算法实现。利用效果图总结出了图像梯度锐化的规律,要根据所需图像要求进行适度锐化。
4.通过简要概述梯度锐化的理论基础,并归纳总结出算法实现。经过效果图得到了程序中梯度锐化的一些缺陷,使得不能提取出完整的肝脏。所以在程序中加入了腐蚀功能,使最终提取的图片更加真实完整。
本文虽然基本完成了对于图像平滑、锐化、区域生长最终达到提取腹腔内肝脏的目的,但仍然存在以下不足之处:
1.在读入图像时只能读入比规定尺寸小或者相等的图像,稍微大一点的图像则无法读入,这样在使用时多少会带来不便。
2.在进行平滑操作时,不论是平均平滑、高斯平滑还是中值平滑,都只有3?3、5?5、
7?7这三个模板高度可供选择,使得图像平滑有局限性。可以考虑增加一个自定义模板来改善这一局限性。
3.在进行锐化操作时只编写了运用梯度算子实现的图像锐化功能,没有进行运用拉普拉斯算子实现的图像锐化功能进行编译,使得得到的锐化图像过于单一,不能进行对比。
4.实现区域生长功能是不能由用户自动选择阈值,必须在程序中进行修改。这样使得这个功能有所缺陷,有待改进。
32
西南科技大学本科生毕业论文
致谢
在本次毕业设计中,我首先要特别感谢我的毕业设计导师吴斌老师的悉心指导和热情帮助,在选题及研究过程中也得到了老师的悉心指导。我们学校每一位负责论文指导的导师都在各自的专业领域有着相当深厚的知识,我们在写毕业论文的过程中如果遇到自己困惑的问题时,就可以主动与导师进行联系与沟通,在老师的指导下完成论文的撰写。例如,在我面对论文题目、论文格式时就曾有不明白的地方,一时不知道该如何是好,觉得这个题目很好,也很容易扩展,但是又会认为这个题目如果从另一个方向写。为此我与我的导师及时进行了沟通,谈了一下自己的想法,而且老师也给了我两个比较宝贵的建议:一是所选的方向必须是自己思路比较开阔的方向;二是该方向必须自己得感兴趣,否则到最后会没有信心再继续写下去。我觉得写论文应该先有一个基本的框架,看看这个框架是否能够有足够的理论支持。
然后还要感谢王梁学长,作为研究生的王梁学长能够热心地解答我的疑惑,在编译程序和撰写论文期间无私地为我提供帮助。他给我提出的宝贵意见和给我讲解的知识,让我受益匪浅。
困难虽然很多,但是如果不怕困难不怕吃苦,那么一切的困难都是纸老虎。通过这次写毕业论文的经历,我感觉自己的收获很大,而且对网页知识得到了很大的提高。在撰写论文过程中,我不仅对自己所学领域的知识有了更深入更全面的了解,而且也锻炼了自己在繁忙的时候如何节省时间去做其他重要的事情的能力,而且也锻炼了自己独立思考、独立克服困难的能力。
感谢在整个毕业设计期间和我密切合作的同学,和曾经在各个方面给予过我帮助的伙伴们,在大学生活即将结束的最后的日子里,我们再一次演绎了团结合作的篇章,把一个从来没有上手的课题,圆满的完成了。正是因为有了你们的帮助,才让我不仅学到本次课题所涉及的新知识,更让我感觉到了知识以外的东西,那就是团结的力量。
最后,感谢所有在这次毕业设计中给予过我帮助的人。 对上述师友,再一次真诚的表示感谢!
33
西南科技大学本科生毕业论文
参考文献
[1] 高守传 姚领田等.Visual C++实践与提高——数字图像处理与工程应用篇[M],中国铁道出版社, 2000:51-60.
[2] 章毓晋.图像工程上册图像处理和分析[M],清华大学出版社,1999:135-137. [3] [美] Jeff Prosise.MFC Windows程序设计[M],清华大学出版社,2007:35-59. [4] 郑莉 董渊 张瑞丰.C++语言程序设计[M],清华大学出版社,2004:20-78. [5] 辛长安 王颜国.Visual C++权威剖析——MFC的原理、机制和开发实例[M], 清华大学出版社,2008:265-278.
[6] 王铮 王艳平 薛桂香.数字图像处理与机器视觉——Visual C++与Matlab实现[M], 人民邮电出版社,2010.4:148-175.
[7] 三杨科技.Visual C++ 开发入行真功夫[M],电子工业出版社,2009:13-29. [8] 王育坚.Visual C++ 面向对象编程教程[M],清华大学出版社,2007:131-154. [9] Gary Bradski Adrian Kaehler.学习OpenCV[M],清华大学出版社,2009:128-137 [10] 谭林秋.基于VC++的数字图像处理系统的开发及其算法研究[D],西安理工大学,2008 [11] 张华,展晓凯.基于VC++的数字图像处理系统的设计与实现[D],潍坊学院,2011 [12] 张秀荣,孟和达来.数字图像处理系统的开发与研究[D],内蒙古民族大学传媒学院,2011 [13] 付同堂,苏秀琴,刘莹,郝伟,李哲.基于MFC的图像处理程序的设计研究[J], 中国科学院研究生院,2007
[14] M.Sonka,V.Hlavac and R.Boyle.Image Processing[M].Analysis and Machine Vision,London,1993:121-136
[15] Gonzalez R C,Woods R E. Digital image processing,second edition.Pearson Education,Inc[M],2003:67-75
[16] Kruglinski D J.Shepherd G Programming Visual C++[D] ,1999
34
西南科技大学本科生毕业论文
附录1
系统实现主程序
void CImagePDlg::OnBnClickedReadimage()//读入图像 {
CFileDialog dlg(TRUE, _T(\NULL, NULL,_T(\生成对象,即打开选择图片对话框
CString strFileName; CString strFileName; if (dlg.DoModal()!=IDOK) {
return;
}//选择图片后返回程序
strFileName = dlg.GetPathName();//获得图片地址 /*char * pflie = (LPSTR)(LPCTSTR) strFileName;*/ USES_CONVERSION;
pfile = T2A(strFileName); //cstring(MFC自带字符操作类)转化为const char(字符
串) }
void CImagePDlg::OnBnClickedSmooth() {
if (readimage==0)//(判断是否有图片) {
AfxMessageBox(_T(\return ;
pChu=cvLoadImage(pfile,CV_LOAD_IMAGE_GRAYSCALE);//(读入图片) pRu =cvCloneImage(pChu);//(图片备份) readimage=1;//(读入图片标志)
DrawPicToHDC(IDC_ShowImg);//(显示图片)
35
西南科技大学本科生毕业论文
}
}
SmoothType dlgtype; //生成类型对话框对象 Smoothsize dlgsize; //生成尺寸对话框对象 if (dlgtype.DoModal()!= IDOK) { }//
smtype=dlgtype.m_nType;//获取平滑类型 if (dlgsize.DoModal()!= IDOK) {
return; return;
}// 获取尺寸并判断 if (dlgsize.m_nSize==0) { }
if (dlgsize.m_nSize==1) { }
if (dlgsize.m_nSize==2) { }
ImageCla.ImageSmooth(pChu,smtype,smsize);//平滑 DrawPicToHDC(IDC_ShowImg);//显示平滑后图像
smsize=7; smsize=5; smsize=3;
void CImagePDlg::DrawPicToHDC(UINT ID)//图像显示函数 {
36