圖像處理筆記(二十):LAWS紋理濾波應用於缺陷檢測


LAWS紋理濾波

texture_laws(Image, 原圖像
ImageTexture, 輸出值,濾波后圖像
FilterType, 過濾器類型
Shift, 灰度值轉換,濾波后的灰度值可能會比較大,轉換后的灰度值Gray=Gray/(Shift2),要根據濾波器選擇合適的灰度值轉換
FilterSize) 過濾器大小,3, 7, 5可選
過濾器類型幫助文檔中有詳細列舉,
各種大小的過濾器都是由leswruo這幾個向量構成,文檔中單個向量都有原型,對於組合出來的濾波器矩陣,就是兩個向量的點積,例如5
5大小的le濾波器:
l = [1 4 6 4 1],
e = [-1 -2 0 2 1]
那么le就是:

\[le = \begin{bmatrix} 1 \\ 4 \\ 6 \\4 \\1 \end{bmatrix} \begin{bmatrix} -1 & -2 & 0 & 2 & 1\end{bmatrix} \]

5*5的filter,記錄一下,稍后研究一下每一種filter的作用。Filter
使用LAWS做缺陷檢測的步驟:

  1. 收集幾張沒有缺陷的圖片,使用多種laws濾波作為特征,組合成多通道圖片,作為訓練樣本;
  2. 創建高斯混合分類器,使用樣本進行訓練;
  3. 將測試圖片與樣本做相同處理后,使用高斯混合分類器做分類;
  4. 將分類后的區域與原區域做減法,減出來的部分就是不能被分類的部分,也就是有問題的部分;
  5. 篩選出面積較大的區域,可以適當選擇開閉運算將區域修整一下。

這里使用到的圖像預處理:
使用zoom_image_factor將圖像的尺寸減小,可以降低運算時間;
使用smooth_image對混合后的五通道圖片做光滑處理

模型的保存與讀取:
write_class_gmm
read_class_gmm

# 應用 
## 字符分割識別
halcon中有一些已經訓練好的ocr模板可供直接使用。
使用已有模板做字符識別的主要步驟:
1. 找出圖像區域,將字符串做分割,分割成單個的字符;
2. 讀取已經訓練好的模板'read_ocr_class_' ,這里有多個分類器可選;
3. 使用 ‘do_ocr_multi_class_’ 對分割后的區域做字符識別或使用`do_ocr_single_class_` 對分割后的單個區域做字符識別。

使用這種方式的局限性:必須找到字符區域並對字符做好分割,只能用於事先已經很了解測試圖片的情況。已經定義好的模板不一定好用,自己訓練可能更適合。
測試的時候還發現一個特點,對於圖像上字母是亮的,背景是暗的情況,識別到的結果一般都是錯的,只有在__背景是亮的,字母是暗的__ 情況下,是被才是有效的。

其實我們可以自己訓練,怎么訓練呢?
[這是網上找到的一個例子](https://blog.csdn.net/ZHANG2012LIANG/article/details/50993173)
由於一時半會兒弄不到那么多字母圖片,所以沒有嘗試。待實現。


免責聲明!

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



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