Halcon閾值分割方法簡析

1. 基于直方圖的自動閾值分割

1.1 關鍵算子

auto_threshold(Image : Regions : Sigma : ):使用多閾值分割單通道圖像。
首先,計算圖像的灰度直方圖。
然后,使用標準差為Sigma的一維高斯濾波器對直方圖進行濾波。
進而,從直方圖中提取相關灰度極小值,依次作為閾值操作的參數。每個灰度值區間生成一個區域。因此,區域的數目就是極小值數加一。

binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
全局自動閾值分割,對灰度直方圖存在兩個波峰按照不同的方法進行分割。
1: 計算圖像的灰度直方圖。
2:使用max_separability方法(最大限度可分OTSU),適用于直方圖存在兩個波峰的情況,即圖像前景背景的有明顯區別。方法是利用統計矩找到將像素分割為前景和背景的最優閾值,并最大化這兩個類之間的可分性。此方法僅適用于byte和uint2圖像。
3:smooth_histo方法(直方圖平滑),直方圖提取最小值,作為閾值操作的參數。為了減少最小值,直方圖用高斯函數平滑處理。在平滑直方圖中,掩模尺寸增大,直到找到最小值。然后,閾值設置為這個最小值的位置。
LightDark:表示提取的是黑色部分還是白色部分。

threshold(Image : Region : MinGray, MaxGray : )
根據圖像的灰度確定閾值進行分割。用于物體與背景存在明顯灰度差的圖像。

fast_threshold(Image : Region : MinGray, MaxGray, MinSize : )
快速全局閾值分割。灰度值滿足MinGray<=g<=MaxGray則分割為一個區域,為了節省時間按兩步執行。
第一,先處理行列間隔Minsize的所有像素點。
第二,處理上一步選擇點的領域。

2.局部自動閾值分割

2.1 關鍵算子

dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )
實際項目中由于圖像背景不一致,目標經常表現為比背景局部亮一些或暗一些,無法通過全局閾值操作進行分割,這時需要通過求原像素值與濾波后像素值的差找到一個局部閾值進行分割。
其方法為:
1:將OrigImage進行濾波平滑處理,得到ThresholdImage 。
2:用OrigImage和ThresholdImage 逐像素進行比較,根據參數Offset(鄰域比較的區間范圍)和LightDark分割出相關區域。
當選擇light時,就篩選出相對參考圖更亮的區域,dark相反。選equal時,選取和參考圖差不多的區域。

var_threshold(Image : Region : MaskWidth, MaskHeight, StdDevScale, AbsThreshold, LightDark : )
該算子為基于圖像均值和標準偏差的局部閾值分割,能夠較好的分開目標和背景。
MaskWidth、 MaskHeight:掩膜單元;
StdDevScale:標準差乘數因子;
AbsThreshold:絕對閾值;
LightDark:表示希望分割的灰度值亮弱。
具體方法:用掩膜區域遍歷整幅圖像,與原始圖像的區域灰度值進行對比,當原圖灰度比掩膜區域的灰度均值低(0.2,12)個灰階時,即可分割出該區域。
1、當標準差因子StdDevscale>=0時, v(x.y)取(StdDevscale標準差)和AbsThreshold中較大的那個 ;
2、當標準差因子StdDevScale<= 0時, v(xy)取(StdDevscale
標準差)和AbsThreshold中較小的那個。

watersheds_threshold(Image : Basins : Threshold : )
分水嶺算法。
1:通過分水嶺算法watersheds()獲取圖像的盆地。
2:若盆地部分的灰度小于設定的閾值Threshold,則被合并到一起。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256240.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256240.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256240.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GSM BTS Hacking: 利用BladeRF和開源BTS 5搭建基站

GSM BTS Hacking: 利用BladeRF和開源BTS 5搭建基站 引文 如果你已經購買了Nuand&#xff08;官方&#xff09;BladeRF x40&#xff0c;那么就可以在上面運行OpenBTS并可以輸入一些指令來完成一些任務。一般來說HackRF&#xff0c;是一款覆蓋頻率最寬的SDR板卡。它幾乎所有的信息…

夜深人靜,想規劃一下短期

截止寫到這里的時候&#xff0c;已經是農歷的十一月初六了&#xff0c;算算時間&#xff0c;距離過年也不太遙遠了。就只有短短50多天左右。 很多事想做沒有時間&#xff0c;很多程序要改&#xff0c;沒有時間&#xff1b;很多想法想付諸行動&#xff0c;總是半途而廢。時間久這…

【圖像處理】——Python+opencv實現提取圖像的幾何特征(面積、周長、細長度、區間占空比、重心、不變矩等)

轉載請注明詳細地址本文簡單介紹了圖像常見幾何特征的概念以及求解方法本文介紹了Python和opencv求解幾何特征的常用方法目錄 其他形狀外接輪廓的方法可以參考:《OpenCV-Python——第17.3章:輪廓形狀擬合(邊界矩形,最小外接圓...)及性質》 一、獲得輪廓 二、面積 1、c…

Linux 中斷處理淺析

最近在研究異步消息處理, 突然想起linux內核的中斷處理, 里面由始至終都貫穿著”重要的事馬上做, 不重要的事推后做”的異步處理思想. 于是整理一下~第一階段&#xff0d;&#xff0d;獲取中斷號每個CPU都有響應中斷的能力, 每個CPU響應中斷時都走相同的流程. 這個流程就是內核…

C#中泛型的相關知識點總結

一、概念 1.1 泛型 泛型是什么&#xff1f; 書本告訴我們泛型是通過通過參數化類型的方法在同一份代碼上對多種數據類型進行調用。也即是說&#xff0c;如果同一個代碼需要使用不同的數據類型的話就可以定義一個泛型的類或者方法。 泛型的優點是什么&#xff1f; 1.通過使用…

用scikit-learn研究局部線性嵌入(LLE)

1. scikit-learn流形學習庫概述 在scikit-learn中&#xff0c;流形學習庫在sklearn.manifold包中。里面實現的流形學習算法有&#xff1a; 1&#xff09;多維尺度變換MDS算法&#xff1a;這個對應的類是MDS。MDS算法希望在降維時在高維里樣本之間的歐式距離關系在低維可以得到保…

判斷字符串中是否為數字的三種方法

//1用JAVA自帶的函數 public static boolean isNumeric(String str){for (int i str.length();--i>0;){ if (!Character.isDigit(str.charAt(i))){return false;}}return true;}//2用正則表達式 public static boolean isNumeric(String str){ Pattern pattern Pattern.…

【圖像處理】——Python+opencv實現圖像的hu不變矩特征提取(含原理、推導過程、應用、代碼等)

目錄 轉載本文請注明詳細地址本文介紹了矩和圖像矩的含義本文介紹了不變矩的計算、應用本文介紹了如何計算圖像相似度一、思維導圖 二、普通矩的定義 1、零階矩 2、二階矩

MSSQL-to-MySQL v5.3, 從MSSQL遷移到mySQL的最佳工具

將現有的MSSQL數據庫遷移到MySQL數據庫,嘗試了很多種工具 MySQL Workbench / MSSQL to MySQL Export / DB Converter / openDBcopy 都有這樣那樣的問題。 最后發現就MSSQL-to-MySQL好一點&#xff0c;能夠保證所有表和數據成功遷移&#xff0c;并且字段類型都比較正確。 只是對…

C#窗體應用程序崩潰解決方法總結

一、內存不足 內存是最常見的導致程序崩毀的原因&#xff0c;常用解決方式有如下幾種。 算法中聲明的占內存較大的全局變量或類中聲明的私有變量在循環或運行結束后需進行釋放&#xff0c;手動設置Dispose()&#xff0c;然后GC.Collect()。對一些重復調用的類避免多次實例化。…

【學習的心得】——“快餐”的效率與“挖掘”的重要性

從事Python圖像處理和機器學習方向已經有大半年了&#xff0c;現在作為還是一個研究生的我&#xff0c;大部分時間都是在完成老師給的課題任務&#xff0c;但是這幾個月下來我感覺和老師的意見有點分歧了甚至跟一些同學都有所意見分歧了。 Python雖然是最近幾年火起來的語言&a…

Unity3D Input按鍵系統

默認輸入軸&#xff1a; Horizontal 和 Vertical被映射到w, a, s, d鍵和方向鍵 Fire1, Fire2, Fire3被分別映射到Ctrl&#xff0c;Option&#xff08;Alt&#xff09;和Command鍵 Mouse X 和 Mouse Y被映射到鼠標移動增量 Window Shake X 和 Window Shake Y 被映射到窗口的移動…

iOS app 企業內部發布及HTTPS服務器配置

轉自: http://www.cnblogs.com/cocoajin/p/4082488.html iOS企業內部發布及HTTPS服務器配置 一&#xff1a;所需的條件 1. 蘋果開發者證書&#xff0c;企業版 299$ 版本 2. ssl 證書&#xff0c;即https使用的服務器證書 3. web服務器&#xff0c;支持https 4. 一個域名&#x…

Pytorch超簡單安裝教程

安裝Pytorch 1.1 安裝Annaconda 安裝Pytorch首先需要安裝Annaconda&#xff0c;按照教程&#xff0c;安裝了Annaconda5.2.0的版本。 路徑 記住安裝路徑即可&#xff0c;其余均選默認。 1.2 安裝Pytorch 第一步&#xff0c;打開Anaconda Prompt 。然后輸入 conda create -n…

【圖像處理】——紋理特征提取方法(LBP局部二值模式和GLCM灰度共生矩陣)

紋理特征提取方法 局部二值模式(LBP) (結構法) Local binary patterns 原理 將像素點的鄰域八個像素點與中心像素點值進行比較,大于設為1,小于設為0,這樣就會得到一個鄰域值為1和0的格子,將這八個值按照一定的規則排列成一個二進制的數字,并且轉換為十進制作為中心像…

44. 源代碼解讀-RocketMQ-架構

1. 前言 1.1 github源代碼 https://github.com/apache/rocketmq 1.2 github其他客戶端&#xff0c;比如c,php https://github.com/apache/rocketmq-externals 1.3 運行進程 RocketMQ分成兩個進程運行 NamesrvBrokerNamesrv&#xff0c;命名服務&#xff0c;主要負責Broker狀態管…

jquery檢測瀏覽器類型

使用jquery如下代碼檢測瀏覽器版本時&#xff1a;出問題&#xff0c;在檢測IE瀏覽器&#xff0c;如果版本是IE11時&#xff0c;會出現 $.browser.msie的返回值是false&#xff0c;$.browser.mozilla的返回值是true&#xff0c;即把IE11檢測成火狐了 結局辦法 判斷IE瀏覽器用 …

【leetcode?python】 9. Palindrome Number

#回文數#Method1&#xff1a;將整數轉置和原數比較&#xff0c;一樣就是回文數&#xff1b;負數不是回文數#這里反轉整數時不需要考慮溢出&#xff0c;但不代表如果是C/C等語言也不需要考慮class Solution(object): def isPalindrome(self, x): """ …

Pytorch基礎(一) —— tensorboard的應用

一、簡介與安裝方法 1.1 概念 Tensorboard 是 TensorFlow 的一個工具包&#xff0c;用于展示網絡圖、張量的指標變化和分布情況&#xff0c;如權重W、偏置B、卷積層數、全連接層數等參數&#xff0c;使用該工具可以方便觀察神經網絡訓練過程&#xff0c;分析學習模型訓練的效…

“RuntimeWarning: overflow encountered in ubyte_scalars像素加減運算溢出異常”原因以及解決辦法

轉載本文請注明詳細地址本文介紹了像素點相加減溢出的原因與解決方法 目錄 原因&#xff1a; 解決方法&#xff1a; 原因&#xff1a; 這個問題一般是會出現在圖像處理像素的加減中&#xff0c;出現的原因是因為圖片的像素一般是八位即最大值是256&#xff0c;最小值是0&…