声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5015|回复: 5

[共享资源] 灰度共生矩阵MATLAB实现

[复制链接]
发表于 2006-11-13 10:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

  1. function [mat_temp]=compute(temp_m,graynum,dist)

  2. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  3. for i=1:graynum
  4.     for j=1:graynum
  5.         matH(i,j)=0;matV(i,j)=0;matRD(i,j)=0;matLD(i,j)=0;
  6.     end
  7. end

  8. double total;total=0;

  9.        for m=1:16
  10.             for n=1:16
  11.               newimage(m,n)=ceil(temp_m(m,n)/(256/graynum));
  12.             end
  13.         end
  14.         
  15.         %%% 0
  16.         for m=1:16
  17.             for n=1:16-dist
  18.                 matH(newimage(m,n),newimage(m,n+dist))=matH(newimage(m,n),newimage(m,n+dist))+1;
  19.                 matH(newimage(m,n+dist),newimage(m,n))=matH(newimage(m,n+dist),newimage(m,n))+1;
  20.             end
  21.         end
  22.            
  23.         %%%%%%%%%%%%%%% 90
  24.         for m=1:16-dist
  25.             for n=1:16
  26.                 matV(newimage(m,n),newimage(m+dist,n))=matV(newimage(m,n),newimage(m+dist,n))+1;
  27.                 matV(newimage(m+dist,n),newimage(m,n))=matV(newimage(m+dist,n),newimage(m,n))+1;
  28.             end
  29.         end
  30.         
  31.         %%%%%%%%%%%%%%%%%%%   135
  32.         for m=1:16-dist
  33.             for n=16-dist
  34.                 matLD(newimage(m,n),newimage(m+dist,n+dist))= matLD(newimage(m,n),newimage(m+dist,n+dist))+1;
  35.                 matLD(newimage(m+dist,n+dist),newimage(m,n))= matLD(newimage(m+dist,n+dist),newimage(m,n))+1;
  36.             end
  37.         end
  38.         
  39.         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%   45
  40.         for m=dist:16
  41.             for n=1:16-dist
  42.                 matRD(newimage(m,n),newimage(m-dist+1,n+dist))=matRD(newimage(m,n),newimage(m-dist+1,n+dist))+1;
  43.                 matRD(newimage(m-dist+1,n+dist),newimage(m,n))=matRD(newimage(m-dist+1,n+dist),newimage(m,n))+1;
  44.             end
  45.         end
  46.         
  47.          
  48.        %%%%%%%%%%%%%%
  49.             for m=1:graynum
  50.                 for n=1:graynum
  51.                     total=total+matH(m,n);
  52.                 end
  53.             end
  54.         
  55.     %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  56.           for m=1:graynum
  57.                 for n=1:graynum
  58.                     mat_temp(m,n)=matH(m,n)/total;
  59.                     mat_temp(m,n)=double(mat_temp(m,n));
  60.                 end
  61.             end
  62.             
  63.             %%%%  over
复制代码
回复
分享到:

使用道具 举报

发表于 2006-11-16 13:05 | 显示全部楼层
能简单介绍一下理论背景、应用情况?
 楼主| 发表于 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值则散布在各处。
发表于 2006-11-21 21:41 | 显示全部楼层
正在学图像处理,多谢楼主介绍
发表于 2008-8-2 10:07 | 显示全部楼层

询问

你能介绍一下实现的大概思路吗 以便理解程序
发表于 2010-1-26 22:48 | 显示全部楼层

回复 楼主 suffer 的帖子

matlab里面有这个函数啊, graycomatrix

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

[ 本帖最后由 ChaChing 于 2010-1-26 23:49 编辑 ]

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-17 08:40 , Processed in 0.093569 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表