图像 灰度共生矩阵怎么在matlab中实现,要具体源程序

图像 灰度共生矩阵怎么在matlab中实现,要具体源程序,第1张

matlab提供了现成的函数

graycomatrix生成共生矩阵

graycoprops计算其特征值

具体用法:

glcm = graycomatrix(I)

从图像I创建灰度共生矩阵glcm。通过计算具有灰度级i和灰度级j的像素对在水平方向相邻出现的频繁程度。glcm中的每个元素说明了水平方向相邻像素对出现的次数。如果灰度级为L则glcm的维数为L*L。

2.glcms = graycomatrix(I,param1,val1,param2,val2,...)

根据参数对的设定,返回一个或多个灰度共生矩阵。

参数说明:

'GrayLimits':灰度界限,为二元向量[low high]。灰度值小于等于low 时对应1,大于等于high时对应于灰度级。如果参数设为[],则共生矩阵使用图像的最小和最大灰度值作为界限,即[min(I(:)) max(I(:))]。

'NumLevels':整数,说明I中进行灰度缩放的灰度级数目。例如,如果NumLevel设为8,则共生矩阵缩放I中的灰度值使它们为1到8之间的整数。灰度级的数目决定了共生矩阵glcm的尺寸。缺省情况:数字图像:8;二进制图像:2。

'Offset':p行2列整型矩阵,说明感兴趣像素与其相邻像素之间的距离。每行是一个说明像素对之间偏移关系的二元向量[row_offset, col_offset]。行偏移row_offset是感兴趣像素和其相邻像素之间的间隔行数。列偏移同理。偏移常表达为一个角度,常用的角度如下:(其中D为像素距离)

角度 0 45 90 135

Offset [0,D] [-D D] [-D 0] [-D -D]

3.[glcms,SI] = graycomatrix(...)

返回缩放图像SI,SI是用来计算灰度共生矩阵的。SI中的元素值介于1和灰度级数目之间。

graycoprops:得到灰度共生矩阵得到各种属性

stats = graycoprops(glcm, properties):从灰度共生矩阵glcm计算静态属性。glcm是m*n*p的有效灰度共生矩阵。如果glcm是一个灰度共生矩阵的矩阵,则stats是包括每个灰度共生矩阵静态属性的矩阵。

graycoprops正规化了灰度共生矩阵,因此元素之和为1。正规化的GLCM中的元素(r,c)是具有灰度级r和c的定义的空间关系的像素对的联合概率。Graycoprops使用正规化的GLCM来计算属性。

属性参数如下:

1. 'Contrast' : 对比度。返回整幅图像中像素和它相邻像素之间的亮度反差。取值范围:[0,(GLCM行数-1)^2]。灰度一致的图像,对比度为0。

2. 'Correlation' : 相关。返回整幅图像中像素与其相邻像素是如何相关的度量值。取值范围:[-1,1]。灰度一致的图像,相关性为NaN。

3. 'Energy' : 能量。返回GLCM中元素的平方和。取值范围:[0 1]。灰度一致的图像能量为1。

4. 'Homogemeity' : 同质性。返回度量GLCM中元素的分布到对角线紧密程度。取值范围:[0 1]。对角矩阵的同质性为1。

close all

clear all

clc

I=imread('F:\图像变化检测\image\Texture image(3.27)\texture5.tif')

%I=rgb2gray(I) %% if the input image is RGB form.

%I=I(1:128,1:128) %% derive a small one just for demo

I=im2double(I)

w=15

I1=wextend('2D','sym',I,(w-1)/2) %I=wextend('2D','sys',I,[w/2-1/2,w/2-1/2])this is used for odd size window %扫描窗口的大小15*15,为之后程序方便找中心点可以将窗口设置成4*4-32*32之间的任何奇数窗口

%

%s=4 %this variable is used for setting the range of the distance between i and j,remember don't set s a too big num.

%A=zeros(s,1)

%B=(1:s)'

%offsets1 = [A B-B B-B A-B -B] %% sets the directions and distance within the pexil i and j

%

offsets1=[0 1] %水平单步

%

[m,n]=size(I1)

I11=zeros(m,n) %定义5个矩阵用于存放由graycomatrix产生的5个参数

I12=zeros(m,n) %这样就能够再执行完一次 *** 作后,利用得到的各种特征参数矩阵分别去聚类分割

I13=zeros(m,n) %这样总的耗时短,不用每次都重新执行扫描窗口和共生矩阵来产生特征参数(这个最耗费时间)

I14=zeros(m,n)

I15=zeros(m,n)

for i=(w+1)/2:m-(w-1)/2

for j=(w+1)/2:n-(w-1)/2

W=zeros()

W=I1(i-(w-1)/2:i+(w-1)/2,j-(w-1)/2:j+(w-1)/2)

[glcms,SI] = graycomatrix(W,'NumLevels',8,'G',[],'offset',offsets1)

stats = graycoprops(glcms,'all')

Con=[stats.Contrast]

H=[stats.Homogeneity]

Cor=[stats.Correlation]

Ee=[stats.Energy]

eigenvalue=mean(Con)

I11(i,j)=eigenvalue

I12(i,j)=mean(H)

I13(i,j)=mean(Cor)

I14(i,j)=mean(Ee)

I15(i,j)=mean(En)

end

end

%

I2=I15((w+1)/2:m-(w-1)/2,(w+1)/2:n-(w-1)/2)%%得到原始图像

ma=max(I2(:))

mi=min(I2(:))

I3=(I2-mi)/(ma-mi)%%归一化

I3=im2double(I3)


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8095296.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存