1. 程式人生 > >Halcon學習筆記_04:劃痕、油汙、瑕疵

Halcon學習筆記_04:劃痕、油汙、瑕疵

【轉自:J-A:感謝博主分享

劃痕、油汙、瑕疵,常用的方法有傅立葉變換和Blob分析。
1.表面劃痕

invert_image(Image,ImageInvert1) 
mult_image(ImageInvert1, ImageInvert1, ImageResult,0.01, 0) 

gen_sin_bandpass (ImageBandpass, 0.6, 'none', 'rft', Width, Height)
rft_generic (ImageResult, ImageFFT, 'to_freq', 'none', 'complex', Width) 
convol_fft (ImageFFT, ImageBandpass, ImageConvol) 
rft_generic (ImageConvol, Lines, 'from_freq'
, 'n', 'byte', Width) texture_laws (Lines, ImageTexture, 'el',3, 5)

為更好的突出前景,一般情況下要求背景顏色較深,可以先用invert_image運算元進行灰度值轉換。之後的影象相乘,是將對比度進一步擴大。

生成一個正弦形狀的帶通濾波器,可以去除影象中的噪聲。然後傅立葉變換凸顯出要檢測的劃痕。

texture_laws是紋理濾波,適用於布匹表面的劃痕,是整個演算法的關鍵所在。
2.亮點、暗點

*找到亮點
mean_image (ImageScaleMax, ImageMean, 9, 9)
dyn_threshold(ImageScaleMax,ImageMean,RegionDynThresh,5
,'light' )
connection(RegionDynThresh,ConnectedRegions) *找到暗點 mean_image(ImageScaleMax,ImageMean,7,7) dyn_threshold(ImageScaleMax,ImageMean,RegionDynThresh1,5,'dark' ) connection(RegionDynThresh1,ConnectedRegions1)

平滑,動態閾值分割。
3.表面金屬傷疤

* 加強影象的對比度
emphasize(Image,ImageEmphasize,Width, Height, 5)
threshold(ImageEmphasize, Region, 0, 5) fill_up(Region, RegionFillUp2) connection(RegionFillUp2, ConnectedRegions1) select_shape(ConnectedRegions1, SelectedRegions2, 'area', 'and', 55000, 60000) closing_circle(SelectedRegions2, RegionClosing, 13.5)

通過emphasize運算元,增強影象對比度,當然前景的突出不僅僅只用這種方法。
4.油汙

Sigma1 := 30.0 
Sigma2 := 5.0 
gen_gauss_filter (GaussFilter1, Sigma1, Sigma1, 0.0, 'none', 'rft', Width, Height) 
gen_gauss_filter (GaussFilter2, Sigma2, Sigma2, 0.0, 'none', 'rft', Width, Height) 
sub_image (GaussFilter1, GaussFilter2, Filter, 1, 0) 
rgb1_to_gray (Image, GrayImage) 
rft_generic (Image, ImageFFT, 'to_freq', 'none', 'complex', Width) 
convol_fft (ImageFFT, Filter, ImageConvol) 
rft_generic (ImageConvol, ImageFiltered, 'from_freq', 'n', 'real', Width) 
scale_image_range (ImageFiltered, ImageScaled, 0, 255) 

與表面劃痕相似,通過兩次高斯濾波,結合傅立葉變換。scale_image_range運算元的作用:Scale the gray values of an image from the interval [Min,Max] to [0,255]。可以將油汙的灰度值凸顯出來。

相關推薦

Halcon學習筆記_04劃痕油汙瑕疵

【轉自:J-A】:感謝博主分享 劃痕、油汙、瑕疵,常用的方法有傅立葉變換和Blob分析。 1.表面劃痕 invert_image(Image,ImageInvert1) mult_image(ImageInvert1, ImageInvert1,

csdn學習筆記連結串列原型do原型分析

設計連結串列,並設計其迭代函式 生成連結串列、列印連結串列 arr = {10, 20, 30, 100, 101, 88, 50}; head = nil; local i = 1 while true do if arr[i] then head = {va

csdn學習筆記meta元表元方法 __index, __newindexrawsetrawget

重要:在表和元表的__index 和 __newindex 都沒有需要操作的key時,賦值table操作會呼叫__newindex, 取值操作會呼叫__index    元表設定setmetatable t1 = {}; t2 = {}; print("t1=",

Java學習筆記1計算機基礎知識java語言基礎。

一、計算機基礎知識 1、 計算機是一種能夠按照程式執行,自動、高速處理海量資料的現代化智慧電子裝置。由硬體和軟體所組成,沒有安裝任何軟體的計算機稱為裸機。常見的形式有臺式計算機、筆記本計算機、大型計算機等。 硬體通常由CPU、主機板、記憶體、電源、主機箱、硬碟、顯示卡、鍵盤、滑鼠,顯示器等多

Java學習筆記總結JAVA中StringStringBuilderStringBuffer類的區別

不斷地學習,不斷地填充自己的技術庫,學習Java已經有一段時間了,由一開始的不適應到後來的足以靈活應對,不僅僅取決於老師的精緻講課,還有就是依靠我的學習祕籍:記錄自己的學習筆記。今天給大家分享的技術學習筆記是JAVAString,StringBuilder以及StringBuffer這三個類之間的區

csdn學習筆記meta元表元方法 __index, __newindexrawsetrawget

重要:在表和元表的__index 和 __newindex 都沒有需要操作的key時,賦值table操作會呼叫__newindex, 取值操作會呼叫__index  元表設定setmetatable t1 = {}; t2 = {}; print("t1=",t1);

深度學習筆記1end-to-endanchor box解釋人體檢測程式碼

非end-to-end方法: 目前目標檢測領域,效果最好,影響力最大的還是RCNN那一套框架,這種方法需要先在影象中提取可能含有目標的候選框(region proposal), 然後將這些候選框輸入到CNN模型,讓CNN判斷候選框中是否真的有目標,以及目標的類別是什麼。在我們看到的結果中,往往是類似與下圖這種

Halcon學習筆記之缺陷檢測(布匹皮革塑料)

例程:detect_indent_fft.hdev說明:這個程式展示瞭如何利用快速傅立葉變換(FFT)對塑料製品的表面進行目標(缺陷)的檢測,大致分為三步:首先,我們用高斯濾波器構造一個合適的濾波器(將原圖通過高斯濾波器濾波);然後,將原圖和構造的濾波器進行快速傅立葉變換;最

Odoo10學習筆記模型(結構化的應用數據)視圖(用戶界面設計)

其他 描述 用戶界面 列表 支持 字段 界面設計 允許 學習 一:模型 1:創建模型 模型屬性:模型類可以使用一些屬性來控制它們的一些行為: _name :創建odoo模型的內部標識符,必含項。 _description :當用戶界面顯示模型時,一個方便用戶的模型記錄標題。

hibernate框架學習筆記4主鍵生成策略對象狀態

alt rri gen 線程安全 理論 微軟 unit conf lose 創建一個實體類: package domain; public class Customer { private Long cust_id; private Stri

hibernate框架學習筆記7HQL查詢Criteria查詢

import res ber return org close 返回 closed 所有 HQL查詢:hibernate獨有的查詢語言 適用於不復雜的多表查詢 示例: 實體類: package domain; public class Customer {

分散式學習筆記從分散式一致性談到CAP理論BASE理論

問題的提出 在電腦科學領域,分散式一致性是一個相當重要且被廣泛探索與論證問題,首先來看三種業務場景。 1、火車站售票 假如說我們的終端使用者是一位經常坐火車的旅行家,通常他是去車站的售票處購買車 票,然後拿著車票去檢票口,再坐上火車,開始一段美好的旅行----一切似乎都是那麼和諧。想象一

Kali學習筆記31目錄遍歷漏洞檔案包含漏洞

文章的格式也許不是很好看,也沒有什麼合理的順序 完全是想到什麼寫一些什麼,但各個方面都涵蓋到了 能耐下心看的朋友歡迎一起學習,大牛和槓精們請繞道   目錄遍歷漏洞: 應用程式如果有操作檔案的功能,限制不嚴格會導致可以訪問到WEB目錄意外的檔案 目錄遍歷漏洞和檔案包含漏洞本質以及利用方法一

odoo10學習筆記繼承(擴充套件)模組資料

一:繼承 在不改變底層物件的時候新增新的功能——這是通過繼承機制來實現的,作為在現有物件之上的修改層,這些修改可以發生在所有級別:模型,檢視和業務邏輯。不是直接修改現有模組,而是建立一個新模組以新增預期的修改。 1:擴充套件模型 Odoo 模型存在 Python 的模組之外, 在中間登錄檔那裡

odoo10學習筆記繼承(擴展)模塊數據

標簽 添加 方便 before 表達 use lds extension 簽名 一:繼承 在不改變底層對象的時候添加新的功能——這是通過繼承機制來實現的,作為在現有對象之上的修改層,這些修改可以發生在所有級別:模型,視圖和業務邏輯。不是直接修改現有

springcloud學習筆記服務提供消費與ribbon

在學習筆記一里,我們簡單實現了一個註冊中心,我們就可以在上面進行服務的註冊與訂閱消費。 編寫服務,進行註冊 同樣,我們可以在STS中右鍵New->Spring Starter Project ,填寫相應內容->點選next 選擇需要的依賴包,我們這裡由於是構建一個服務提供

tensorflow學習筆記1tf.Variabletf.get_variable與tf.get_variabletf.variable_scope對比總結

** 0. 淺談tensorflow變數機制 ** tensorflow提供了通過變數名稱來建立或者獲取一個變數的機制。通過這個機制,在不同的函式中可以直接通過變數的名字來使用變數,而不需要將變數通過引數的形式到處傳遞,實現了變數共享。 ** 1. 對比tf.V

深度學習筆記 LeNet-5AlexNet 和 VGGNet等網路模型的小結

最近在學習吳恩達Andrew Ng的深度學習課程,之前對這幾個網路還比較混亂,現在記錄一下: LeNet-5神經網路的貢獻:  1.這是一個比較早的網路模型,其中在卷積層後面加入池化層的思想先今還在使用。 2.在最後的卷積層接入池化層和全連線層在當前也比較常用。 出

NanoPi NEO2 學習筆記 1安裝系統首次開機和一些設定

前幾天搞到了一塊NanoPi NEO2,A53的核心,512M記憶體,一個千兆網口,非常小的體積,質量也不錯,非常滿意,140元的價格可以買到這樣一塊ARM開發板也是非常划算了,非常適合低成本從微控制器轉向嵌入式學習 說實話這塊板子的資料和樹莓派相比較,可以說是少之又少,需要拿出十足的耐心,敢於折騰的決心去

Typescript 學習筆記介紹安裝編譯

前言 整理了一下 Typescript 的學習筆記,方便後期遺忘某個知識點的時候,快速回憶。 為了避免凌亂,用 gitbook 結合 marketdown 整理的。 若是有不對的地方,歡迎留言指出。 眾所周知,JavaScript 是弱型別的,而這對開發人員來說,在一定程度上算是一個“痛點”。解