Halcon —— 边缘检测算子详解

一、算子介绍

1.1 种类
halcon内常用的边缘检测算子包括如下几种:
1.edges_image: 提取2D 图像边缘
2.edges_sub_pix:提取2D图像亚像素边缘
3.edges_object_model_3d :提取3D图像边缘
4.edges_color和edges_color_sub_pix:提取彩色图像边缘
1.2 区别
edges_image可选择多种边缘检测算法来提取物体边缘,其与亚像素边缘算子的区别在于edges_image提取是以像素为单位的边缘特征,edges_sub_pix是以比像素还小的单位来提取的边缘,一般采用矩方法,插值法和拟合法。

二、详解

2.1 edges_image(Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : )

该算子内主要参数包括:
ImaDir(图像边缘方向,对sobel_fast算法无用,因为其不计算方向信息)
Filter(边缘算子,包括’canny’, ‘deriche1’, ‘deriche1_int4’, ‘deriche2’, ‘deriche2_int4’, ‘lanser1’, ‘lanser2’, ‘mshen’, ‘shen’, ‘sobel_fast’)
Alpha(过滤器参数,小的值导致强平滑,但是更少的细节(canny算子相反))
NMS(非最大值抑制(设置为none,表示不需要使用该值))
Low(滞后阈值操作的下阈值(如果不需要阈值设置,则为负值))
High(滞后阈值操作的上阈值(如果不需要阈值设置,则为负值))
2.2 边缘检测算法
对于算法来讲,目前canny算子是最稳定的边缘检测方法。
canny算法由边缘强度、边缘细化(NMS)、滞后阈值三个阶段组成。
首先,边缘强度的计算是计算图像梯度:梯度幅值矩阵、梯度方向矩阵:
1)图像灰度化
2)高斯滤波
3)sobel滤波器求出x,y方向上梯度图像,记为fx、fy
4)利用fx、fy求出梯度幅值和梯度的方向
5)此时的梯度方向为[-90,+90]之间的任意值,将它们规则化为四类种0、45、90、135度。
然后,计算非最大值抑制(NMS),我们根据已经规则化的方向矩阵中存储的方向先分类,之后比较相同方向上的三颗像素,确保中间像素的值最大,否则将它置零,最后得出了清洗过的梯度幅值矩阵。
最后,继续处理梯度幅值矩阵,根据设定高阈值high、低阈值low将图像分成三部分:
1.梯度幅值大于high的像素,将值置为255;
2.梯度幅值小于low的像素,将值置为0;
3.梯度幅值在中间的像素,用它的8邻域判断,邻域内若有值大于high,则将中间的像素置为255;
下面对涉及
下面结合程序对每种滤波算法进行演示讲解:

read_image (I, 'C:/Users/Administrator/Desktop/a.png')
dev_close_window ()
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
get_image_size (I, Width, Height)
dev_set_window_extents (0, 0, Width, Height)
rgb1_to_gray(I, GrayImage)
*dev_set_lut ('change2')
*设置滞后阈值为默认值
*滤波参数值Alpha
*设置滞后阈值必须大于0,小于255,值越小细节越多,但同时会带来很多不需要的边缘信息。
*值越大则会丢失边缘,很多边缘点值都会被设置为0。
edges_image(GrayImage, ImaAmp, ImaDir, 'canny', 1, 'nms', 20, 40)
dev_display(ImaAmp)

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【TensorFlow】——索引与切片

目录 1、利用index进行索引 2、利用“:”和“...”进行索引与切片 3、tf.gather()——对一个维度进行乱序索引 优势: 缺点: 例子 4、tf.gather_nd()——同时对多个维度进行索引 5、tf.boolean_mask()——通过布…

华硕(ASUS)X554LP笔记本一开机就进入aptio setup utility 问题的解决

某次因大意一直未插电,华硕(ASUS)X554LP笔记本后来没电关机。后来每次一开机就进入aptio setup utility界面,按F9调入默认配置,F10保存后退出,重启仍然进入aptio setup utility。 网上查了一下,…

redis和memcached缓存

memcached memcache开源的,高性能,高并发分布式内存缓存系统,天生支持集群 memcached下载地址: http://memcached.org/downloads python实现memcached缓存 pip3 install python-memcached import memcache aamemcache.Client(["10.0.0.2…

C# —— 进程与线程的理解

定义 进程 进程(Process)是Windows系统中的一个基本概念,它包含着一个运行程序所需要的资源。一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。 程序是在特定操作系统上的可执行文件&#xff0c…

git安装和初步使用

基本参照以下链接: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000 注意: (1)每台电脑对于github来说都有对应的ssh密钥,…

【TensorFlow】——broadcast_to(在不复制内存的情况下自动扩张tensor)

目录 作用: 内在的思路 优点 什么时候可以broadcast ​ tf.boradcast_to .VS tf.tile 作用: 在不会实际意义上复制数据的情况下进行tensor的维度和形状的扩张,使得两个tensor维度和形状一致 对两个维度不一致的tensor进行加减前进行br…

20145212 《信息安全系统设计基础》第2周学习总结

20145212 《信息安全系统设计基础》第2周学习总结 教材学习内容总结 Vim基本操作 1.使用vim命令进入vim界面vim后面加上你要打开的已存在的文件名或者不存在(则作为新建文件)的文件名。 打开Xfce终端,输入以下命令$ vim practice_1.txt 直接使…

Opencv—— 拟合直线

概念 最小二乘法是勒让德( A. M. Legendre)于1805年在其著作《计算慧星轨道的新方法》中提出的。 最小二乘法就是通过最小化误差的平方和,使得拟合对象无限接近目标对象。在图像处理中主要用于拟合线,通过求采样点距离误差最小的线,可以是直…

本地搭建Dubbo监控中心的安装步骤

Dubbo监控中心的安装步骤 参考链接:http://blog.csdn.net/lichunan/article/details/40349645 一、从github上下载dubbo源码进行编译: 1、下载地址为: https://github.com/alibaba/dubbo.git2、编译源码命令:首先进入~/dubbo&am…

(转)SQLServer实例讲解

欢迎和大家交流技术相关问题: 邮箱: jiangxinnju163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://github.com/jiangxincode 知乎地址: https://www.zhihu.com/people/jiangxinnju 实例就是一个在数据库中存在的,现实的数据…

Basler相机SDK相关问题收集与知识汇总

1.心跳时间导致报错 此心跳非彼心跳,相机心跳是指过通过设置一个时间用于监测相机和网卡的连接,如果超过这个时间,相机就会释放跟网卡的连接,进入一种允许相机被再次连接的状态。 但此方式会导致相机SDK报错,经常显示在使用中,无可用连接,如何解决? 1.干等。不可取 2.…

14-会场安排问题

会场安排问题 时间限制:3000 ms | 内存限制:65535 KB难度:4描述学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动,…

【TensorFlow】——实现minist数据集分类的前向传播(常规神经网络非卷积神经网络)

目录 一、常规神经网络模型 二、TensorFlow实现前向传播步骤 1、读取数据集 2、batch划分 3、根据神经网络每一层的神经元个数来初始化参数w,b 4、进行每一层输入输出的计算 5、对每一层的输出进行非线性relu函数变换 6、计算一个batch训练后的误差loss 7、计算每一次…

大道至简第二章

懒人造就了方法 开头说的,有一个人叫李冰也要移山,可是他却要用和愚公截然不同的方法,那就是用“烧”的方法来碎石,那么这样的好处就是省力。那么他又是怎样想到的办法的呢,就是生活中仔细观察他老婆做饭时水溢出是石头…

C# 回调函数详解

回调和回调函数是什么 软件模块之间存在着接口,而回调是一种双向调用模式,被调用方在接口被调用时也会调用对方的接口。 对于一般的结构化语言,可以通过回调函数来实现回调。回调函数是一个函数或过程,是一个由调用方自己实现&am…

神经网络(11)--具体实现:unrolling parameters

我们需要将parameters从矩阵unrolling到向量,这样我们就可以使用adanced optimization routines. unroll into vectors costFunction与fminunc里面的theta都是n1维的向量,costFunction的返回值gradient也是n1维的向量。 但是当我们使用神经网络时&#x…

[转]ASP.Net篇之Session与Cookie

本文转自:http://www.cnblogs.com/japanbbq/archive/2011/08/31/2160494.html Session: Session是“会话”的意思,然而,因为http协议是无状态的,那么每次客户端请求服务器端,服务器端都会以“崭新”的页面展示给客户端…

C# 接口详解

概念 接口描述的是可属于任何类或结构的一组相关行为,所以实现接口的类或结构必须实现接口定义中指定的接口成员。 定义:使用interface 关键字,由方法、属性、事件、索引器或这四种成员类型的任意组合构成。另可使用new、public、protected、…

js学习之地图生成

首先,上地图图片 接着,js,我们可以把图片看成一块块32*32像素的 var i; var j;window.onload function () {gamemap(15, 10, 10, "map.jpg"); }var mapimg new Image(); var map [[18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,…