图像特征:指图像的原始特征或属性,分为视觉特征和统计特征。
视觉特征:人的视觉直接感受到的自然特征(如:图像的颜色、纹理和形状等);
统计特征:需要通过变换或测量才能得到的人为特征(如:频谱、直方图等)
颜色特征描述及MATLAB实现方法
颜色特征属于图像的内部特征,描述了图像或图像区域所对应景物的表面性质。
颜色特征的表示方法:颜色矩、颜色直方图、颜色相关等。
颜色矩
颜色矩:以数字方法为基础,通过计算矩来描述颜色的分布。
一阶矩:定义了每个颜色分量的平均强度
二阶矩:反映待测区域的颜色方差,即不均匀性
三阶矩:定义了颜色分量的偏斜度,即颜色的不对称性
利用函数mean2()和std()对灰度图像进行一阶矩、二阶矩、三阶矩的计算
close all; clear all; clc;
J=imread("flower.jpg");
K=imadjust(J,[70/255 160/255],[]); %灰度级调整:将【70 160】的灰度扩展到【0 255】,增强对比度
figure;
subplot(121),imshow(J);
subplot(122),imshow(K);
[m,n]=size(J); %求图像J数据矩阵的大小赋值给[m,n],表示m*n维矩阵
mm=round(m/2); %对m/2取整赋值给mm
mn=round(n/2);
[p,q]=size(K);
pp=round(p/2);
qq=round(q/2);
J=double(J);
K=double(K);
colorsum=0.0; %给灰度值总和赋0值
Javg=mean2(J); %求一阶矩
Kavg=mean2(K);
Jstd=std(std(J)); %求二阶矩
Kstd=std(std(K));
for i=1:mm %循环求解灰度值总和
for j=1:mn
colorsum=colorsum+(J(i,j)-Javg)^3;
end
end
Jske=(colorsum/(mm*mn))^(1/3) %求三阶矩
colorsum=0.0; %给灰度值总和赋0值
for i=1:pp
for j=1:qq
colorsum=colorsum+(J(i,j)-Kavg)^3;
end
end
Kske=(colorsum/(pp*qq))^(1/3)
基于颜色特征识别花朵与叶子
close all; clear all; clc;
I=imread('hua.jpg');
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
R=double(R);G=double(G);B=double(B);
Ravg1=mean2(R);
Gavg1=mean2(G);
Bavg1=mean2(B);
Rstd1=std(std(R));
Gstd1=std(std(G));
Bstd1=std(std(B));
J=imread('yezi,jpg');
R=J(:,:,1);
G=J(:,:,2);
B=J(:,:,3);
R=double(R);G=double(G);B=double(B);
Ravg2=mean2(R);
Gavg2=mean2(G);
Bavg2=mean2(B);
Rstd2=std(std(R));
Gstd2=std(std(G));
Bstd2=std(std(B));
K=imread('flower1.jpg');
figure;
subplot(131),imshow(K);
subplot(132),imshow(I);
subplot(133),imshow(J);
颜色直方图
颜色直方图:反映了图像颜色分布的统计特征,适用于描述那些难以自动分割的图像和不需要考虑物体空间位置的图像。
绘制彩色图像的R、G、B分量的直方图
close all; clear all; clc;
I=imread('flower.jpg');
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
figure;
subplot(121),imshow(I);
subplot(122),imshow(R);
figure;
subplot(121),imshow(G);
subplot(122),imshow(B);
figure;
subplot(131),imhist(I(:,:,1));
subplot(132),imhist(I(:,:,2));
subplot(133),imhist(I(:,:,3));
通过函数rgb2hsv()将颜色空间由RGB转换成HSV,求HSV颜色空间下的直方图
close all; clear all; clc;
J=imread('flower.jpg');
hsv=rgb2hsv(J);
h=hsv(:,:,1); %为色调d赋值
s=hsv(:,:,2); %为饱和度s赋值
v=hsv(:,:,3); %为亮度v赋值
havg=mean2(h); %求各分量的灰度均值
savg=mean2(s);
vavg=mean2(v);
figure;
subplot(131),imshow(h);
subplot(132),imshow(s);
subplot(133),imshow(v);
figure;
subplot(131),imhist(h);
subplot(132),imhist(s);
subplot(133),imhist(v);
纹理特征描述及MATLAB实现方法
纹理特征描述图像或图像区域所对应景物的表面性质,是从图像中计算出来的一个值,它对区域内部灰度级变化的特征进行量化。
纹理特征:周期性,反映物品的质地,如:粗糙度、光滑度、颗粒度、随机性、规范性。
灰度差分统计法
纹理区域的灰度直方图作为纹理特征,利用图像直方图提取诸如均值、方差、能量及熵等特征来描述纹理。
close all; clear all; clc;
J=imread('wall.jpg');
A=double(J);
[m,n]=size(A);
B=A;
C=zeros(m,n);
for i=1:m-1
for j=1:n-1
B(i,j)=A(i+1,j+1);
C(i,j)=abs(round(A(i,j)-B(i,j)));
end
end
h=imhist(mat2gray(C))/(m*n);
mean=0;con=0;ent=0;
for i=1:256
mean=mean+(i*h(i))/256;
con=con+i*i*h(i);
if(h(i)>0)
ent=ent-h(i)*log2(h(i));
end
end
mean,con,ent
subplot(121);imshow('stone.jpg');subplot(122);imshow('wall.jpg');
系相关函数法
自相关函数作为纹理测度,小数值的纹理测度表示细纹理,大数值测度表示粗纹理。
调用定义的自相关函数zxcor()对砖墙面和大理石纹理进行分析
#定义自相关函数zxcor(),建立zxcor.m文件
function [epsilon,eta,C]=zxcor(f,D,m,n)
for epsilon=1:D
for eta=1:D
temp=0;
fp=0;
for x=1:m
for y=1:n
if(x+epsilon-1)>m|(y+eta-1)>n
f1=0;
else
f1=f(x,y)*f(x+epsilon-1,y+eta-1);
end
temp=f1+temp
fp=f(x,y)*f(x*y)+fp;
end
end
f2(epsilon,eta)=temp;
f3(epsilon,sta)=fp;
C(epsilon,eta)=f2(epsilon,eta)/f3(epsilon,eta);
end
end
epsilon=0:(D-1)
eta=0:(D-1)
f11=imread('wall.jpg');
f1=rgb2gray(f11);
f1=double(f1);
[m,n]=size(f1);
D=20;
[epsilon1,eta1,C1]=zxcor1(f1,D,m,n);
f22=imread('stone.jpg');
f2=rgb2gray(f22);
f2=double(f2);
[m,n]=size(f2);
[epsilon2,eta2,C2]=zxcor1(f2,20,m,n);
figure;
subplot(121);imshow(f11);
subplot(122);imshow(f22);
figure;
subplot(121);mesh(epsilon1,eta1,C1);
xlabel('epsilon');ylabel('eta');
subplot(122);mesh(epsilon2,eta2,C2);
xlabel('epsilon');ylabel('eta');