基于复杂网络的纹理分析与分类

该博客介绍了一种基于复杂网络的纹理分析与分类方法,引用了相关文献并提供了Matlab代码复现实验过程,包括Pixel_value、Weight_matrix和Degree_matrix等关键步骤,展示了良好的实验效果。
摘要由CSDN通过智能技术生成

基于复杂网络的纹理分析与分类

文献:Texture analysis and classification: A complex network-based approach
文献链接
在这里插入图片描述

Matlab复现代码
Pixel_value.m

function [I_1,x,y]=Pixel_value(I)
I=double(I);
[x,y,z]=size(I);
IR=I(:,:,1);I_R=reshape(IR,x*y,1);
g=[];
for i=1:x
    x_co=linspace(i,i,x);y_co=linspace(1,x,x);
    X=x_co';Y=y_co';XY=[X,Y];
    g=[g;XY];
end
I_1=[g,I_R];
end

Weight_matrix.m

%算权值矩阵
function W=Weight_matrix(pixel,RADIUS,T,xy)         %像素、半径、xy
R=2*RADIUS^2;                                     %权值
L=(RADIUS^2/max(pixel(:,3)));                     %权值
w=zeros(xy,xy);

X=[pixel(:,1) pixel(:,2)];
D=pdist(X);
z=triu(squareform(D));
[p0,p1]=find(z>0&z<=RADIUS);
R_d=[p0 p1];
for i=1:length(p0)
    t=R_d(i,:);
    k1=t(:,1);r1=pixel(k1,:);z1=r1(:,3);          %像素1
    k2=t(:,2);r2=pixel(k2,:);z2=r2(:,3);          %像素2
    h=abs(z1-z2);
%     w(k1,k2)=(h*L+(z(k1,k2))^2)/R;
    w(k1,k2)=(abs(h)+z(k1,k2))/R;
    if w(k1,k2)>T
        w(k1,k2)=0;
    end
end
W=w+w';
end

Degree_matrix.m

addpath(genpath('./func'));
RADIUS=3;T=3;

a=imread('T01_36.jpg');%读入图片
b=imresize(a,[96,96]);
[pixel,x,y]=Pixel_value(b);xy=x*y;
W=Weight_matrix(pixel,RADIUS,T,xy);

graph_edges=graph(W);
Deg=degree(graph_edges);
D_matrix=reshape(Deg,x,y);
I=mat2gray(D_matrix);

figure(1);
histogram(D_matrix);
figure(2)
subplot(1,2,1);
imshow(b);
subplot(1,2,2);
I=mat2gray(D_matrix);
imshow(I);
% imwrite(I,'T04_40.jpg');

实验效果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值