在matlab中如何实现图像灰度共生矩阵?

如题所述

closeall\x0d\x0aclearall\x0d\x0aclc;\x0d\x0aI=imread('F:\图像变化检测\image\Textureimage(3.27)\texture5.tif');\x0d\x0a%I=rgb2gray(I);%%iftheinputimageisRGBform.\x0d\x0a%I=I(1:128,1:128);%%deriveasmallonejustfordemo\x0d\x0aI=im2double(I);\x0d\x0aw=15;\x0d\x0aI1=wextend('2D','sym',I,(w-1)/2);%I=wextend('2D','sys',I,[w/2-1/2,w/2-1/2]);thisisusedforoddsizewindow%扫描窗口的大小15*15,为之后程序方便找中心点可以将窗口设置成4*4-32*32之间的任何奇数窗口\x0d\x0a%\x0d\x0a%s=4;%thisvariableisusedforsettingtherangeofthedistancebetweeniandj,rememberdon'tsetsatoobignum.\x0d\x0a%A=zeros(s,1);\x0d\x0a%B=(1:s)';\x0d\x0a%offsets1=[AB;-BB;-BA;-B-B];%%setsthedirectionsanddistancewithinthepexiliandj\x0d\x0a%\x0d\x0aoffsets1=[01];%水平单步\x0d\x0a%\x0d\x0a[m,n]=size(I1);\x0d\x0aI11=zeros(m,n);%定义5个矩阵用于存放由graycomatrix产生的5个参数\x0d\x0aI12=zeros(m,n);%这样就能够再执行完一次操作后,利用得到的各种特征参数矩阵分别去聚类分割\x0d\x0aI13=zeros(m,n);%这样总的耗时短,不用每次都重新执行扫描窗口和共生矩阵来产生特征参数(这个最耗费时间)\x0d\x0aI14=zeros(m,n);\x0d\x0aI15=zeros(m,n);\x0d\x0afori=(w+1)/2:m-(w-1)/2\x0d\x0aforj=(w+1)/2:n-(w-1)/2\x0d\x0aW=zeros();\x0d\x0aW=I1(i-(w-1)/2:i+(w-1)/2,j-(w-1)/2:j+(w-1)/2);\x0d\x0a[glcms,SI]=graycomatrix(W,'NumLevels',8,'G',[],'offset',offsets1);\x0d\x0astats=graycoprops(glcms,'all');\x0d\x0aCon=[stats.Contrast];\x0d\x0aH=[stats.Homogeneity];\x0d\x0aCor=[stats.Correlation];\x0d\x0aEe=[stats.Energy];\x0d\x0a\x0d\x0aeigenvalue=mean(Con);\x0d\x0aI11(i,j)=eigenvalue;\x0d\x0aI12(i,j)=mean(H);\x0d\x0aI13(i,j)=mean(Cor);\x0d\x0aI14(i,j)=mean(Ee);\x0d\x0aI15(i,j)=mean(En);\x0d\x0aend\x0d\x0aend\x0d\x0a%\x0d\x0aI2=I15((w+1)/2:m-(w-1)/2,(w+1)/2:n-(w-1)/2);%%得到原始图像\x0d\x0ama=max(I2(:));\x0d\x0ami=min(I2(:));\x0d\x0aI3=(I2-mi)/(ma-mi);%%归一化\x0d\x0aI3=im2double(I3);
温馨提示:答案为网友推荐,仅供参考