1 简介
在农作物叶面积测量中, 叶形纸称重法、 长 宽系数法、 鲜样称重法、 干样称重法、 回归方程 法等方法的测量都需要将叶片采摘下来, 造成叶 片损坏。 当前使用的叶面积仪器测定方法[1] , 对 于小麦等叶片形状较简单的作物适用, 对于复杂 形状的叶片则有一定的局限。 在图像检测识别 中, 有研究对基于数学形态学的植物叶片图像分 割方法进行了探索[2] 。 本研究通过基于 MATLAB 软件的 Sobel 算子、 Prewitt 算子、 Canny 算子、 形 态学处理等不同算法的比较分析, 选择最优方 法, 再进一步去噪处理, 可实现作物叶面积的 测量。
2 部分代码
function kkk = tiqubeijing
clear
clc
I_rgb=imread('YZI.jpg');
figure(1);subplot(341),imshow(I_rgb);title('原始图像');
%--------------------------------------------------------------------------
积
%--------------------------------------------------------------------------
%标记质心
L = bwlabel(BW4);%标记连通
stars = regionprops(L);
e=cat(1,stars.Centroid);
plot(e(:,1),e(:,2),'w*');
for q=1:a
t(q,1)=sqrt((boundary(q,2)-e(1,1))*(boundary(q,2)-e(1,1))+(boundary(q,1)-e(1,2))*(boundary(q,1)-e(1,2)));%质心到边界的距离
end
p1=min(t);%质心到边界最小距离
p2=max(t);%质心到边界最大距离
sita=0:pi/20:2*pi;
%plot(r*cos(sita),r*sin(sita)); %中心点在原点,半径为r的圆
plot(e(1,1)+p1*cos(sita),e(1,2)+p1*sin(sita),'c');%中心点在(x0,y0)半径为p1的圆
plot(e(1,1)+p2*cos(sita),e(1,2)+p2*sin(sita),'g');%中心点在(x0,y0)半径为p2的圆
%--------------------------------------------------------------------------
f1=start1.Area;%叶片面积
f2=a;%叶片周长
f3=max(c1,c2);%最小包围盒长度
f4=min(c1,c2);%最小包围盒宽度
f5=totalare;%凸包面积
f6=totalare1;%凸包周长
f7=p1;%内切圆半径
f8=p2;%外切圆半径
%f9=stars.Majoraxislength;%与区域具有相同标准的二阶中心距的椭圆长轴
%f10=stars.Minoraxislength;%与区域具有相同标准的二阶中心距的椭圆短轴
th1=f3/f4;
th2=f1/f5;
th3=f2/f6;
th4=f7/f8;
th5=4*pi*f1/(f6*f6);
th6=f8/f7;
th7=4*pi*f1/(f2*f2);
th8=f1/(f3*f4);
%th9=f9/f10;
str1=['纵横中比=',num2str(th1)];
str2=['面积=',num2str(th2)];
str3=['周长=',num2str(th3)];
str4=['球形性=',num2str(th4)];
str5=['圆形性=',num2str(th5)];
str6=['偏心率=',num2str(th6)];
str7=['形状参数=',num2str(th7)];
str8=['矩形度=',num2str(th8)];
%str9=['等二阶矩椭圆长短轴比=',num2str(th9)];
gtext(str1)
gtext(str2)
gtext(str3)
gtext(str4)
gtext(str5)
gtext(str6)
gtext(str7)
gtext(str8)
3 仿真结果
4 参考文献
[1]陈杰, 侯同娣, and 泮进明. "作物叶片面积检测算法的比较分析与MATLAB实现." 浙江农业科学 060.001(2019):162-164.
5 MATLAB代码与数据下载地址
见博客主页