alinx001 发表于 2021-2-24 14:28:45

【紫光同创国产FPGA教程】【第十六章】SOBEL边缘检测例程

本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处(http://www.alinx.com)。适用于板卡型号:PGL22G/PGL12G1. 实验简介本实验将在例程“OV5640摄像头HDMI显示例程”的基础上实现视频图像边缘检测的实验。在很多应用场合,我们只需要采集到图像的棱廓特征的信息,而不需要全部的视频图像,这样就需要用到SOBEL边缘检测的算法。2. 实验原理2.1边缘检测原理和算法边缘是图像最基本的特征,其在计算机视觉、图像分析等应用中起着重要的作用,这是因为图像的边缘包含了用于识别的有用信息,是图像分析和模式识别的主要特征提取手段。在图像中,“边缘”指的是临界的意思。一幅图像的“临界”表示为图像上亮度显著变化的地方,边缘指的是一个区域的结束,也是另一个区域的开始。“边缘点”指的是图像中具有坐标,且处在强度显著变化的位置上的点。常用的边缘检测算法大多是以原始图像灰度值为基础,通过考察图像的每个像素的某个邻域内灰度的变化,利用边缘一阶或二阶导数的规律来检测边缘。下图左边为原始的黑白灰度的图像,通过边缘检测算法后变成了右边的图像。https://pic3.zhimg.com/80/v2-916ec207b0e54c7d903278f88ec0550e_720w.jpg实现边缘检测有很多不同的方法,也一直是图像处理中的研究热点,人们期望找到一种抗噪强、定位准、不漏检、不误检的检测算法。其中Sobel算子效果较好,边缘检测算法比较简单,实际应用中效率比canny边缘检测效率要高,但是边缘不如Canny检测的准确,但是很多实际应用的场合,sobel边缘却是首选,尤其是对效率要求较高,而对细纹理不太关心的时候。本实验就采用Sobel的算法来实现视频图像的边缘检测。2.2 sobel简介sobel是一个梯度的计算,如下图所示,是x和y方向的3x3窗口的卷积。https://pic4.zhimg.com/80/v2-f11cd5790f0bfdcba22b9050a3b561bb_720w.jpg梯度计算公式https://pic1.zhimg.com/80/v2-c6d5ab6dbc5bcee70fd03577c8f98ba8_720w.jpg,简化的近似计算https://pic4.zhimg.com/80/v2-32a8466d5c7c6f930466437e52b3ebdf_720w.jpg对于图像,如下图:P1到P9为3x3的9个像素点,简化公式计算:https://pic1.zhimg.com/80/v2-388477d7b2189bb9ad340fcb4a616c14_720w.jpghttps://pic1.zhimg.com/80/v2-39b82f9566566a5c7f8f969421993bc0_720w.jpg3x3图像窗口为了进一步简化计算,我们把算子进行简化,调整为如下所示https://pic4.zhimg.com/80/v2-33dc31f61ca346604587a1b368f7ae1f_720w.jpg3. 程序设计本实验的重点是sobel算法的实现,首先需要一个3x3的像素窗口,本实验利用xilinx提供的VHDL程序,做了一个3行的图像缓存,这样就可以轻松实现3x3的窗口。然后按照简化公式,采用绝对值的方式计算sobel。always@(posedge pclk)begin        x1 <={2'b00,p11}+{2'b00,p31}+{1'b0,p21,1'b0};        x3 <={2'b00,p13}+{2'b00,p33}+{1'b0,p23,1'b0};                y1 <={2'b00,p11}+{2'b00,p13}+{1'b0,p12,1'b0};        y3 <={2'b00,p31}+{2'b00,p33}+{1'b0,p32,1'b0};endalways@(posedge pclk)begin        abs_x <=(x1 > x3)? x1 - x3 : x3 - x1;        abs_y <=(y1 > y3)? y1 - y3 : y3 - y1;        abs_g <= abs_x + abs_y;end
计算完成以后,要进行简单的二值化处理,将sobel值和阈值对比,产生黑白的二值化图像。always@(posedge pclk)begin        data_out <=(abs_g > threshold)?8'h00:8'hff;end
4. 实验现象1)将摄像头模块插入开发板,保证1脚对齐,1脚在焊盘形状和其他引脚是有明显区别的,是方形的。https://pic3.zhimg.com/80/v2-0aac45e9b25c0c2fa9ca8ba6289d6b12_720w.jpgOV5640摄像头模块连接开发板连接图2)连接好HDMI显示器。3)下载实验程序,可以看到只有边沿信息的黑白视频输出。注意:ov5640模块焦距是可调的,如果焦距不合适,图像会模糊,旋转镜头,可以调节焦距。摄像头模块要轻拿轻放,不要用手触摸元器件。https://pic1.zhimg.com/80/v2-6d725385232b45cfc86304fff280975c_720w.jpg
页: [1]
查看完整版本: 【紫光同创国产FPGA教程】【第十六章】SOBEL边缘检测例程