《数字图像处理》综合性实验报告new

上传人:xins****2008 文档编号:111140804 上传时间:2019-11-01 格式:DOC 页数:13 大小:348KB
返回 下载 相关 举报
《数字图像处理》综合性实验报告new_第1页
第1页 / 共13页
《数字图像处理》综合性实验报告new_第2页
第2页 / 共13页
《数字图像处理》综合性实验报告new_第3页
第3页 / 共13页
《数字图像处理》综合性实验报告new_第4页
第4页 / 共13页
《数字图像处理》综合性实验报告new_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《《数字图像处理》综合性实验报告new》由会员分享,可在线阅读,更多相关《《数字图像处理》综合性实验报告new(13页珍藏版)》请在金锄头文库上搜索。

1、数字图像处理综合性实验灰度图像边缘检测题 目:班 级: 学生姓名: 学生学号: 指导老师: 提交时间: 成 绩:华南农业大学 信息学院一、实验目的 1.掌握各种边缘检测算子的概念及原理。2.掌握各种边缘检测算子的算法。3.掌握各种边缘检测算子VC+实现的编制技巧。4.启发学生依据边缘特征进行图像分析与识别,提高学生图像处理与分析能力和实际动手能力。二、实验内容1.编程实现以下六种图像边缘检测算子。(1)Roberts边缘算子(2)Sobel边缘算子(3)Prewitt边缘算子(4)拉普拉斯边缘算子(5)Kirsch边缘算子(6)高斯-拉普拉斯边缘算子2.根据检测结果,分析与比较各种边缘检测算法

2、的主要区别。三、实验要求 1.熟练利用VC+编程实现六个图像边缘检测算子2.选取最优阈值或近似最优阈值实现图像二值化3.通过对比检测效果,对比分析六个检测算子四、实验原理 算法思想及原理:就是基于算子模板的卷积过程,比如有一张8x8的图片,像素矩阵如下:1223522111000120000002564547545412564547545412564547545412564547545412564547545412564547545412又有一个3x3的算子模板矩阵如下:0-10-14-10-10整个模板卷积过程就是用模板覆盖在像素矩阵上,重新计算像素值并移动的过程。如下图即为模板盖住左上角的

3、示例。1223522111000120000002564547545412564547545412564547545412564547545412564547545412564547545412计算方式为模板单元格的值与被模板覆盖的图像子矩阵的值分别相乘并求和,并把结果放在模板中央单元格所对应的图像矩阵单元格中。上图模板中央对应的单元格的值应为:12*0+23*(-1)+52*0+12*(-1)+0*4+0*(-1)+56*0+45*(-1)+47*0=-80。各算子模板如下:1. Roberts算子2. 拉普拉斯边缘算子3. Kirsch边缘算子4. 高斯-拉普拉斯算子5. Prewitt边

4、缘算子6. Sobel算子-1-2-1000121-101-202-101五、实验过程1. 编写一个通用的模板卷积函数,并将实际模板作为参数。2. 在CDib类里面实现对应的模板卷积函数及模板卷积矩阵(数组)。3. 为菜单添加边缘检测的相关菜单项并添加事件处理函数。4. 拿一张灰度的8位图测试并对比结果。六、实验结果及分析1. 下面是一些实验的结果及对比1.1 原图1.2 Roberts算子检测结果:1.3 Sobel算子结果:1.4 Prewitt边缘算子结果:1.5拉普拉斯边缘算子结果:1.6 Kirsch边缘算子结果1.7高斯-拉普拉斯算子结果:2. 结果分析通过以上实验结果对比可知,R

5、oberts算子和Sobel算子的检测结果是比较理想的,其中,Roberts算子的边缘非常清晰。而其他算子可以明显的看出边缘处有较多的杂点,不明朗。当然,这几个算子模板并没有谁好谁不好之分,只是应用领域不同。七、实验总结本次实验是在前面两次实验的基础上进行拓展的,故必须把前面打开和保存BMP、转灰度、直方图显示及均衡化的实验完善好。本次实验的完成还是相当顺利的,主要还是因为之前接触过MFC,对MFC的机制有些了解。考虑到图片处理效率等问题,我也发现VC+是非常适合做图片处理的。通过本次实验,我掌握了边缘检测算法,并实践了整个过程,感觉获益匪浅。当然,数字图像处理领域的知识体系是非常庞大的,边缘

6、检测只是其中很小的一个。实验过程还是遇到过一些难点的,比如24位真彩色图片转8位的灰度图片,必须重建调色板,重构数据区,修改文件头等,否则会出错。但这些问题都在后来反复实践过程中解决了。附录1:对应程序代码矩阵定义:const int sobel29=-1,-2,-1,0,0,0,1,2,1,-1,0,1,-2,0,2,-1,0,1,;const int kirsch89=-3,-3,5,-3,0,5,-3,-3,5,-3,5,5,-3,0,5,-3,-3,-3,5,5,5,-3,0,-3,-3,-3,-3,5,-3,-3,5,0,-3,5,-3,-3,5,5,-3,5,0,-3,-3,-3,

7、-3,-3,-3,-3,5,0,-3,5,5,-3,5,5,-3,5,0,-3,-3,-3,-3,-3,-3,-3,-3,0,5,-3,5,5;const int prewitt29=-1,0,1,-1,0,1,-1,0,1,-1,-1,-1,0,0,0,1,1,1,;const int roberts24=1,0,0,-1,0,1,-1,0,;const int laplace29=0,1,0,1,-4,1,0,1,0,1,1,1,1,-8,1,1,1,1,;const int gauss_Laplace25=-2,-4,-4,-4,-2,-4,0,8,0,-4,-4,8,24,8,-4,-

8、4,0,8,0,-4,-2,-4,-4,-4,-2,;相关实现:void CDib:Sobel()if (!IsGray()AfxMessageBox(请先将图像转换为8位灰度图像);return ;int nWidth=GetWidth();int LineBytes=GetLineBytes();int nHeight=GetHeight();BYTE * pData=GetData();BYTE * tmp = new BYTELineBytes * nHeight;memset(tmp,0,sizeof(BYTE)*LineBytes*nHeight);int k;for(k=0;k2

9、;+k)/sobel算子有两个模板Convolution(tmp,sobelk,3,3,true);memcpy(pData,tmp,sizeof(BYTE)*LineBytes*nHeight);/将处理完的数据赋给图像,用以显示delete tmp;void CDib:Roberts()if (!IsGray()AfxMessageBox(请先将图像转换为8位灰度图像);return ;int nWidth=GetWidth();int LineBytes=GetLineBytes();int nHeight=GetHeight();BYTE * pData=GetData();BYTE

10、* tmp = new BYTELineBytes * nHeight;memset(tmp,0,sizeof(BYTE)*LineBytes*nHeight);int k;for(k=0;k2;+k)Convolution(tmp,robertsk,2,2,true);memcpy(pData,tmp,sizeof(BYTE)*LineBytes*nHeight);/将处理完的数据赋给图像,用以显示delete tmp;void CDib:Prewitt()if (!IsGray()AfxMessageBox(请先将图像转换为8位灰度图像);return ;int nWidth=GetWid

11、th();int LineBytes=GetLineBytes();int nHeight=GetHeight();BYTE * pData=GetData();BYTE * tmp = new BYTELineBytes * nHeight;memset(tmp,0,sizeof(BYTE)*LineBytes*nHeight);int k;for(k=0;k2;+k)Convolution(tmp,prewittk,3,3,true);memcpy(pData,tmp,sizeof(BYTE)*LineBytes*nHeight);/将处理完的数据赋给图像,用以显示delete tmp;v

12、oid CDib:Kirsch()if (!IsGray()AfxMessageBox(请先将图像转换为8位灰度图像);return ;int nWidth=GetWidth();int LineBytes=GetLineBytes();int nHeight=GetHeight();BYTE * pData=GetData();BYTE * tmp = new BYTELineBytes * nHeight;memset(tmp,0,sizeof(BYTE)*LineBytes*nHeight);int k;for(k=0;k8;+k)Convolution(tmp,kirschk,3,3,true);memcpy(pData,tmp,sizeof(BYTE)*LineBytes*nHeight);/将处理完的数据赋给图像,用以显示delete tmp;void CDib:Laplace()if (!IsGray()

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号