概要:
- 分水嶺算法做圖像分割
- 二維碼識別
稍后將其他幾篇筆記全都補充上概要方便查詢。
分水嶺算法做圖像分割
使用距離變換結合分水嶺算法實現圖像分割,可以用來分割僅通過閾值分割還是有邊緣連接在一起的情況。
步驟:
-
通過
threshold及相關操作找出需要分割的圖像區域; -
通過
distance_transform得出距離圖片,這里的距離圖片算的距離是針對上面已經圈出來的區域計算的; -
將灰度值范圍通過
scale_image_max擴充后灰度反轉; -
通過
watersheds_threshold做區域分割,這里的分割是針對整張圖片做分割的; -
與目標圖像區域做交集,得出分割后的目標圖像。
-
distance_transform(Region, DistanceImage, Metric, Foreground, Width, Height)
計算區域內每一個點到區域邊界的距離得出一張距離圖片,距離邊界越遠的灰度值越大,中心灰度值最大,邊界為0,如圖:

-
watersheds_threshold(Image, Basins, Threshold)
分水嶺算法做區域分割
分水嶺算法:灰度值代表海拔高度,高灰度代表山脈,低灰度代表盆地,每一個局部極小值及影響區域代表集水盆,集水盆邊界形成分水嶺。

圖中分成的一個個小塊就是在做分水嶺分割之后得到的,一個個的小圓就是在與原區域做交集之后得到的。
根據之前學到的,對於這樣的圖片區域分割,有時候根據情況也能使用膨脹腐蝕之類的方法分割出來。
# 二維碼識別
做一個小功能,halcon和C#混和編程,實時做二維碼識別。最簡單的做法是在halcon中做了之后導出成cs文件,將文件中的有效部分提取出來放在代碼中。過程略。
halcon中實現的要點:
1. 攝像頭實時抓拍
2. 使用 `create_data_code_2d_model` 生成二維條形碼模型,這里需要注意的是必須提前知道我們需要解碼的二維碼的編碼模式;
3. 使用 `find_data_code_2d` 來找二維碼並解析。
~~~~~~~~~~~~~~~~~~~~~~~ 分割線 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
halcon基礎知識學些到這邊告一段落了。
接下去需要解決的問題:怎樣把學到的東西運用到圖像處理中去解決缺陷檢測的問題。
