Halcon算子實現——Texture_Laws

什麼是texture_laws()

  Laws方法在論文中主要用於檢測紋理信息,尤其是對比度比較低的紋理,具有很好的效果,即一張原始圖像通過laws變換後得到一系列的圖片,把這一系列的圖片塞入分類器,分類精度還是比較高的 。在Halcon中使用texture_laws()特殊的濾波核與地對比度低的圖像做卷積,得到效果很好的灰度圖。
  小編的碎碎念念:這個原理具體怎麼實現的,各位讀者可以看參考資料中的論文,尤其那篇博士論文,寫的很細的,小編飄走~~。

實現步驟

  網上有許多文章講的和Halcon中的texture_laws()算子步驟是不一樣的,這一點我也是走過了網上套路後才發現的。網上說的是 Laws的整個過程,但是在Halcon中的算子不是完整的Laws,只是運用Laws覈對圖像做卷積。

第一步,認識Laws基礎向量

  在構建kernel之前需要了解Laws的基礎向量。論文中給出了三種尺寸的基礎向量。

1. 尺寸爲3的基礎向量:


2. 尺寸爲5的基礎向量:


3. 尺寸爲7的基礎向量:

每一行前面的字母分別代表:”level“, “edge” ,“spot”, “wave”, “ripple”, “undulation”, “oscillation”(中文意思就不翻譯過來了,感覺翻譯完了,就變味了~~),這些單詞就代表對應向量檢測的類型。可以選擇濾波向量中的 “l”, “e”, “s”, “r”, “w”, "o"與濾波向量"l"組合來增強圖像的低頻部分,或者與濾波向量"o"組合來增強圖像的高頻部分,例如,”le“檢測低頻部分。Laws的論文介紹最基礎的是尺寸3的向量,尺寸5和尺寸7都是由尺寸3得來的。

第二步,Laws核

  每一組基礎向量都可任意兩兩組合(即兩個向量相乘),所以第一組有9種,第二組有25中,第三組有49種,可以前面的字母來表示,例如尺寸3的第一個和第二個組合,即”le“。”le“由兩個兩個向量組成,第一個向量代表垂直向量,第二個代表水平向量,所以第一個向量要轉置後再與第二個向量相乘,變成一個3X3的矩陣。這個過程如圖所示:
3X3的le
其他尺寸的卷積核和上面的過程是一樣的。在Laws的論文中說5X5的效果是最好的。

第三步,Laws核與圖像做卷積

  Laws與圖像正常做卷積,重點在與卷積之後的結果,卷積後的圖片的每個像素要做絕對值處理,取完絕對值後,對大於255的像素做截斷。這個部分就是Halcon中與Laws論文中記載不同的地方。

運行結果與時間

  模擬的算法是基於opencv3.4.1版本的,除了Halcon中shift還沒有實現,圖片顯示效果與Halcon幾乎無異,時間與Halcon時間也很接近,1.5~2ms。所以基於Opencv模擬Halcon中texture_laws()算子可行。

參考資料

[1] K. Laws. Textured Image Segmentation , Ph.D. Dissertation, University of Southern California, January 1980.
[2] K. Laws. Rapid texture identification. In SPIE Vol. 238 Image Processing for Missile Guidance , pages 376-380, 1980.
[3] 《Laws’ Texture Measures》這篇文章沒有署名,不知是哪位大神寫的,但是百度一下就能看到這篇文章。
[4] Halcon 幫助文檔

  • 這幾篇文章對小編有用的部分,簡單的翻譯了一下(翻譯小白級別),如果有需要的可以看一下。

百度雲盤分享
提取碼:0kg8

學習使我進步,分享使我快樂,您的點贊是對小編最大的鼓勵!


作者聲明:本文屬於原創,轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章