clear
% FD傅里叶描述子%Ar面积
%perimeter周长
%rectangle矩形度
%compactness紧凑度/圆度
%elongatedness延长度
%Roundness似圆度
%l1长轴
%l2短轴
%M7个不变矩
% T纹理特征提取
% C HSV非等间隔量化及L特征提取
J = imread('DSC_0100.jpg');
JG=rgb2gray(J);%生成灰度图像
JMean = medfilt2(JG,[3 3]); %进行3X3模板中值滤
JB=im2bw(JMean,0.8);
JB1=bwmorph(JB,'dilate',9);%去除害虫触角
JB1=~JB1;
B0=edge( JB1,'sobel');%边界提取
%————————————————————
%以上是背景分割
%——————————
%傅里叶描述子
FD = fourierdescriptors(B0);% FD傅里叶描述子
%傅里叶描述子
%————————————
%形状特征提取
L = bwlabel(JB1);
L1 = bwlabel(B0);
STATS = regionprops(L, 'all');
STATS1 = regionprops(L1, 'all');
%Ar面积
%perimeter周长
%rectangle矩形度
%compactness紧凑度/圆度
%elongatedness延长度
%Roundness似圆度
%Lobation叶状性???
%Sphericity球状性???
Ar=STATS.Area;
perimeter=STATS1.Area;
l1= STATS1.MajorAxisLength;%l1长轴
l2=STATS1.MinorAxisLength;%l2短轴
imshow(L1); %先显示图片
hold on; %画出boundingbox的矩形区域
rectangle('Position',STATS1.BoundingBox,'EdgeColor','g');
%BoundingBox4个参数分别表示左上角坐标xy,宽度,高度
hold off;
rectangle=STATS.Area/(STATS.BoundingBox(3)*STATS.BoundingBox(4));
elongatedness=l2/l1;
Roundness=4*Ar/(pi*l1^2);
compactness = 4*pi*Ar/perimeter^2;
M=abs(log( invmoments(JB1)));%M7个不变矩
M=M';
%%%纹理特征提取
T = Texture(J);% T纹理特征提取
%
%HSV非等间隔量化及L特征提取
for d=1:3 %对RGB图像三个方向的图像进行滤波,三个滤波后的图像合成后成为最终图像
K=medfilt2( J(:,:,d));%通过效果比较,最终确定中值滤波
JM(:,:,d)=K;%将三个方向的滤波图像合成为最终图像
end
%滤波完成
HSV=rgb2hsv(JM);%RGB图像空间转换到HSV空间
C=hsvquan(HSV);% C HSV非等间隔量化及L特征提取
%%%
COM=[Ar;perimeter;rectangle;elongatedness;Roundness;compactness;M]