共生矩阵用两个位置的象素的联合概率密度来定义,它不仅反映亮度的分布特性,也反映具有同样亮度或接近亮度的象素之间的位置分布特性,是有关图象亮度变化的二阶统计特征。它是定义一组纹理特征的基础。

由于纹理是由灰度分布在空间位置上反复出现而形成的,因而在图像空间中相隔某距离的两象素之间会存在一定的灰度关系,即图像中灰度的空间相关特性。灰度共生矩阵就是一种通过研究灰度的空间相关特性来描述纹理的常用方法。(来自百度百科)

灰度直方图是对图像上单个象素具有某个灰度进行统计的结果,而灰度共生矩阵是对图像上保持某距离的两象素分别具有某灰度的状况进行统计得到的。  

      取图像(N×N)中任意一点 (x,y)及偏离它的另一点 (x+a,y+b),设该点对的灰度值为(g1,g2)。令点(x,y) 在整个画面上移动,则会得到各种 (g1,g2)值,设灰度值的级数为 k,则(g1,g2) 的组合共有 k²种。对于整个画面,统计出每一种(g1,g2)值出现的次数,然后排列成一个方阵,在用(g1,g2) 出现的总次数将它们归一化为出现的概率P(g1,g2),这样的方阵称为灰度共生矩阵。距离差分值(a,b) 取不同的数值组合,可以得到不同情况下的联合概率矩阵。(a,b)取值要根据纹理周期分布的特性来选择,对于较细的纹理,选取(1,0)、(1,1)、(2,0)等小的差分值。  当 a=1,b=0时,像素对是水平的,即0度扫描;当a=0,b=1 时,像素对是垂直的,即90度扫描;当 a=1,b=1时,像素对是右对角线的,即45度扫描;当 a=-1,b=-1时,像素对是左对角线,即135度扫描。
       这样,两个象素灰度级同时发生的概率,就将 (x,y)的空间坐标转化为“灰度对” (g1,g2)的描述,形成了灰度共生矩阵。(百度百科)

一幅图象的灰度共生矩阵能反映出图象灰度关于方向、相邻间隔、变化幅度的综合信息,它是分析图象的局部模式和它们排列规则的基础。

  设f(x,y)为一幅二维数字图象,其大小为M×N,灰度级别为Ng,则满足一定空间关系的灰度共生矩阵为

P(i,j)=#{(x1,y1),(x2,y2)∈M×N|f(x1,y1)=i,f(x2,y2)=j}

  其中#(x)表示集合x中的元素个数,显然P为Ng×Ng的矩阵,若(x1,y1)与(x2,y2)间距离为d,两者与坐标横轴的夹角为θ,则可以得到各种间距及角度的灰度共生矩阵P(i,j,d,θ)。

纹理特征提取的一种有效方法是以灰度级的空间相关矩阵即共生矩阵为基础的[7],因为图像中相距(Δx,Δy)的两个灰度像素同时出现的联合频率分布可以用灰度共生矩阵来表示。若将图像的灰度级定为N级,那么共生矩阵为N×N矩阵,可表示为M(Δx,Δy)(h,k),其中位于(h,k)的元素mhk的值表示一个灰度为h而另一个灰度为k的两个相距为(Δx,Δy)的像素对出现的次数。
  对粗纹理的区域,其灰度共生矩阵的mhk值较集中于主对角线附近。因为对于粗纹理,像素对趋于具有相同的灰度。而对于细纹理的区域,其灰度共生矩阵中的mhk值则散布在各处。

为了能更直观地以共生矩阵描述纹理状况,从共生矩阵导出一些反映矩阵状况的参数,典型的有以下几种:

(1)能量:是灰度共生矩阵元素值的平方和,所以也称能量,反映了图像灰度分布均匀程度和纹理粗细度。如果共生矩阵的所有值均相等,则ASM值小;相反,如果其中一些值大而其它值小,则ASM值大。当共生矩阵中元素集中分布时,此时ASM值大。ASM值大表明一种较均一和规则变化的纹理模式。

(2)对比度: ,其中。反映了图像的清晰度和纹理沟纹深浅的程度。纹理沟纹越深,其对比度越大,视觉效果越清晰;反之,对比度小,则沟纹浅,效果模糊。灰度差即对比度大的象素对越多,这个值越大。灰度公生矩阵中远离对角线的元素值越大,CON越大。

(3)相关:它度量空间灰度共生矩阵元素在行或列方向上的相似程度,因此,相关值大小反映了图像中局部灰度相关性。当矩阵元素值均匀相等时,相关值就大;相反,如果矩阵像元值相差很大则相关值小。如果图像中有水平方向纹理,则水平方向矩阵的COR大于其余矩阵的COR值。

(4)熵:是图像所具有的信息量的度量,纹理信息也属于图像的信息,是一个随机性的度量,当共生矩阵中所有元素有最大的随机性、空间共生矩阵中所有值几乎相等时,共生矩阵中元素分散分布时,熵较大。它表示了图像中纹理的非均匀程度或复杂程度。

(5)逆差距: 反映图像纹理的同质性,度量图像纹理局部变化的多少。其值大则说明图像纹理的不同区域间缺少变化,局部非常均匀。

共生矩阵用两个位置的象素的联合概率密度来定义,它不仅反映亮度的分布特性,也反映具有同样亮度或接近亮度的象素之间的位置分布特性,是有关图象亮度变化的二阶统计特征。它是定义一组纹理特征的基础。

由于纹理是由灰度分布在空间位置上反复出现而形成的,因而在图像空间中相隔某距离的两象素之间会存在一定的灰度关系,即图像中灰度的空间相关特性。灰度共生矩阵就是一种通过研究灰度的空间相关特性来描述纹理的常用方法。(来自百度百科)

灰度直方图是对图像上单个象素具有某个灰度进行统计的结果,而灰度共生矩阵是对图像上保持某距离的两象素分别具有某灰度的状况进行统计得到的。  

      取图像(N×N)中任意一点 (x,y)及偏离它的另一点 (x+a,y+b),设该点对的灰度值为(g1,g2)。令点(x,y) 在整个画面上移动,则会得到各种 (g1,g2)值,设灰度值的级数为 k,则(g1,g2) 的组合共有 k²种。对于整个画面,统计出每一种(g1,g2)值出现的次数,然后排列成一个方阵,在用(g1,g2) 出现的总次数将它们归一化为出现的概率P(g1,g2),这样的方阵称为灰度共生矩阵。距离差分值(a,b) 取不同的数值组合,可以得到不同情况下的联合概率矩阵。(a,b)取值要根据纹理周期分布的特性来选择,对于较细的纹理,选取(1,0)、(1,1)、(2,0)等小的差分值。  当 a=1,b=0时,像素对是水平的,即0度扫描;当a=0,b=1 时,像素对是垂直的,即90度扫描;当 a=1,b=1时,像素对是右对角线的,即45度扫描;当 a=-1,b=-1时,像素对是左对角线,即135度扫描。
       这样,两个象素灰度级同时发生的概率,就将 (x,y)的空间坐标转化为“灰度对” (g1,g2)的描述,形成了灰度共生矩阵。(百度百科)

一幅图象的灰度共生矩阵能反映出图象灰度关于方向、相邻间隔、变化幅度的综合信息,它是分析图象的局部模式和它们排列规则的基础。

  设f(x,y)为一幅二维数字图象,其大小为M×N,灰度级别为Ng,则满足一定空间关系的灰度共生矩阵为

P(i,j)=#{(x1,y1),(x2,y2)∈M×N|f(x1,y1)=i,f(x2,y2)=j}

  其中#(x)表示集合x中的元素个数,显然P为Ng×Ng的矩阵,若(x1,y1)与(x2,y2)间距离为d,两者与坐标横轴的夹角为θ,则可以得到各种间距及角度的灰度共生矩阵P(i,j,d,θ)。

纹理特征提取的一种有效方法是以灰度级的空间相关矩阵即共生矩阵为基础的[7],因为图像中相距(Δx,Δy)的两个灰度像素同时出现的联合频率分布可以用灰度共生矩阵来表示。若将图像的灰度级定为N级,那么共生矩阵为N×N矩阵,可表示为M(Δx,Δy)(h,k),其中位于(h,k)的元素mhk的值表示一个灰度为h而另一个灰度为k的两个相距为(Δx,Δy)的像素对出现的次数。
  对粗纹理的区域,其灰度共生矩阵的mhk值较集中于主对角线附近。因为对于粗纹理,像素对趋于具有相同的灰度。而对于细纹理的区域,其灰度共生矩阵中的mhk值则散布在各处。

为了能更直观地以共生矩阵描述纹理状况,从共生矩阵导出一些反映矩阵状况的参数,典型的有以下几种:

(1)能量:是灰度共生矩阵元素值的平方和,所以也称能量,反映了图像灰度分布均匀程度和纹理粗细度。如果共生矩阵的所有值均相等,则ASM值小;相反,如果其中一些值大而其它值小,则ASM值大。当共生矩阵中元素集中分布时,此时ASM值大。ASM值大表明一种较均一和规则变化的纹理模式。

(2)对比度: ,其中。反映了图像的清晰度和纹理沟纹深浅的程度。纹理沟纹越深,其对比度越大,视觉效果越清晰;反之,对比度小,则沟纹浅,效果模糊。灰度差即对比度大的象素对越多,这个值越大。灰度公生矩阵中远离对角线的元素值越大,CON越大。

(3)相关:它度量空间灰度共生矩阵元素在行或列方向上的相似程度,因此,相关值大小反映了图像中局部灰度相关性。当矩阵元素值均匀相等时,相关值就大;相反,如果矩阵像元值相差很大则相关值小。如果图像中有水平方向纹理,则水平方向矩阵的COR大于其余矩阵的COR值。

(4)熵:是图像所具有的信息量的度量,纹理信息也属于图像的信息,是一个随机性的度量,当共生矩阵中所有元素有最大的随机性、空间共生矩阵中所有值几乎相等时,共生矩阵中元素分散分布时,熵较大。它表示了图像中纹理的非均匀程度或复杂程度。

(5)逆差距: 反映图像纹理的同质性,度量图像纹理局部变化的多少。其值大则说明图像纹理的不同区域间缺少变化,局部非常均匀。

实现一:

%灰度共生矩阵纹理特征提取 
%提取了三个特征参数。f1为角二阶矩,f2为相关度,f3为熵
clc
clear all
tu=imread('f:/test/5.bmp');
IN=rgb2gray(tu);
%灰度化
g=256;
[R,C]=size(IN); 
p1=zeros(g);
%计算共生矩阵
for M=1:R 
    for N=1:(C-1)
        p1(IN(M,N)+1,IN(M,N+1)+1)= p1(IN(M,N)+1,IN(M,N+1)+1)+1;
        p1(IN(M,N+1)+1,IN(M,N)+1)= p1(IN(M,N+1)+1,IN(M,N)+1)+1; 
    end
end
p2=double(p1)/(M*N);
%归一化
%计算角二阶矩f1
f1=p2.^2;
f1=sum(f1(:)) 
% 计算相关度 f2
colour=0:(g-1); 
m1=sum(p2)*colour(:);
m2=m1; pp=sum(p2);
v1=((colour-m1).^2)*pp(:); 
v2=v1; [m,n]=meshgrid(colour,colour);
pp=m.*n.*p2; 
f2=(sum(pp(:))-m1*m2)/(v1+eps)*(v2+eps) 
%计算墒 f3
pp=(p2.*log2(p2+eps));
f3=-sum(pp(:))

实现二:

%**************************************************************************
%                   图像检索——纹理特征
%基于共生矩阵纹理特征提取,d=1,θ=0°,45°,90°,135°共四个矩阵
%所用图像灰度级均为256
%参考《基于颜色空间和纹理特征的图像检索》
%function : T=Texture(Image)
%Image    : 输入图像数据
%T        : 返回八维纹理特征行向量:能量、熵、惯性矩、相关的均值和标准差
%**************************************************************************
% function T = Texture(Image)
Gray = imread('1.jpg');
[M,N,O] = size(Gray);
% M = 128;
% N = 128;

%--------------------------------------------------------------------------
%1.将各颜色分量转化为灰度
%--------------------------------------------------------------------------
% Gray = double(0.3*Image(:,:,1)+0.59*Image(:,:,2)+0.11*Image(:,:,3));

%--------------------------------------------------------------------------
%2.为了减少计算量,对原始图像灰度级压缩,将Gray量化成16级
%--------------------------------------------------------------------------
for i = 1:M
    for j = 1:N
        for n = 1:256/16
            if (n-1)*16<=Gray(i,j)&Gray(i,j)<=(n-1)*16+15
                Gray(i,j) = n-1;
            end
        end
    end
end

%--------------------------------------------------------------------------
%3.计算四个共生矩阵P,取距离为1,角度分别为0,45,90,135
%--------------------------------------------------------------------------
P = zeros(16,16,4);
for m = 1:16
    for n = 1:16
        for i = 1:M
            for j = 1:N
                if j<N&Gray(i,j)==m-1&Gray(i,j+1)==n-1
                    P(m,n,1) = P(m,n,1)+1;
                    P(n,m,1) = P(m,n,1);
                end
                if i>1&j<N&Gray(i,j)==m-1&Gray(i-1,j+1)==n-1
                    P(m,n,2) = P(m,n,2)+1;
                    P(n,m,2) = P(m,n,2);
                end
                if i<M&Gray(i,j)==m-1&Gray(i+1,j)==n-1
                    P(m,n,3) = P(m,n,3)+1;
                    P(n,m,3) = P(m,n,3);
                end
                if i<M&j<N&Gray(i,j)==m-1&Gray(i+1,j+1)==n-1
                    P(m,n,4) = P(m,n,4)+1;
                    P(n,m,4) = P(m,n,4);
                end
            end
        end
        if m==n
            P(m,n,:) = P(m,n,:)*2;
        end
    end
end

%%---------------------------------------------------------
% 对共生矩阵归一化
%%---------------------------------------------------------
for n = 1:4
    P(:,:,n) = P(:,:,n)/sum(sum(P(:,:,n)));
end

%--------------------------------------------------------------------------
%4.对共生矩阵计算能量、熵、惯性矩、相关4个纹理参数
%--------------------------------------------------------------------------
H = zeros(1,4);
I = H;
Ux = H;      Uy = H;
deltaX= H;  deltaY = H;
C =H;
for n = 1:4
    E(n) = sum(sum(P(:,:,n).^2)); %%能量
    for i = 1:16
        for j = 1:16
            if P(i,j,n)~=0
                H(n) = -P(i,j,n)*log(P(i,j,n))+H(n); %%熵
            end
            I(n) = (i-j)^2*P(i,j,n)+I(n);  %%惯性矩
          
            Ux(n) = i*P(i,j,n)+Ux(n); %相关性中μx
            Uy(n) = j*P(i,j,n)+Uy(n); %相关性中μy
        end
    end
end
for n = 1:4
    for i = 1:16
        for j = 1:16
            deltaX(n) = (i-Ux(n))^2*P(i,j,n)+deltaX(n); %相关性中σx
            deltaY(n) = (j-Uy(n))^2*P(i,j,n)+deltaY(n); %相关性中σy
            C(n) = i*j*P(i,j,n)+C(n);            
        end
    end
    C(n) = (C(n)-Ux(n)*Uy(n))/deltaX(n)/deltaY(n); %相关性  
end

%--------------------------------------------------------------------------
%求能量、熵、惯性矩、相关的均值和标准差作为最终8维纹理特征
%--------------------------------------------------------------------------
a1 = mean(E)  
b1 = sqrt(cov(E))

a2 = mean(H)
b2 = sqrt(cov(H))

a3 = mean(I) 
b3 = sqrt(cov(I))

a4 = mean(C)
b4 = sqrt(cov(C))

sprintf('0,45,90,135方向上的能量依次为: %f, %f, %f, %f',E(1),E(2),E(3),E(4))  % 输出数据;
sprintf('0,45,90,135方向上的熵依次为: %f, %f, %f, %f',H(1),H(2),H(3),H(4))  % 输出数据;
sprintf('0,45,90,135方向上的惯性矩依次为: %f, %f, %f, %f',I(1),I(2),I(3),I(4))  % 输出数据;
sprintf('0,45,90,135方向上的相关性依次为: %f, %f, %f, %f',C(1),C(2),C(3),C(4))  % 输出数据;

sprintf('最终8维纹理特征: %f, %f, %f, %f,%f, %f, %f, %f',a1,b1,a2,b2,a3,b3,a4,b4)  % 输出数据;

灰度共生矩阵原理+Matlab中实现相关推荐

  1. 灰度共生矩阵及matlab实现

    matlab函数: graycomatrix() 功           能:创建灰度共生矩阵 Gray-level co-occurrence matrix from an image 图像的灰度共 ...

  2. matlab 灰度共生矩阵熵,图像的灰度共生矩阵GLCM(matlab 函数帮助).

    Gray-level co-occurrence matrix from an image 图像的灰度共生矩阵 灰度共生矩阵是像素距离和角度的矩阵函数,它穿越计算图像中定然距离和定然方向的两点灰度之间 ...

  3. 灰度共生矩阵的MatLab实现

    上周五在复现一篇论文("Visual-Salience-Based Tone Mapping for High Dynamic Range Images")中的算法时涉足到了基于灰 ...

  4. histeq matlab原理,MATLAB中histeq的原理以及自写的具体实现函数

    1.什么是直方图? 直方图是数字图像处理中一个简单而重要的常用工具,它从总体上刻画了一幅图像的灰度内容. 具体来说,直方图描述的是图像中具有各灰度级的出现的概率(像素的个数),其横坐标为灰度级,纵坐标 ...

  5. matlab图像读取原理,matlab中imread读入图像的原理

    imread的使用方法是: I=imread('C:\XXXX\XXXX.jpg'); I = imread('E:\2012\The standard image\Lena.bmp'); I1 = ...

  6. matlab灰色共生矩阵,matlab灰度共生矩阵

    P. 通过实验证明了基于灰度共生矩阵的统计特征的有效性.洪继光于 1984 年在灰...0.0931894 图 2 实验用半调图 该结果各项数据经与使用 Matlab 处理的结果...... 针对图像 ...

  7. bp 神经网络 优点 不足_【学术论文】基于灰度共生矩阵和BP神经网络的乳腺肿瘤识别...

    摘要 乳腺肿瘤是女性病发率极高的一种肿瘤疾病, 但也是一种可以通过早期确诊.提早治疗来降低病死率的一种疾病.提出灰度共生矩阵结合BP神经网络的方法, 提高乳腺肿瘤的识别率.首先将红外乳腺图像进行预处理 ...

  8. Glcm 灰度共生矩阵,保姆级别教程,获取图片的Glcm和基于Glcm的纹理特征,附讲解思路,python代码的实现

    保姆级别教程,获取图片的Glcm和基于Glcm的纹理特征,附讲解思路,python代码的实现 网络上Glcm的原理很多,但是实现的python代码我确实没找到,讲的也不是很清楚 此文介绍了如何在一张图 ...

  9. 二维特征分类的基础_纹理特征1:灰度共生矩阵(GLCM)

    GLCM复习备用: 纹理分析是对图像灰度(浓淡)空间分布模式的提取和分析.纹理分析在遥感图像.X射线照片.细胞图像判读和处理方面有广泛的应用.关于纹理,还没有一个统一的数学模型.它起源于表征纺织品表面 ...

最新文章

  1. 由各大企业移除MongoDB,回看关系模型与文档模型之争
  2. spring面试问题与答案集锦
  3. java.sql.SQLException: The server time zone value ‘???ú±ê×??±??‘ is unrecognized or represents more
  4. mod_python模块安装
  5. 导入,导出字符和数字的转换
  6. 极其良心的设计导航网站
  7. 我的世界服务器启动后自动关闭,求解,服务器老师莫名其妙自动关闭,为什么会这样呢?...
  8. 《深入理解Android2》读书笔记(五)
  9. size()和 strlen区别
  10. 产品经理入门知识梳理(含思维导图
  11. 硬盘分区怎么不删除文件合并_硬盘分区怎么合并?
  12. Android图片拼接
  13. ORACLE的语言从中文修改为英文
  14. 熟练度=正确的知识 X 大量的刻意练习。
  15. Unknown column ‘id‘ in ‘field list‘ 【排错·sql】
  16. Android视频背景,动态背景,Android用视频做背景的轻松实现
  17. 微服务来了,监控怎么办?
  18. 实习,内推,校招,社招的区别和联系
  19. 思科路由器开启DNS解析
  20. 一次性下载CVPR/ICCV/ECCV会议所有论文并提取论文标题重命名pdf文件

热门文章

  1. MapReduce是什么,MapReduce概念
  2. [2016 T-EDGE]王坚对话无人机教父:创新就要享受走在悬崖边的刺激
  3. MMD初尝试1(骨骼系统)
  4. JAVA 中的 反射
  5. layui数据表格的使用
  6. linux 中的.so和.a文件
  7. JAVA开发装机必备软件
  8. word行首空格下划线_行首空格和下划线问题的解决
  9. 安卓onKeyDown事件
  10. DPark安装及相关资料整理