MATLAB图像的表示与描述

MATLAB图像的表示与描述

一、彩色图像颜色值三个中心矩计算

rgb=imread('cdl.png');
rgb1=double(rgb);
r=rgb1(:,:,1);
g=rgb1(:,:,2);
b=rgb1(:,:,3);
[m,n]=size(r);
er=mean(mean(r(:)))
dr1=0.0;sr1=0.0;
for i=1 :m
    for j=1:n
        dr1=dr1+(r(i,j)-er)^2;
        sr1=sr1+(r(i,j)-er)^3;
    end
end
dr=sqrt(dr1/(m*n))
sr=(sr1/(m*n))^0.3333
eg=mean(mean(g(:)))
dg1=0.0;sg1=0.0;
for i=1 :m
    for j=1 :n
        dg1=dg1+(g(i,j)-eg)^2;
        sg1=sg1+(g(i,j)-eg)^3;
    end
end
dg=sqrt(dg1/(m*n))
sg=(sg1/(m*n))^0.3333
eb=mean (mean(b(:)))
db1=0.0;sb1=0.0;
for i=1 :m
    for j=1 :n
        db1=db1+(b(i,j)-eb)^2;
        sb1=sb1+(b(i,j)-eb)^3;
    end
end
db=sqrt(db1/(m*n))
sb=(sb1/(m*n))^0.3333

二、纹理统计特征计算

%%I1=imread('cdl.png');
%%I1=rgb2gray(I1);
I1=imread('whale.png');
I1=rgb2gray(I1);
h=imhist(I1);
h=h/sum(h);
L=length(h);
L=L-1;
h=h(:);
i=0:L;
i=i./L;
m=i*h;
i=i-m;
nu=zeros(1,3);
nu(1)=m;
for j=2:3
    nu(j)=(i.^j)*h;
end
u1=nu(1)*L;
u2=nu(2)*L^2;
u3=nu(3)*L^3;
f1=u1
f2=u2.^0.5
f3=1-1/(1+u2)
f4=u3/(L^2)
f5=sum(h.^2)
f6=-sum(h.*log2(h+eps))

三、图像边界的傅里叶描述子(这个与原文不一样,只显示图像,没做后续运算)

g=imread('cdl.png');
%subplot(231),imshow(g);title('原像');
imshow(g),figure
g=im2bw(g,0.5);%将原图像转换为二值图像
%subplot(232),imshow(g);title('二值图像');
imshow(g),figure

%title('freeman图像阈值处理后');
%函数boundaries(BW,CONN,DIR)表示的是跟踪目标的边界,返回值为一个p*1的数组单元,p为目标的个数
%每一个单元又是一个Q*2的矩阵,即Q个点的x,y坐标
B=boundaries(g);

%函数cellfun(FUN,C)是指对一个单元数组中的每一个单元应用函数FUN
d=cellfun('length',B);%求B中每一个目标边界的长度,所以返回值d是一个向量

[max_d,k]=max(d);%返回向量d中最大的值,存在max_d中,k为其索引。
v=B{k(1)};%如果最大边界不止一条,则取出其中的一条即可。v是一个坐标数组
[M,N]=size(g);

%函数bound2im(b,M,N,x0,y0)是生成一副二值图像,大小为M*N,x0和y0是b中最小的x和y轴坐标
g=bound2im(v,M,N,min(v(:,1)),min(v(:,2)));
imshow(g)
%subplot(233),imshow(g);
%title('最大边界后图像');

四、图像区域基本特征计算

A=imread('82a0b7d3.png');
A1=bwperim(A);
L=0;
[m,n]=size(A1);
for i=1:m*n
    if(A1(i)==1)
        L=L+1;
    end
end
L
[m,n]=size(A);
S=0;
for i=1:m*n
    if(A(i)==1)
        S=S+1;
    end
end
S
x=0;
y=0;
for i=1:m
    for j=1:n
        if(A(i,j)==1)
            x=i+x;
            y=j+y;
        end
    end
end
X=x/S
Y=y/S
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值