交通图像边缘检测程序设计
[关键词:交通图像,边缘检测] [热度 ]提示:此毕业设计论文完整版包含【论文,源程序】 作品编号:txgc0536,word全文:46页,合计:17000字 |
本文给出了C程序设计知识在显示BMP位图中的应用以及BIOS调用知识做了介绍,对图像边缘检测的几种不同算子及其应用模板进行分析后选定使用SOBEL算子法,并利用C语言编程实现设计。本文介绍了设计思路后,分析了程序代码的构成,并进行了对运算生成结果图像的完善处理。
设计的目的
在掌握C语言程序编写知识、了解BMP位图数据存储结构的基础上,使用C语言编写程序,程序中需要调用BIOS中断并选择一种边缘检测算子对指定BMP交通图像做边缘检测运算。在使用者执行此程序时,程序会先读取原始BMP图像数据,然后进行后台运算,生成结果BMP位图文件。
设计的备选方案
方案一:Turbo C环境下编写程序
使用Turbo C环境对程序进行编写、运行,需要涉及到直接与计算机硬件打交道的底层代码,因此需要了解微机显卡编程知识,并对BIOS调用显示部分做充分的学习,才可以正确实现对BMP图像的显示功能。
方案二:Visual C++环境下编写程序
采用Visual C++环境则相对较易实现BMP图像的显示功能,可用VC++中DrawDib视频函数来进行位图显示,也可使用CviewBimap类来进行位图文件的显示操作。因此无需涉及BIOS调用内容。
无论采取以上两种方案中的一种,都需要对边缘检测算法进行选择。常见的边缘检测算法有梯度法、Roberts梯度、Sobel算法和Laplacian算法等。详见第五章介绍。
综合对以上各方案的考虑,本课题选择使用Sobel算法在Turbo C环境下进行对BMP位图文件的边缘检测程序设计。
本课题程序大体可分为模块三个模块,即原始图像的显示模块、图像边缘检测运算处理模块、结果图像的显示模块。其中原始图像的显示模块与结果图像的显示模块其原理与算法有很多相似之处,统称为图像显示模块。我们下面分别介绍这两个程序模块。
图像边缘检测是对图像数据的一种预处理运算过程。所以它的前提是将图像数据读取进来,在本程序中实现即是将指定图像打开。
本程序中,打开BMP图像采用的是文件形式打开fopen。文件形式相对简洁、直观,其读取图像的具体操作如下:用inBmp = fopen("bw.bmp","rb");语句将指定图像inBmp打开,如果文件存在,显示"Open Success!";如果文件不存在,则提示"Open Failed!"并返回0。然后找到指定图像的数据第1078字节,由前面所涉及到的BMP位图文件格式,可推算得到1078处即为本图像的实际图像数据开始字节处。用循环语句将宽度像素值为100,高度像素值为72的指定图像打开。
本文从BMP位图文件数据格式入手,提出了几种不同算子方法来检测图像边缘。通过对几种方法的了解与初步比较,最后选定使用Sobel算法实现。在介绍了BMP文件格式和BIOS显示调用后,利用该方法使用TC编程实现了指定交通图像的边缘检测。并在随后的章节内讲解了程序代码的构成,以及涉及到的问题。
本课题的程序共由三个主要模块构成,其中显示原始图像模块和显示结果模块的结构有很多相似之处。显示模块负责读入指定交通图像的像素数据,并将其显示在屏幕上。Sobel算子运算处理模块负责将读入的像素数据进行Sobel边缘检测运算,并将其做一定的效果处理,从而得到我们所要的交通图像的边缘提取结果。然后在利用显示模块对结果图像进行显示。
本程序是对256色灰度图进行边缘检测,若所需检测的图像复杂度增加,可依照要求,完善程序功能,加入一些模块和子函数,检测颜色数更多,尺度更大的图像。
提示:此毕业设计论文完整版包含【论文,源程序】 作品编号:txgc0536,word全文:46页,合计:17000字 |
本通信工程毕业设计论文作品由 毕业论文设计参考 [http://www.qflunwen.com] 征集整理——交通图像边缘检测程序设计(论文,源程序)!