持更
應用范圍
(羅列自官方幫助文檔,以后有空了按照需求展開敘述)
1. 安全系統
2. 表面檢測
3. 定位
4. 二維測量比較
5. 二維碼識別
6. 二維位置定位
7. 二維物體識別
8. 光學字符識別
9. 機器人視覺
10. 交通監視和駕駛輔助系統
11. 三維測量比較
12. 三維物體定位
13. 三維物體識別
14. 特征檢測
15. 完整性檢測
16. 顏色檢測
17. 一維碼識別
18. 印刷檢測
方法
-
Blob分析
對前景/背景分離后的二值圖像,進行連通域提取和標記。核心思想是將一塊區域內 灰度突變 的范圍找出來。
threshold, connection, union, select_shape
這個用得太多了,就不舉例了。 -
Hough轉換
霍夫變換,一種使用參數估計做特征提取的技術。結合邊緣檢測使用,有的規則的邊緣,比如近似直線或者圓可能有部分小區域被擋住了,使用霍夫變換可以估計出邊緣實際的形狀。
舉例:
這張圖上面的邊緣附近有一些特別亮的區域,導致這個邊緣檢測到的結果會與實際我們關心的邊緣不一致,使用邊緣檢測結合霍夫變換,可以估計出上邊緣的實際情況,近似的是下圖中的這條紅線:
使用霍夫變換得到邊緣線的同時,還可以得到邊緣線相對於垂直方向的角度。算子多以hough開頭
-
邊緣提取
- 像素精度
sobel_amp:使用sobel算法求邊界,這里用來求邊界的卷積模板是已經定義好的3*3模板,如果給大於3的模板尺寸,會自動先用S-2的其他定義的模板對圖像做光滑處理。這里求邊緣時做卷積在對應位置乘積之后還有一些操作,可選;
derivate_gauss:通過求導求邊緣,這里的求導方法有多種可選,有的可以用來求垂直邊緣,有的求水平邊緣,有的都能求出來
edges_image:使用Deriche,Lanser,Shen或者Canny過濾器求邊緣,網上關於這些算法到底是怎么回事的介紹幾乎找不到,只能知道有這些選項
edges_color,frei_amp,kirsch_amp, laplace,prewitt_amp,roberts,robinson_amp等等,這些不同的求邊緣算法主要在定義的卷積核不同上。
舉例:
- 亞像素精度,精度上比像素精度更高一些,不羅列了,算子名稱中多包含contours,sub pix,xld
edges_sub_pix:使用Deriche,Lanser,Shen或者Canny過濾器求邊緣
- 像素精度
-
變化的模板
1. create_variation_model相關算子。
使用沒有問題的圖片創建模板,或者使用一些沒有問題的圖片訓練模板,再在目標圖像上找匹配,可以用於識別單一的變化不大的物體,能夠准確的識別出匹配的圖像,通過與模板圖像做比對,能夠找出缺陷。
直接拿halcon中的圖舉例:
2. create_shape_model/create_scaled_shape_model相關算子。
3. create_metrology_model相關算子。 -
定位
主要還是結合圖片上一些已知特征做特征篩選來做定位,或者通過模板匹配來做定位 -
對焦測距
利用多倍聚焦提取深度 depth_from_focus,同一物體不同聚焦下的圖組成的多通道圖片提取深度(是否可以用在對理論上是同一平面的物體檢測凹陷或凸起上?這個模型可能只是一個估計出來的模型,是否能夠發現細小的凹陷或凸起?需要解決的問題還有怎樣一次性快速獲取到不同倍數聚焦下的圖片,感覺上有點類似於3d建模)
-
多目立體視覺
需要在攝像機標定得到的參數的基礎上做。
通過不完全相同的角度拍攝的多張標定后的圖片重建3d表面,reconstruct_surface_stereo -
二維碼識別
用於二維圖像上的二維碼識別和解析,支持五種主流的編碼和3種GS1編碼模式的二維碼。 -
分類器
- 根據內部已經定義好的特征(6大類:顏色,灰度,區域,旋轉,縮放,紋理),自動選擇合適的特征做訓練,訓練的對象是屬於某一種類的那個區域的特征(相關算子:get_feature_names,calculate_features,create_class_train_data,add_sample_class_train_data,select_feature_set_knn,classify_class_knn等)
- 使用各種分類器做分類,需要把模板圖片自己分好類,用模板圖片做訓練,各種分類器的使用都是差不多的,都是create_class_xxx,add_samples_image_class_xxx, train_class_xxx, classify_image_class_gmm。
- 二維多通道圖像根據兩個通道的特征結合起來基於二維直方圖做分類
- 兩張單通道圖像基於二維直方圖做聚類分割
-
光度立體法
用多張不同光源拍攝的同一物體的圖片重建物體表面,通過對重建表面后獲取到的梯度圖像或者反射圖像再處理能夠相對容易的找出凹凸的缺陷
photometric_stereo
更適合用在表面漫反射的物體上,不適合表面有較強鏡面反射的物體上。 -
光學字符檢測和識別
- 自己訓練並檢測需要識別的字符:create_ocv_proj, train_ocv_proj, do_ocv_simple
- 使用各種分類器做光學字符檢測:create_ocr_class_xxx, write_ocr_trainf, append_ocr_trainf, train_ocr_class_xxx
- 根據已有的模型直接檢測圖片種的字符,已有的模型有多種可選:create_text_model_reader, find_text
- 直接做字符檢測:select_characters
-
基於樣本的識別
通過一些圖片作為樣本訓練之后再識別同類物體,每張圖片是一種物體
create_sample_identifier, add_sample_identifier_object_info, prepare_sample_identifier, train_sample_identifier, apply_sample_identifier, get_sample_identifier_object_info -
激光三角測量
運用線結構光,舉的例子代碼太長了,還待研究。。。 -
幾何測量
角度測量,圖上的各種距離測量(這個可能可以用於測量缺陷長度) -
幾何轉換
縮放,旋轉,扭曲,平移 -
快速傅里葉變換
將圖片轉換到頻率域上,使用特定的過濾器做卷積,達到某種效果。可能用到的濾波器:平滑濾波器(gauss filter, binomial filter可以用來抑制細小的噪聲),帶通濾波器(bandpass filter允許特定的波形通過)等。
在頻率域上做處理,去除除了中心點之外的高亮點可以去除圖象上的噪聲。
處理前后:
處理前頻譜圖:
處理后頻譜圖:
-
輪廓線處理,和邊緣有點類似,不過輪廓線一般是亞像素精度的
找輪廓線,分割輪廓線,根據輪廓做圖形擬合
gen_contours_skeleton_xld -
模板匹配
基於點,灰度值,描述符,相關性,形狀,組件的模板匹配,可以處理輕微的變形
參考:https://www.cnblogs.com/bile/p/10551593.html -
偏折術
可以應用於3d建模,適合於表面有反光的物體的建模。具體用法待研究。 -
拼接
針對不在同一平面的物體或不能一次性拍攝完整的物體,拍攝多張照片后,將這些圖像拼接到一個平面上。
例如柱狀塑料瓶的包裝紙,一個很大的房間的全局圖。
這里面用到的一個技術是將坐標轉換到世界坐標系中,這個技術也要求攝像機已經做過標定。 -
三維匹配
- 表面變形
- 基於表面
- 基於形狀
-
攝像機標定
目的是為了建立空間物體表面某點的三維幾何位置與其在圖像中對應點之間的相互關系,需要建立攝像機成像的幾何模型,求解這個模型的參數。需要求解出攝像頭的畸變參數。
一般圖像的四邊畸變得比較厲害,拍攝的用於標定的圖片應盡量將標定板放在四周的都有一些。根據標定后的參數,可以用於校正拍攝到的畸變圖片,校正過的圖片可以用來做測量等處理。
標定后做校正舉例:
校正前:
校正后:
-
深度學習
處理分類,目標檢測,語義分割。halcon中提供了三種預訓練好的模型可供再訓練。 -
特征提取及分析
通過提取到區域的中心,孔洞,紋理,離心率,致密性,面積,凸度,等一系列特征做分析 -
形態學
膨脹,腐蝕,開,閉,區域填充,擴展,連通 -
一維碼識別
一維條形碼的檢測 -
運動檢測
針對同一場景下的連續拍照,有幾種常用的手段:- 做光流檢測,定位移動的物體
- 做圖像減法,通過減到的結果檢測發生位移的物體
- 對兩張圖片做動態閾值分割,能夠找出不同區域
- 做場景流檢測,定位
縮寫詞
- HNF:Hesse normal form,第一次在hough變換中遇到。
- ROI:region of interest,感興趣區域
- DFF:depth from focus
附錄:
- 已經定義好的過濾器大類:
- 算數相關:灰度的加減乘除,乘方,開方,三角函數,正反變換
- 位運算
- 顏色變換,圖像通道處理
- 求邊緣
- 圖像增強
- 傅里葉變換
- 幾何變換:縮放,移動,鏡像,旋轉
- 圖像修復相關
- 尋找線條
- 噪聲相關:添加噪聲
- 光流
- 角點檢測
- 場景流
- 光滑圖像
- 提取紋理
- 維納濾波:降低平穩噪聲