一、实验目的
学习Canny边缘检测的原理,掌握图像的读取方法,并实现边缘检测。
二、实验原理
边缘检测
在数字图像中,边缘是指图像局部变化最显著的部分,边缘主要存在于目标与目标,目标与背景之间,是图像局部特性的不连续性,如灰度的突变、纹理结构的图标、颜色的图标等。尽管图像的边缘点产生的原因各不相同,但他们都是图形上灰度不连续或灰度急剧变化的点,图像边缘分为阶跃状、斜坡状和屋顶状。
边缘其实就是图像上灰度级变化很快的点的集合。计算的方法是通过导数和微分的方式。
边缘检测
导数:连续函数上某点斜率,导数越大表示变化率越大,变化率越大的地方就越是“边缘”,但是在计算机中不常用,因为在斜率90度的地方,导数无穷大,计算机很难表示这些无穷大的东西。
微分:连续函数上x变化了dx,导致y变化了dy,dy值越大表示变化的越大,那么计算整幅图像的微分,dy的大小就是边缘的强弱了。微分与导数的关系:dy = f ‘(x) dx。
![image.png](//file1.elecfans.com/web2/M00/B5/4C/wKgaomV6mBuAXhuLAAKT2n7IMq0234.png)
![image.png](//file1.elecfans.com/web2/M00/B5/4C/wKgaomV6mB-ASh9yAAKfupyj-pI159.png)
Canny 边缘检测
Canny边缘检测是从不同视觉对象中提取有用的结构信息并大大减少要处理的数据量的一种技术,目前已广泛应用于各种计算机视觉系统。边缘检测的一般标准包括:
(1)以低的错误率检测边缘,也即意味着需要尽可能准确的捕获图像中尽可能多的边缘。
(2)检测到的边缘应精确定位在真实边缘的中心。
(3)图像中给定的边缘应只被标记一次,并且在可能的情况下,图像的噪声不应产生假的边缘。
为了满足这些要求,Canny使用了变分法。Canny检测器中的最优函数使用四个指数项的和来描述,它可以由高斯函数的一阶导数来近似。
在目前常用的边缘检测方法中,Canny边缘检测算法是具有严格定义的、可以提供良好可靠检测的方法之一。由于它具有满足边缘检测的三个标准和实现过程简单的优势,成为边缘检测最流行的算法之一。
Canny 边缘检测算子是一个多级边缘检测算法,Canny 的目标是找到一个最优的边缘检测算法。最优边缘检测的含义是:
(1)最优检测:算法能够尽可能多地标识出图像中的实际边缘,漏检真实边缘的概率和误检非边缘的概率都尽可能小;
(2)最优定位准则:检测到的边缘点的位置距离实际边缘点的位置最近,或者是由于噪声影响引起检测出的边缘偏离物体的真实边缘的程度最小;
(3)检测点与边缘点一一对应:算子检测的边缘点与实际边缘点应该是一一对应。为了满足这些要求 Canny 使用了变分法(calculus of variations),这是一种寻找优化特定功能的函数的方法。最优检测使用四个指数函数项表示,但是它非常近似于高斯函数的一阶导数。
Canny 边缘检测的步骤
(1)应用高斯滤波来平滑图像,目的是去除噪声;
(2)找寻图像的强度梯度(intensity gradients);
(3)应用非最大抑制(non-maximum suppression)技术来消除边误检;
(4)应用双阈值的方法来决定可能的(潜在的)边界;
例如,双阈值t1和t2(t1≦t2),则大于t2的点肯定是边缘,小于t1的点肯定不是边缘。t1和t2之间的点,通过已经确定的边缘点,发起搜索,可到达的点是边缘,不可到达的点不是边缘。
(5)利用滞后技术来跟踪边界。
程序流程设计
程序流程设计中首先要读取工程目录下的BMP图像,接着进行边缘检测处理,最后保存处理后的图像。
![image.png](//file1.elecfans.com/web2/M00/FE/40/wKgaomaZzW-ANXF_AATdvrtBskg992.png)
视频分析与视觉库
VLIB 是一个TI 的软件库,可加速视频分析开发并将性能提高多达 10 倍。VLIB 是针对 C6x DSP 内核优化的可扩展库。包括的40 多个内核的集合可以实现背景建模与减法、对象特征提取、追踪与识别和低级像素处理。
包括适用于C64x+、C674x 和 C66x 处理器的 Windows 和 Linux 安装可执行文件。每个可执行文件安装一个组件包存储库、一个文档目录、一个 Eclipse 插件目录和一个扩展的组件目录结构,其中包含组件库、头文件和测试示例。
TMS320C6748处理器使用的是vlib_c674x_3_3_2_0。
vlib_c674x_3_3_2_0
将VLIB安装到CCS5.5 的安装路径,安装完成后会有相应的文件夹出现。源码所在路径:\vlib_c674x_3_3_2_0\packages\ti\vlib\src
![image.png](//file1.elecfans.com/web2/M00/B3/A5/wKgZomVn76yAN0-hAAbs7SITLNo730.png)
程序使用VLIB 的库来进行边缘检测,共调用了4个API接口,分别是高斯滤波处理、计算梯度、抑制非极大值和双阈值算法,调用的程序使用说明可以查看相关头文件。
![image.png](//file1.elecfans.com/web2/M00/FE/40/wKgaomaZzYuAEB1eAAVHD1wWgjI239.png)
本实验所需硬件为实验板、仿真器和电源。
![image.png](//file1.elecfans.com/web2/M00/FD/58/wKgZomaZzZGAbAW3AAV02NSmtAo846.png)
三、操作现象
硬件连接
(1)连接仿真器和电脑的USB接口,
(2)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。
![image.png](//file1.elecfans.com/web2/M00/FD/58/wKgZomaZzZ6AIPT7AAo-kRp3WIo878.png)
软件操作
导入工程,选择Demo文件夹下的对应工程
编译工程,生成可执行文件
将CCS连接实验箱并加载程序
程序加载完成后点击运行程序
运行程序后,CCS的Console窗口会打印相关信息。
稍等片刻后,图像处理完成,程序执行完成后会在断点处停下。
可以通过 CCS 的图像显示窗口查看处理前后的图片对比。
点击工具,选择图像分析工具。在弹出的 Image 窗口中右击鼠标,在弹出的菜单栏中选择"Import Properties",选择工程目录下的 in.txt 配置文件,选择后等待图片加载,加载完成后显示原图片。
txt 配置文件是提前配置好的图像属性,在 Properties 属性可看到 in.txt 文件的设置参数。
再次点击工具,选择图像分析工具。在弹出的 Image 窗口中右击鼠标,在弹出的菜单栏中选择"Import Properties",选择工程目录下的out.txt 配置文件,选择后等待图片加载,加载完成后边缘检测后的图片。
在 Properties 属性可看到out.txt 文件的设置参数。
同时,可在工程的Image 目录下直接查看转换后的图片 Out.bmp。
实验结束后,点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。
![image.png](//file1.elecfans.com/web2/M00/FD/58/wKgZomaZzaqAM2dkAAqNxT1k7DU684.png)