halcon sobel边缘检测sobel_amp

目录

  • sobel_amp(算子)
    • 描述
    • 参数

sobel_amp(算子)

sobel_amp - 使用Sobel算子检测边缘(幅度)。

sobel_amp(图片:边缘图像:滤波器方式,掩膜大小:)

描述

sobel_amp计算图像的一阶导数,并用作边缘检测器。
过滤器基于以下过滤器掩码:

A =
1 2 1
0 0 0
-1 -2 -1

B =
1 0 -1
2 0 -2
1 0 -1
根据所选的过滤器类型,这些掩码的使用方式不同。 (在下文中,a和b表示将图像与A和B卷积为一个特定像素的结果。)
在这里插入图片描述
这里,thin(x)分别对应于垂直最大值(掩模A)和水平最大值(掩模B)的x,否则为0。因此,对于’thin_sum_abs’和’thin_max_abs’,渐变图像被稀疏化。
对于过滤器类型’x’和’y’,如果输入图像是byte类型,则输出图像的类型为int1,否则为int2类型。
对于尺寸为3x3的Sobel算子,直接应用相应的滤波器A和B,而对于较大的滤波器尺寸,首先使用尺寸为Size-2的高斯滤波器(参见gauss_image)或二项式滤波器(参见binomial_filter)对输入图像进行平滑处理。
为上述FilterType值选择高斯滤波器。这里,必须使用Size = 5,7,9,11或13。
通过将“_binomial”附加到FilterType的上述值来选择二项式过滤器。这里,可以在5到39之间选择大小。
此外,可以通过在Size中传递两个值来选择不同的平滑列和行方向的量。这里,Size的第一个值对应于掩模宽度(列方向上的平滑),而第二个值对应于二项式滤波器的掩模高度(行方向的平滑)。
二项式滤波器只能用于byte,uint2和real类型的图像。由于平滑减小了边缘幅度,在这种情况下,边缘幅度乘以因子2以防止信息丢失。因此,
sobel_amp(I,E,过滤式,S)

for Size > 3在概念上等同于

 scale_image(I,F,2,0)gauss_image(F,G,S-2)sobel_amp(G,E,FilterType,3)

or to

 scale_image(I,F,2,0)binomial_filter(F,G,S[0]-2,S[1]-2)sobel_amp(G,E,FilterType,3).

对于sobel_amp,实现了使用SIMD技术的FilterType =‘sum_abs’的特殊优化。这些特殊优化的实际应用由系统参数’mmx_enable’控制(参见set_system)。如果’mmx_enable’设置为’true’(并且SIMD指令集可用),则使用SIMD技术执行内部计算。请注意,SIMD技术在大型紧凑输入区域表现最佳。根据输入区域和硬件的功能,使用SIMD技术执行sobel_amp甚至可能比非使用SIMD技术花费更多时间。

sobel_amp可以在OpenCL设备上执行,用于过滤器类型’sum_abs’,‘sum_sqrt’,‘x’和’y’(以及它们的二项式变体)。请注意,当对Size> 3使用高斯过滤时,结果可能与CPU实现不同。

支持OpenCL计算设备。
多线程类型:可重入(与非独占运算符并行运行)。
多线程范围:全局(可以从任何线程调用)。
在元组级别自动并行化。
在通道级别自动并行化。
在域级别自动并行化。

参数

Image (input_object)(多通道 - )图像(-array)→对象(byte / int2 / uint2 / real)
输入图像。

EdgeAmplitude(output_object)(多通道 - )图像(-array)→对象(int1 / int2 / uint2 / real)
边缘幅度(梯度幅度)图像。

FilterType (input_control)string→(string)
过滤器类型。
默认值:‘sum_abs’
值列表:
‘sum_abs’,‘sum_abs_binomial’,‘sum_sqrt’,‘sum_sqrt_binomial’,‘thin_max_abs’,‘thin_max_abs_binomial’,‘thin_sum_abs’,‘thin_sum_abs_binomial’,‘x’,‘x_binomial’,‘y’,'y_binomial “
值列表(用于计算设备):
‘sum_abs’,‘sum_sqrt’,‘x’,‘y’,‘sum_abs_binomial’,‘sum_sqrt_binomial’,‘x_binomial’,‘y_binomial’

Size (input_control)整数(-array)→(整数)
滤波掩膜的大小。
默认值:3
值列表:3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39

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

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

相关文章

es中的一些知识点记录

1. forcemerge接口 强制段合并,设置为1时,是期望最终只有1个索引段。但实际情况是,合并的结果是段的总数会减少,但仍大于1,可以多次执行强制合并的命令。 设置的的目标值越小。合并消耗的时间会越久。 curl -XPOST htt…

用live555和ffplay搭建流媒体环境

用live555和ffplay搭建流媒体环境 http://bbs.chinavideo.org/viewthread.php?tid12166

如何才能优雅地书写JS代码

第一&#xff1a;关于匿名函数的使用 要避免全局变量泛滥&#xff0c; 可以考虑使用匿名函数&#xff0c; 把不需要在外部访问的变量或者函数限制在一个比较小的范围内。 例如以下代码&#xff1a; <script> function func1(){ var list ["a", "b",…

halcon hough_lines 霍夫直线变换

目录hough_lines&#xff08;算子&#xff09;描述参数hough_lines&#xff08;算子&#xff09; hough_lines - 借助Hough变换检测边缘图像中的线条并将其返回到HNF中。 hough_lines&#xff08;RegionIn :: AngleResolution&#xff0c;Threshold&#xff0c;AngleGap&…

通过border来实现各种三角符号

很长时间没有动笔了&#xff0c;最近学的东西很杂很乱&#xff01;又有点丢了西瓜捡芝麻&#xff0c;走马观花&#xff0c;瞻前顾后的感觉&#xff01; 因此&#xff0c;我决定一步步来&#xff0c;化繁为简&#xff0c;今天就从border入手。 很多时候我们都会需要一个三角形或…

MFC封装API

一、Win32Application Architecture 一个Win32 Application Architecture的代码结构如下&#xff1a; LRESULT CALLBACK WinWordsProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); //定义回调处理消息函数 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPr…

通过阅读 Douglas Crockford 的源码学习如何写 JSON parser(一)

JSON-js Douglas Crockford 是 JSON 的发明者&#xff0c;所以通过 DC 的代码来学习 JSON 和 parser 绝对是上乘之选。这个仓库里面有四个 JS 文件&#xff0c;今天我们先研究 json_parse.js。 json_parse 定义了如下 API&#xff1a; json_parse(string) > object json_par…

halcon gen_region_hline 绘制霍夫变换提取直线

目录gen_region_hline&#xff08;算子&#xff09;描述gen_region_hline&#xff08;算子&#xff09; gen_region_hline - 将霍夫变换提取直线以普通形式描述的输入行存储为区域。 gen_region_hline( : Regions : Orientation, Distance : ) 描述 运算符gen_region_hline…

H.264视频RTP负载格式/NALU的类型

1. 网络抽象层单元类型(NALU) NALU 头由一个字节组成, 它的语法如下: |0|1|2|3|4|5|6|7| |F|NRI| Type | F: 1 个比特. forbidden_zero_bit&#xff1a;在H.264规范中规定了这一位必须为0。 NRI: 2 个比特. nal_ref_idc&#xff1…

4.10下午

转载于:https://www.cnblogs.com/yanyuying/p/6690662.html

虚函数

1、基于向上类型转换&#xff0c;基类通过虚函数可以对多个子类相似的功能实现统一管理。 2、例子&#xff1a; A为基类&#xff0c;B、C为A的同级子类。virtual只需在基类中标识一次&#xff0c;子类无需重复标识。class A {virtual void display(){cout<<"我是A&q…

Android绘制(一):来用shape绘出想要的图形吧!

目录 前言shape绘制矩形椭圆线环用shape绘制SeekBar最后前言 在没有UI设计师的时候, 或者是想简单看下效果的时候, 用shape进行快速绘制是极好的! 官方文档. shape绘制 一共有四种shape: rectangle, oval, line, ring. 矩形 我们一个一个来看, 首先是矩形: <?xml version&q…

halcon sobel 边缘检测 sobel_dir

目录sobel_dir&#xff08;算子&#xff09;描述参数sobel_dir&#xff08;算子&#xff09; sobel_dir - 使用Sobel算子检测边缘&#xff08;振幅和方向&#xff09;。 sobel_dir(Image : EdgeAmplitude, EdgeDirection : FilterType, Size : ) 描述 sobel_dir计算图像的一…

静态链接库LIB和动态链接库DLL的区别 创建和示例

1.什么是静态连接库&#xff0c;什么是动态链接库静态链接库与动态链接库都是共享代码的方式&#xff0c;如果采用静态链接库&#xff0c;则无论你愿不愿意&#xff0c; lib 中的指令都全部被直接包含在最终生成的 EXE 文件中了。 但是若使用 DLL&#xff0c;该 DLL 不必被包含…

【译】x86程序员手册37-第10章 初始化

Chapter 10 Initialization 第10章 初始化 After a signal on the RESET pin, certain registers of the 80386 are set to predefined values. These values are adequate to enable execution of a bootstrap program, but additional initialization must be performed by s…

在ubuntu中安装minicom时出现device /dev/tty8 is locked解决办法

未正常关闭minicom yesaiduywf-ubuntu: ~$ ls /var/lock LCK..ttyS0 subsys yesaiduywf-ubuntu: ~$ kill 0 yesaiduywf-ubuntu: ~$ ls /var/lock subsys yesaiduywf-ubuntu: ~$ sudo minicom Welcome to minicom 2.3 或者删除/var/lock下面以LCK开头的文件转载于:https://www.…

秒杀多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别

本文将带领你与多线程作第一次亲密接触&#xff0c;并深入分析CreateThread与_beginthreadex的本质区别&#xff0c;相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别&#xff0c;在实际的编程中到底应该使用CreateThread还是…

halcon get_image_pointer1获取图像指针

目录get_image_pointer1&#xff08;算子&#xff09;描述参数get_image_pointer1&#xff08;算子&#xff09; get_image_pointer1 - 访问单通道图像的指针。 get_image_pointer1(Image : : : Pointer, Type, Width, Height) 描述 运算符get_image_pointer1返回指向图像I…

如何传输文件到linux服务器?

我们知道&#xff0c;云主机文件传输是一件相对复杂的事情&#xff0c;经常需要搭建FTP服务器或者是借助其他工具来完成。下面为大家介绍一种简单易操作的传输文件到Linux服务器的方法。 Linux文件传输同Windows文件传输一样&#xff0c;我们为每一台Linux主机配置了一个1G的网…

C++学习笔记(五)--指针、NULL、引用

1. C中已经定义了NULL为0:#define NULL 0 指针p可以指向空值NULL即 p NULL;表示该指针变量不指向任何变量。   注意&#xff1a;指针未初始化与指针为NULL不同&#xff0c;   p NULL;是有值的&#xff0c;为0&#xff1b;   而在定义时&#xff1a;int *p;这时候碎虽然…