soble边缘检测算法的verilog实现-程序员宅基地

技术标签: FPGA  

    先来说说soble算子,soble算子是一种离散性差分算子,用来运算图像亮度函数的灰度的近似值,在图像的任何一点使用这个算子,会得到对应的灰度矢量或法矢量。

     SOBLE算子的卷积因子为:
soble算子包含两组3*3的矩阵,分别为横向和纵向,将 Gx 和 Gy 与图像做 卷积,即可分别得出横向和纵向的亮度差分近似值,如果用A表示原始图像,Gx 和 Gy 分别代表经横向和纵向边缘检测的图像灰度值,公式如下:

图像每一个像素的横向和纵向灰度值通过一下公式结合,来计算该点灰度的大小:

通常,为了提高效率,使用不开平方的近似值,但是这样做会损失精度,迫不得已的时候可以这样做:

就是这个G就是判断条件,如果梯度G大于某一阈值(THRESHOLD),则认为该点(X,Y)为边缘点。可以使用下面公式计算梯度方向(如果只是边缘检测则不需要计算方向)

soble算子的verilog实现,可以划分为4个步骤,解析和实现分别如下:
(1)计算Gx, Gy与3*3像素阵列每行的乘积。
以上是例化生成3*3矩阵的模块,下面的代码是计算Gx, Gy。(2个clk)
 
这个理解起来不难,比较简单,先用一个时钟计算3*3矩阵每行的像素乘积,再求的卷积后的Gx,Gy,因此消耗了两个时钟。
(2)求Gx^2+Gy^2的结果,及Gx与Gy的平方和。(1个clk)
这一步直接通过veilog中的乘法器的描述来实现,综合时会自动布线为片内乘法器,如下。
(3)求Gx^2+Gy^2的平方根。(1个clk)
强大的ALTERA在QII软件中提供了平方根的IP核,如下所示。
下面给出SQRT的例化代码:
(4)根据外部输入阈值,判断并实现边缘的检测。(1个clk)
将post_bit_r扩展到8bit, ~{8{post_bit_r}}, 检测到的边缘为黑色。

soble_threshold 是外部输入的一个人为设定的阈值。
(5)前面几步对图像数据的处理总共消耗了5个时钟,因此图像阵列的同步信号需要延迟5个时钟。

以上就完成了Soble 算子的HDL移植。是不是很简单?真的不难。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dongdongnihao_/article/details/80775969

智能推荐

idea项目debug启动慢,打包慢_idea debug启动很慢-程序员宅基地

文章浏览阅读4.4k次,点赞3次,收藏2次。idea项目debug慢,打包慢_idea debug启动很慢

MongoDB系列之适用场景和不适用场景_mongodb的优缺点及应用场景-程序员宅基地

文章浏览阅读4.1k次,点赞3次,收藏5次。MongoDB是一款开源的分布式架构的NoSQL数据库管理系统。对于需要复杂 SQL 查询的问题。MongoDB是不太适合的,在技术选项上需要根据业务场景和公司实际情况选择合适的数据库,关系型数据库和NoSQL数据库各有优缺点,应该根据实际场景合理选择数据库..._mongodb的优缺点及应用场景

vs解决方案和项目工程_vs的解决方案和项目什么关系-程序员宅基地

文章浏览阅读5.6k次,点赞21次,收藏81次。文章目录解决方案和项目文件夹的包含关系解决方案下的文件都有什么?解决方案(fangan.sln)文件参考链接解决方案和项目文件夹的包含关系  假设新建一个项目ssyy1,解决方案起名fangan,注意解决方案包括项目,此时生成的最外层目录为fangan代表整个解决方案的内容都在这个文件夹内。在这个fangan文件夹内包含有fangan.sln的解决方案配置文件和一个ssyy1文件夹,ssyy1..._vs的解决方案和项目什么关系

网站被劫持方式汇总_劫持网站有技术员联系方式吗-程序员宅基地

文章浏览阅读3k次,点赞3次,收藏4次。网站劫持检测1、检测网站是否被劫持2、域名是否被墙3、DNS污染检测4、网站打开速度检测5、网站是否被黑、被入侵、被改标题、被挂黑链【深度检测】1、可以检测多层js劫持、图片劫持、FLASH劫持、地区电信劫持、DNS劫持、域名被墙、DNS污染2、可以获取严重占用加载时间的JS或者图片、css等html所用文件3、不支持搜索引擎快照劫持检测最长等待时间为10分钟。 此项选..._劫持网站有技术员联系方式吗

IE8提示JS错误(KB927917)终极解决方法_ie8打开网页提示js错误-程序员宅基地

文章浏览阅读1.2w次。IE8中会报HTML Parsing Error: Unable to modify the parent container element before the child element is closed (KB927917)这个错误。将JS代码或引用文件放入页面底部的body之后,这样代码在body被解释之后执行,就不会出现这个错误了。DatePicker控件目前会有_ie8打开网页提示js错误

automake,autoconf使用详解_automake autoconf-程序员宅基地

文章浏览阅读225次。本文地址: http://www.laruence.com/2009/11/18/1154.html文章转自: http://www.linuxcomputer.cn/作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就_automake autoconf

随便推点

linux安装python3.7_python3.7 安装 linux-程序员宅基地

文章浏览阅读630次。这里用到的Linux系统是centos7系统,centos7是自带py的但是py的2.7.5版本 连接服务器的使用的是SSH Secure shell1.首先安装依赖包1)安装gcc编译器  gcc编译器有些系统版本已经默认安装了,可以通过 gcc --version进行查看     安装gc..._python3.7 安装 linux

BootStrap3.X模态框垂直居中显示_bootstrap3 弹出框 垂直居中-程序员宅基地

文章浏览阅读9.5k次。当点击按钮时modal的位置看起来很不舒服, 解决办法总结有两: 1.使用modal 弹出事件方法;   从官方文档中可以了解到, modal组件有不少事件接口: 其中 “shown.bs.modal”可以在弹窗框出现后 做一些处理, 更改弹出框的样式当然是可以的: script type="text/javascript"> $(_bootstrap3 弹出框 垂直居中

P4 开发实践 — 软件 DSL 架构_p4 dsl-程序员宅基地

文章浏览阅读1.1k次。P4 实现了一种 Programmable Match-Action Pipeline(流水线可编程)架构,作为 Pipeline,就是:开发者可以自定义 Match Fields、自定义 Action Type、从而实现自定义的 Match-Action Table,再由多张这样的 Tables 进而形成一条 Pipeline。_p4 dsl

【Unity实战篇 】| 2.5D游戏是如何做出来的呢,2.5D游戏快速制作教程_unity 开发2.5d游戏-程序员宅基地

文章浏览阅读4.5w次,点赞80次,收藏158次。玩过游戏的朋友都知道,市面上最常见的游戏多数分为2D和3D两种。2D和3D游戏之间的差异大家都知道,一个是类似纸片游戏属于二维层面,另一个则是在3D立体空间中游玩。其中还夹杂着一个2.5D游戏,本篇文章就来讲一下怎么通过Unity进行2.5D游戏是怎样的以及如何制作2.5D游戏。制作方法很简单,文中使用到了Tile Map Editor制作2D地图,通过控制相机角度来形成伪3D来制作2.5D效果的游戏。下面就一起来看看到底是怎样制作的吧!_unity 开发2.5d游戏

汇编实验——分类统计字符个数count_char_汇编分类统计字符个数-程序员宅基地

文章浏览阅读6.3k次,点赞3次,收藏9次。;************************************************************实验代码datarea segment mess1 db 'Please enter character string : ',13,10,'$'_汇编分类统计字符个数

大数据岗位秋招面试八股文总结(不定时更新)_大数据面试八股文-程序员宅基地

文章浏览阅读1.3k次。第一次是局部聚合,先给每个key都打上一个随机数,比如10以内的随机数,此时原先一样的key就变成不一样的了,比如(hello, 1) (hello, 1) (hello, 1) (hello, 1),就会变成(1_hello, 1) (1_hello, 1) (2_hello, 1) (2_hello, 1)。然后将各个key的前缀给去掉,就会变成(hello,2)(hello,2),再次进行全局聚合操作,就可以得到最终结果了,比如(hello, 4)。分区表按照分区字段的值进行分割,容易产生数据倾斜。_大数据面试八股文

推荐文章

热门文章

相关标签