圖像處理筆記(二十一):halcon在圖像處理中的運用


概要:

  1. 分水嶺算法做圖像分割
  2. 二維碼識別

稍后將其他幾篇筆記全都補充上概要方便查詢。

分水嶺算法做圖像分割

使用距離變換結合分水嶺算法實現圖像分割,可以用來分割僅通過閾值分割還是有邊緣連接在一起的情況。
步驟:

  1. 通過threshold 及相關操作找出需要分割的圖像區域;

  2. 通過distance_transform 得出距離圖片,這里的距離圖片算的距離是針對上面已經圈出來的區域計算的;

  3. 將灰度值范圍通過scale_image_max 擴充后灰度反轉;

  4. 通過watersheds_threshold 做區域分割,這里的分割是針對整張圖片做分割的;

  5. 與目標圖像區域做交集,得出分割后的目標圖像。

  6. distance_transform(Region, DistanceImage, Metric, Foreground, Width, Height)
    計算區域內每一個點到區域邊界的距離得出一張距離圖片,距離邊界越遠的灰度值越大,中心灰度值最大,邊界為0,如圖:

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

圖中分成的一個個小塊就是在做分水嶺分割之后得到的,一個個的小圓就是在與原區域做交集之后得到的。

根據之前學到的,對於這樣的圖片區域分割,有時候根據情況也能使用膨脹腐蝕之類的方法分割出來。

# 二維碼識別
做一個小功能,halcon和C#混和編程,實時做二維碼識別。最簡單的做法是在halcon中做了之后導出成cs文件,將文件中的有效部分提取出來放在代碼中。過程略。
halcon中實現的要點:
1. 攝像頭實時抓拍
2. 使用 `create_data_code_2d_model` 生成二維條形碼模型,這里需要注意的是必須提前知道我們需要解碼的二維碼的編碼模式;
3. 使用 `find_data_code_2d` 來找二維碼並解析。

~~~~~~~~~~~~~~~~~~~~~~~  分割線 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
halcon基礎知識學些到這邊告一段落了。
接下去需要解決的問題:怎樣把學到的東西運用到圖像處理中去解決缺陷檢測的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM