halcon知识:共生矩阵
一、共生矩陣基本概念
?
????????共現矩陣或共現分布(也稱為:灰度共現矩陣 GLCM)是在圖像上定義為同時出現的像素值(灰度值或顏色)的分布的矩陣) 在給定的偏移量處。它被用作具有各種應用的紋理分析方法,特別是在醫學圖像分析中。
????????給定灰度圖像,共生矩陣計算圖像中具有特定值和偏移量組成一個偶對的像素對出現的頻率(這是不是類似直方圖?對的,就是二維圖內兩個相對位置像素對的直方統計)。
- 灰度級別化(scales):指灰度按照對數取劃分等級,如0-255灰度可寫成,共8個等級
- 偏移量: 是一個位置算子,可以應用于圖像中的任何像素(忽略邊緣效應):例如,?可以表示“向下一格,向右兩格”。
取圖像(N×N)中任意一點(x,y)及偏離它的另一點(x+a,y+b),設該點序的灰度值為(g1,g2)和(g2,g1)。令點(x,y)在整個畫面上移動,則會得到各種(g1,g2)和(g2,g1)值。
- 對于給定的偏移量,具有 不同像素的圖像將產生一個維度的共現矩陣。
- 共現矩陣的值給出了圖像中出現的次數 和 像素值出現在偏移量給出的關系中。
????????對于具有 個不同像素值的圖像, 共現矩陣 C 定義在圖像,由偏移量 參數化,如:
????????其中: 和 是像素值;和 是圖像中的空間位置;偏移量 定義了計算該矩陣的空間關系; 表示像素 處的像素值。
? ? ? ? 對于8bit的圖像,灰度共生矩陣為矩陣。
????????圖像的“值”最初指的是指定像素的灰度值,但可以推廣成任何值,從二進制開/關值到32位整數等等。(請注意,32位顏色將生成232×232共生矩陣!)
????????共現矩陣也可以根據距離和角度來參數化,而不是偏移量。
????????任何矩陣或矩陣對都可以用來生成共生矩陣,盡管它們最常見的應用是測量圖像中的紋理,因此如上所述的典型定義假定矩陣是圖像。
????????也可以跨兩個不同的圖像定義矩陣。這樣的矩陣可以用于顏色映射。
二、以上看不懂嗎?請看下面舉例后再回頭看就懂了
這里有的灰度圖像:
??2.1 分級(scales)
?;? ?? ? ??? ??? ?????? 因此,原圖被分成四級,轉化成:
?2.2 求規定偏移的共生矩陣
關于0,90,45,135度的偏移(向右向下為正方向):
2.2.1 水平偏移(度)
對的每個像素進行的偶對采集,如下:
(0,0),(0,0),(0,3),(3,0)
(1,1),(1,1),(1,2),(2,1)
(1,2),(2,1),(2,3),(3,2)
統計以上偶對,形成下表:
| 0 | 1 | 2 | 3 | |
| 0 | 2 | 0 | 0 | 1 |
| 1 | 0 | 2 | 2 | 0 |
| 2 | 0 | 2 | 0 | 1 |
| 3 | 1 | 0 | 1 | 0 |
這就是的共生矩陣:
?
2.2.2 垂直方向的偏移(9度)
?對的每個像素進行的偶對采集,如下:
(0,1),(1,0),(1,1),(1,1)
(0,1),(1,0),(1,2),(2,1)
(3,2),(2,3),(2,3),(3,2)
統計以上偶對,形成下表:
| 0 | 1 | 2 | 3 | |
| 0 | 0 | 2 | 0 | 0 |
| 1 | 2 | 2 | 1 | 0 |
| 2 | 0 | 1 | 0 | 2 |
| 3 | 0 | 0 | 2 | 0 |
?
?2.2.3 1-3象限方向的偏移(45度)
?(此處表示向下一格,向右-1格,別搞錯了!)
?對的每個像素進行的偶對采集,如下:
(1,1),(1,1),(2,2),(2,2)
(1,0),(0,1),(1,3),(3,1)
統計以上偶對,形成下表:
| 0 | 1 | 2 | 3 | |
| 0 | 0 | 1 | 0 | 0 |
| 1 | 1 | 2 | 0 | 1 |
| 2 | 0 | 0 | 2 | 0 |
| 3 | 0 | 1 | 0 | 0 |
?
?2.2.4? 2-4象限方向的偏移(135度)
?對的每個像素進行的偶對采集,如下:
(0,1),(1,0),(0,2),(2,0)
(1,2),(2,1),(1,3),(3,1)
統計以上偶對,形成下表:
| 0 | 1 | 2 | 3 | |
| 0 | 0 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 | 1 |
| 2 | 1 | 1 | 0 | 0 |
| 3 | 0 | 1 | 0 | 0 |
?
至此,圖像的四個方向共生矩陣都求出了。
三、參考代碼
以下代碼求兩個區域的共生矩陣,并用熱圖打印出來。
3.1 原圖:
?3.2 鎖定區域
3.3 求出共生矩陣代碼?
* Calculate the co-occurrence matrices of two regions in an image * read_image (Image, 'mreut') dev_close_window () get_image_size (Image, Width, Height) dev_open_window (0, 0, Width, Height, 'black', WindowID) dev_display (Image) dev_set_draw ('margin') * Create two rectangles parallel to the coordinate axes gen_rectangle1 (Rectangle1, 350, 100, 450, 200) gen_rectangle1 (Rectangle2, 100, 200, 200, 300) * set look-up-table of the output window dev_set_lut ('temperature') gen_cooc_matrix (Rectangle1, Image, Matrix1, 6, 0) gen_cooc_matrix (Rectangle2, Image, Matrix2, 6, 0) dev_set_lut ('default')3.4 結果:
對比兩個共生矩陣,上圖對應區域像素單一,因而能量集中。下圖像素復雜多變,故能量分散
總結
以上是生活随笔為你收集整理的halcon知识:共生矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python知识:稀疏矩阵转换成密度矩阵
- 下一篇: halcon知识:图像纹理特征提取coo