
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 allclear 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)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)