suffer 发表于 2006-11-13 10:35

灰度共生矩阵MATLAB实现

灰度共生矩阵MATLAB实现 联合概率矩阵法是对图像的所有像素进行统计调查,以便描述其灰度分布的一种方法。

function =compute(temp_m,graynum,dist)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:graynum
    for j=1:graynum
      matH(i,j)=0;matV(i,j)=0;matRD(i,j)=0;matLD(i,j)=0;
    end
end

double total;total=0;

       for m=1:16
            for n=1:16
            newimage(m,n)=ceil(temp_m(m,n)/(256/graynum));
            end
      end
      
      %%% 0
      for m=1:16
            for n=1:16-dist
                matH(newimage(m,n),newimage(m,n+dist))=matH(newimage(m,n),newimage(m,n+dist))+1;
                matH(newimage(m,n+dist),newimage(m,n))=matH(newimage(m,n+dist),newimage(m,n))+1;
            end
      end
         
      %%%%%%%%%%%%%%% 90
      for m=1:16-dist
            for n=1:16
                matV(newimage(m,n),newimage(m+dist,n))=matV(newimage(m,n),newimage(m+dist,n))+1;
                matV(newimage(m+dist,n),newimage(m,n))=matV(newimage(m+dist,n),newimage(m,n))+1;
            end
      end
      
      %%%%%%%%%%%%%%%%%%%   135
      for m=1:16-dist
            for n=16-dist
                matLD(newimage(m,n),newimage(m+dist,n+dist))= matLD(newimage(m,n),newimage(m+dist,n+dist))+1;
                matLD(newimage(m+dist,n+dist),newimage(m,n))= matLD(newimage(m+dist,n+dist),newimage(m,n))+1;
            end
      end
      
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   45
      for m=dist:16
            for n=1:16-dist
                matRD(newimage(m,n),newimage(m-dist+1,n+dist))=matRD(newimage(m,n),newimage(m-dist+1,n+dist))+1;
                matRD(newimage(m-dist+1,n+dist),newimage(m,n))=matRD(newimage(m-dist+1,n+dist),newimage(m,n))+1;
            end
      end
      
         
       %%%%%%%%%%%%%%
            for m=1:graynum
                for n=1:graynum
                  total=total+matH(m,n);
                end
            end
      
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
          for m=1:graynum
                for n=1:graynum
                  mat_temp(m,n)=matH(m,n)/total;
                  mat_temp(m,n)=double(mat_temp(m,n));
                end
            end
            
            %%%%over

pleaseopen 发表于 2006-11-16 13:05

能简单介绍一下理论背景、应用情况?

suffer 发表于 2006-11-20 08:26

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

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

  设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值则散布在各处。

fenghai222 发表于 2006-11-21 21:41

正在学图像处理,多谢楼主介绍

yuqian19861115 发表于 2008-8-2 10:07

询问

你能介绍一下实现的大概思路吗 以便理解程序

tuoniao992002 发表于 2010-1-26 22:48

回复 楼主 suffer 的帖子

matlab里面有这个函数啊, graycomatrix

问题主要在于得到统计的共生矩阵以后
该怎么来利用这个共生矩阵进行图像分割啊??
望详细说明

[ 本帖最后由 ChaChing 于 2010-1-26 23:49 编辑 ]
页: [1]
查看完整版本: 灰度共生矩阵MATLAB实现