halcon視覺缺陷檢測系列(1)常用的6種方法
一、缺陷檢測綜述
缺陷檢測是視覺需求中難度最大一類需求,主要是其穩定性和精度的保證。首先常見缺陷:凹凸、汙點瑕疵、劃痕、裂縫、探傷等。常用的手法有六大金剛(在halcon中的ocv和印刷檢測是針對印刷行業的檢測,有對應運算元封裝):
1.blob+特徵(例如官方示例surface_scratch.hdev)
2.blob+差分+特徵
3.光度立體
4.特徵訓練
5.測量擬合
6.頻域+空間結合
二、頻域+空間結合法
1、頻域結合空間,其實頻域就是用波動觀點看世界,看問題角度變了,光經過鏡頭其實發生的是傅立葉變換,此思想在傅立葉光學上有所闡述,就像光經稜鏡分光,而光進入計算機內部,進行了取樣和量化,然後我們用函式f(x,y)來表示這些資料描述。影像處理應用傅立葉變換就是將空間域(影像本身)轉換至頻率域。傅立葉變換可以將一個訊號函式,分解一個一個三角函式的線性組合。由於任何周期函式都可以由多個正弦函式構成,那麼按照這個思想,影像由f(x,y)來表示,那麼這時你就可以拆成多個正弦函式構成,這樣每個正弦函式都有一個自己的頻率。
2、頻率特徵是影像的灰度變化特徵,低頻特徵是灰度變化不明顯,例如影像整體輪廓,高頻特徵是影像灰度變化劇烈,如影像邊緣和噪聲。一個重要的經驗結論:低頻代表影像整體輪廓,高頻代表了影像噪聲,中頻代表影像邊緣、紋理等細節。
3、什麼時候使用傅立葉變換進行頻域分析?
1)具有一定紋理特徵的影像,紋理可以理解為條紋,如布匹、木板、紙張等材質容易出現。
2)需要提取對比度低或者訊雜比低的特徵。
3)影像尺寸較大或者需要與大尺寸濾波器進行計算,此時轉換至頻域計算,具有速度優勢。因為空間域濾波為卷積過程(加權求和),頻域計算直接相乘。
4、舉例
*1採集影像
read_image (Image66, 'C:/Users/Administrator/Desktop/66.png')
rgb1_to_gray (Image66, GrayImage)
*2預處理之拉開對比度(這裡採用頻域,頻域到空間域的常用運算元有三個fft_iamge,rft_generic,fft_generic
fft_generic (GrayImage, ImageFFT, 'to_freq', -1, 'sqrt', 'dc_center', 'complex')
*注意一般在頻域裡就是選擇你想要的頻段而已,被稱為濾波,這個手法在halcon中有三個,
*一個是直接手畫,然後paint_region
*一個是涉及濾波器,然後進行濾波,這個對於初學者有點難度,先掌握常見濾波器。
*第三個就是呼叫power_real,對其進行blob解析。
*這裡用的直接手動paint_region,選擇對應的頻段
gen_rectangle1 (ROI_0, 350.855, 3.85433, 473.273, 1101.15)
paint_region (ROI_0, ImageFFT, ImageResult, 0, 'fill')
*注意這裡又回到了空間,頻域和空間是同等重要地位,只是看問題的角度不一樣,這也符合唯物辯證法法
fft_generic (ImageResult, ImageFFT1, 'from_freq', 1, 'sqrt', 'dc_center', 'byte')
*接下來就是一個blob提取而已,當然這裡方法可以根據情況變化多端,比如你可以分水領域法,
*然後呼叫select_gray,對每個區域對應灰度值特徵進行篩選,當然您也可以用共生矩陣
emphasize (ImageFFT1, ImageEmphasize, 7, 7, 1)
threshold (ImageEmphasize, Regions, 44, 101)
dilation_circle (Regions, RegionDilation, 3.5)
connection (RegionDilation, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 78.88, 190.87)
*這裡就是顯示而已
dev_display (Image66)
dev_display (SelectedRegions)
另外,halcon自帶的例子detect_mura_defects_texture.hdev也值得學習
更多的內容,參見我的另一篇博文《halcon視覺缺陷檢測之頻域和空間域轉換的方法詳解》
三、光度立體法
在工業領域,表面檢測是一個非常廣泛的應用領域。在halcon中,使用增強的光度立體視覺方法,三維表面檢測被加強。利用陰影可方便快速的檢測物體表面的缺口或凹痕。 使用光度立體視覺方法可在複雜影像中輕鬆找到表面缺陷 。
四面打光,合成影像,求取梯度圖型,然後Halcon裡的光度立體法也是這方面的應用,關鍵的運算元就是photometric_stereo。
潛在問題:
1.看官方例子貌似都是條形組合光源打光,用光度立體法檢測,一定要把缺陷打出來才行嗎?
2.一定要取4張圖片嗎?
3.photometric_stereo (Images, HeightField, Gradient, Albedo, Slants, Tilts, ResultType, 'poisson', [], [])該運算元的配置有什麼講究嗎?
官方例子:皮革檢測,inspect_leather_photometric_stereo.hdev
---
參考文獻
1、halcon機器視覺缺陷檢測之劃痕-超人視覺
http://www.ihalcon.com/read-8013.html
https://pan.baidu.com/share/link?shareid=3266393619&uk=2369503810
2、halcon缺陷檢測的示例程式碼解析
https://blog.csdn.net/ymj7150697/category_8002603.html
相關文章
- halcon——缺陷檢測常用方法總結(測量擬合)
- halcon——缺陷檢測常用方法總結(特徵訓練)特徵
- halcon——缺陷檢測常用方法總結(光度立體)
- halcon缺陷檢測
- halcon——缺陷檢測常用方法總結(模板匹配(定位)+差分)
- Halcon表面缺陷檢測-劃痕檢測
- halcon——缺陷檢測常用方法總結(頻域空間域結合)
- Halcon缺陷檢測例項轉OpenCV實現(二) PCB印刷缺陷檢測OpenCV
- Halcon表面缺陷檢測-光度立體法
- 影像分析,使用Halcon進行缺陷檢測
- Halcon缺陷檢測例項轉OpenCV實現(三) 物體凸缺陷檢測OpenCV
- Halcon表面缺陷檢測-光度立體法檢測藥片包裝背面的缺陷
- 在C#中使用Halcon開發視覺檢測程式C#視覺
- [機器視覺]halcon應用例項 邊緣檢測視覺
- [Halcon] 機器視覺中常用運算元視覺
- halcon三維檢測啟蒙1
- 機器視覺產品尺寸測量與外觀缺陷檢測應用視覺
- 一種新的UI測試方法:視覺感知測試UI視覺
- Halcon6:三維重建和光度立體視覺視覺
- 檢視SQL執行計劃的幾種常用方法YQSQL
- 檢視mysql版本的四種方法及常用命令MySql
- 檢視mysql版本的六種方法MySql
- halcon視訊教程 halcon模板匹配 halcon機器視覺 halcon C/C++/C# halcon視訊教程超人初級->超人強化->超人高階教材逐步進階,全面突破,簡單高效率學習視覺視覺C++C#
- 代理IP檢測的三種方法
- 雲邊協同架構助力智慧工廠視覺 AI 缺陷檢測應用構建架構視覺AI
- 檢測-紋理表面凸起、凹痕、劃痕缺陷的檢測
- SQL隱碼攻擊的檢測方式有幾種?常用方法介紹!SQL
- 6 種 Python 資料視覺化工具Python視覺化
- 視覺檢測-VisionPro工具入門視覺
- 資料視覺化常用的五種方式及案例分析視覺化
- 視覺直觀感受7種常用的排序演算法視覺排序演算法
- 視覺直觀感受 7 種常用的排序演算法視覺排序演算法
- linux系列之: 你知道檢視檔案空間的兩種方法嗎?Linux
- 目標檢測入門系列手冊七:目標檢測的產品應用實踐【工業視覺篇】視覺
- 【機器視覺】機器人及視覺檢測系統在螺絲檢測包裝生產線上的應用視覺機器人
- opencv——機器視覺檢測和計數OpenCV視覺
- 兩種檢視oracle表結構的方法Oracle
- Oracle檢視執行計劃常用方法Oracle