<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

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

灰度共生矩陣

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

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

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

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

0度水平方向GLCM

45度方向GLCM

90度垂直方向GLCM

135度方向GLCM

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

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

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

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

GLCM實現紋理特征計算

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

能量

熵值

對比度

相關性

逆分差

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

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

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

OpenCV計算灰度共生矩陣

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

加載圖像,灰度轉

創建灰度共生矩陣Mat對象

計算灰度共生矩陣

顯示灰度共生矩陣

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

//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

提取圖像對比度特征

基于共生矩陣實現紋理特征計算,這里我用了比較簡單的對比度計算來實現局部紋理特征提取、代碼實現如下(局部窗口大小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°的灰度共生矩陣,基于計算局部對比度提取紋理運行結果如下:

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

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

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

    關注

    6

    文章

    836

    瀏覽量

    54515
  • 圖像特征
    +關注

    關注

    0

    文章

    13

    瀏覽量

    7005
  • 灰度共生矩陣

    關注

    0

    文章

    2

    瀏覽量

    830

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

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

收藏 人收藏

    評論

    相關推薦

    CT的基本原理及方法

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

    步進電機基本原理

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

    串聯諧振逆變器的基本原理

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

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

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

    電機轉動的基本原理是什么?

    電機轉動的基本原理是什么?電機運動的基本原則有哪些?
    發表于 07-21 07:59

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

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

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

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

    RAID技術的基本原理是什么

    RAID技術的基本原理是什么?RAID技術有哪幾個優勢?
    發表于 10-14 12:01

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

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

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

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

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

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

    步進馬達基本原理

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

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

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

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

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

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

    針對傳統俯視行人檢測方法提取的頭部特征單一、檢測錯誤率高的問題,提出了結合改進聚合通道特征(ACF)和灰度共生矩陣GLCM)的俯視行人檢測算法。首先,將提取到的HSV顏色特征、梯度幅
    發表于 12-24 16:59 ?6次下載
    使用結合改進聚合通道特征和<b class='flag-5'>灰度</b><b class='flag-5'>共生</b><b class='flag-5'>矩陣</b>設計的俯視行人檢測算法介紹
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>