RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

灰度共生矩陣(GLCM)基本原理

OpenCV學堂 ? 來源:OpenCV學堂 ? 作者:OpenCV學堂 ? 2022-08-14 11:53 ? 次閱讀

灰度共生矩陣

灰度共生矩陣(Gray Level CO-Occurrence Matrix-GLCM)是圖像特征分析與提取的重要方法之一,在紋理分析、特征分類、圖像質(zhì)量評價燈方面都有很重要的應用,其基本原理圖示如下:

c1e45a22-1b0f-11ed-ba43-dac502259ad0.png

左側(cè)是一個圖像,可以看出最小的灰度級別是1,最大的灰度級別是8,共有8個灰度級別。右側(cè)對應的灰度共生矩陣,左上角第一行與第一列的坐標(1, 1)包含值1,原因在于水平方向上,相距一個像素值,當前像素跟水平右側(cè)相鄰像素只有一個是1、1相鄰的像素值(灰度級別)對;右側(cè)共生矩陣的原始(1, 2) = 2 說明在像素矩陣中有兩個像素值1,2相鄰的像素點對、以此類推得到完整的右側(cè)灰度共生矩陣。根據(jù)當前像素跟相鄰像素位置不同,可以計算得到不同的共生矩陣,同時根據(jù)像素之間的距離不同會輸出不同灰度共生矩陣??偨Y(jié)來說,有如下四種不同角度的灰度共生矩陣:

c1f4617e-1b0f-11ed-ba43-dac502259ad0.png

0度水平方向GLCM

45度方向GLCM

90度垂直方向GLCM

135度方向GLCM

根據(jù)相鄰像素點之間距離參數(shù)D不同可以得到不同距離的GLCM。此外對正常的灰度圖像來說,最小灰度值為0,最大的灰度值為255,共計256個灰度級別,所以GLCM的大小為256x256,但是我們可以對灰度級別進行降維操作,比如可以每8個灰度值表示一個level這樣,這樣原來256x256大小的共生矩陣就可以改成256/8 * 256 /8 = 32x32的共生矩陣。所以最終影響灰度共生矩陣生成有三個關(guān)鍵參數(shù):

角度 (支持0、45、90、135)

距離(大于等于1個像素單位)

灰度級別(最大GLCM=256 x 56)

GLCM實現(xiàn)紋理特征計算

灰度共生矩陣支持如下紋理特征計算,它們是:

能量

熵值

對比度

相關(guān)性

逆分差

這些紋理特征計算公式如下:

c2102562-1b0f-11ed-ba43-dac502259ad0.png

上述5個是常見的GLCM的紋理特征,GLCM總計由14個特征值輸出,這里就不再贅述了!感興趣的可以自己搜索關(guān)鍵字GLCM。

OpenCV計算灰度共生矩陣

OpenCV本身沒有灰度共生矩陣的算法實現(xiàn),所以需要對照自己編碼實現(xiàn),計算圖像灰度共生矩陣,代碼實現(xiàn)步驟如下:

加載圖像,灰度轉(zhuǎn)

創(chuàng)建灰度共生矩陣Mat對象

計算灰度共生矩陣

顯示灰度共生矩陣

這里我采用的角度為0、45、90、135、像素距離d=1、灰度級別為256,代碼實現(xiàn)如下:

//0°,45°,90°,135°
Matglcm_0=Mat::zeros(Size(step,step),CV_32FC1);
for(introw=0;row(row,col);
intj=gray.at(row,col+1);
glcm_0.at(i,j)++;
}
}

Matglcm_45=Mat::zeros(Size(step,step),CV_32FC1);
for(introw=1;row(row,col);
intj=gray.at(row-1,col+1);
glcm_45.at(i,j)++;
}
}
Matglcm_90=Mat::zeros(Size(step,step),CV_32FC1);
for(introw=1;row(row,col);
intj=gray.at(row-1,col);
glcm_90.at(i,j)++;
}
}
Matglcm_135=Mat::zeros(Size(step,step),CV_32FC1);
for(introw=1;row(row,col);
intj=gray.at(row-1,col-1);
glcm_135.at(i,j)++;
}
}

normalize(glcm_0,glcm_0,0,1.0,NORM_MINMAX);
normalize(glcm_45,glcm_45,0,1.0,NORM_MINMAX);
normalize(glcm_90,glcm_90,0,1.0,NORM_MINMAX);
normalize(glcm_135,glcm_135,0,1.0,NORM_MINMAX);

運行效果如下:圖一

c2216962-1b0f-11ed-ba43-dac502259ad0.jpg

斑馬線的灰度共生矩陣

c2382ee0-1b0f-11ed-ba43-dac502259ad0.jpg

提取圖像對比度特征

基于共生矩陣實現(xiàn)紋理特征計算,這里我用了比較簡單的對比度計算來實現(xiàn)局部紋理特征提取、代碼實現(xiàn)如下(局部窗口大小8x8、灰度級別256/32 =8個級別)

intstep=256;
Matimage=imread("D:/images/ftexture.jpg");
//Matimage=imread("D:/images/ban_texture.jpg");
Matgray;
cvtColor(image,gray,COLOR_BGR2GRAY);
imshow("gray",gray);
intheight=gray.rows;
intwidth=gray.cols;

Matglcm_0=Mat::zeros(Size(width,height),CV_32FC1);
Rectroi;
roi.x=0;
roi.y=0;
roi.width=8;
roi.height=8;

for(introw=4;row(row,col)=pv;
}
}
normalize(glcm_0,glcm_0,0,1.0,NORM_MINMAX);
imshow("glcm",glcm_0);
waitKey(0);

方法計算灰度矩陣的代碼如下:

Matm=Mat::zeros(Size(8,8),CV_32FC1);
for(introw=0;row(row,col)/32;
intj=im.at(row+1,col+1)/32;
m.at(i,j)++;
}
}
floatcontrast=0;
for(inti=0;i(i,j)*(i-j)*(i-j);
}
}
returncontrast;

計算135°的灰度共生矩陣,基于計算局部對比度提取紋理運行結(jié)果如下:

測試一(左側(cè)是輸入圖像、右側(cè)135的對比度)

c2487c46-1b0f-11ed-ba43-dac502259ad0.jpg

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    940

    瀏覽量

    54813
  • 圖像特征
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    7041
  • 灰度共生矩陣
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    841

原文標題:基于灰度共生矩陣(GLCM)的圖像紋理分析與提取

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    CT的基本原理及方法

    CT的基本原理及方法人體內(nèi)不同組織對射線的吸收率是不同的,這也是 CT 技術(shù)的基本原理。如下圖所示:圖(1)左側(cè)代表一未知灰度的區(qū)域,每小塊灰度值相同,分別以μ 標記,如圖所示做兩次投
    發(fā)表于 06-14 15:56

    步進電機基本原理

    本帖最后由 eehome 于 2013-1-5 09:48 編輯 步進電機基本原理
    發(fā)表于 08-16 16:17

    串聯(lián)諧振逆變器的基本原理

    串聯(lián)諧振通常伴有逆變器。該組合稱為串聯(lián)諧振逆變器。什么是基本原理?讓我簡要介紹串聯(lián)諧振逆變器的一些基本原理。]首先給你看一張圖片:
    發(fā)表于 11-07 10:21

    IC測試的基本原理是什么?

    本文詳細介紹了芯片開發(fā)和生產(chǎn)過程中的IC測試基本原理。
    發(fā)表于 05-08 07:33

    電機轉(zhuǎn)動的基本原理是什么?

    電機轉(zhuǎn)動的基本原理是什么?電機運動的基本原則有哪些?
    發(fā)表于 07-21 07:59

    線性電源的基本原理是什么

    多路線性電源 AC-DC穩(wěn)壓電源 低紋波電源 可調(diào)線性電源 原理圖PCB目錄多路線性電源 AC-DC穩(wěn)壓電源 低紋波電源 可調(diào)線性電源 原理圖PCB基本原理芯片選型原理圖&3D-PCB具體
    發(fā)表于 07-30 07:47

    無線充電的基本原理是什么

    一 、無線充電基本原理無線充電的基本原理就是我們平時常用的開關(guān)電源原理,區(qū)別在于沒有磁介質(zhì)耦合,那么我們需要利用磁共振的方式提高耦合效率,具體方法是在發(fā)送端和接收端線圈串并聯(lián)電容,是發(fā)送線圈處理諧振
    發(fā)表于 09-15 06:01

    RAID技術(shù)的基本原理是什么

    RAID技術(shù)的基本原理是什么?RAID技術(shù)有哪幾個優(yōu)勢?
    發(fā)表于 10-14 12:01

    串口通信的基本原理是什么?

    同步通信和異步通信的區(qū)別是什么?串口通信的基本原理是什么?
    發(fā)表于 12-13 06:46

    基于灰度共生矩陣的自適應圖像邊緣檢測

    紋理分析是圖像處理中一種十分重要的方法。通過紋理分析,利用灰度共生矩陣慣性矩特征值能夠反映圖像灰度空間復雜度的特性,成功獲取了LOG邊緣檢測算子最佳空間系數(shù),抑制
    發(fā)表于 08-05 15:22 ?0次下載

    基于GLCM和CGA的人臉表情識別方法

    灰度共生矩陣GLCM 紋理是圖像分析中常用的特征% 一般說來可以認為 紋理由許多相互接近的( 互相交織的元素組成% 并具有 一定的周期性 量化圖像的紋理內(nèi)容是描述圖像的一種 重要方法
    發(fā)表于 02-11 14:14 ?70次下載
    基于<b class='flag-5'>GLCM</b>和CGA的人臉表情識別方法

    步進馬達基本原理

    步進馬達基本原理步進馬達基本原理步進馬達基本原理
    發(fā)表于 11-30 11:55 ?8次下載

    基于分塊顏色矩和灰度共生矩陣的圖像檢索_岳磊

    基于分塊顏色矩和灰度共生矩陣的圖像檢索_岳磊
    發(fā)表于 03-17 09:57 ?1次下載

    三像素彩色共生矩陣的圖像檢索

    種顏色,并且對圖像進行共生矩陣分析,最后采用90維特征向量來描述圖像特征。實驗結(jié)果表明,三像素彩色共生矩陣的檢索性能優(yōu)越于灰度
    發(fā)表于 12-19 16:34 ?1次下載

    使用結(jié)合改進聚合通道特征和灰度共生矩陣設(shè)計的俯視行人檢測算法介紹

    針對傳統(tǒng)俯視行人檢測方法提取的頭部特征單一、檢測錯誤率高的問題,提出了結(jié)合改進聚合通道特征(ACF)和灰度共生矩陣GLCM)的俯視行人檢測算法。首先,將提取到的HSV顏色特征、梯度幅
    發(fā)表于 12-24 16:59 ?6次下載
    使用結(jié)合改進聚合通道特征和<b class='flag-5'>灰度</b><b class='flag-5'>共生</b><b class='flag-5'>矩陣</b>設(shè)計的俯視行人檢測算法介紹
    RM新时代网站-首页