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

 我来答
酷呆爱死呆
推荐于2019-08-21 · TA获得超过4240个赞
知道大有可为答主
回答量:507
采纳率:100%
帮助的人:1153万
展开全部
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);
东莞大凡
2024-08-07 广告
OpenCV标定板是东莞市大凡光学科技有限公司在相机标定中常用的工具。它通常由黑白格点按一定规则排列在平面上组成,如棋盘格或圆形格等。在相机标定时,将标定板置于不同位置和姿态下拍摄图像,利用OpenCV库中的函数检测标定板上的角点或圆心,进... 点击进入详情页
本回答由东莞大凡提供
IT168
2022-12-17 · 百度认证:IT168官方账号,优质数码领域创作者
IT168
IT168是中国最大的个人和企业IT产品选购、互动网站,每日提供最新的IT产品报价、促销行情、手机、平板、笔记本、相机和企业等50个频道提供最专业的产品选购和使用建议。
向TA提问
展开全部
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);
  • 官方服务
    • 官方网站
    • 官方网站
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式