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.pswp.cn/news/256328.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256328.shtml
英文地址,請注明出處:http://en.pswp.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,…