MATLAB图像处理植物叶片面积计算

实验名称

基于Matlab图像处理求植物叶片面积

实验目的

1.用matlab测试叶片面积与网格测面积对比,研究可用性。

2.学习用matlab对图像进行背景去除、对比度处理、图像型学处理及中值滤波处理等。

3.学习用matlab计算像素点的比例,利用已知参照物面积计算出要求的叶子面子。

实验原理

实验通过手动网格法测叶子面积与matlab处理计算叶子面积对比,研究matlab测试叶子面积的可用性。

matlab测面积所选择的图片是把植物叶片放置在旁边画有已知面积的小方格作为参照物的白纸上用手机拍取图像。如此即将叶片信息转化为计算机可识别的图像信息。由于数字图像都是由一个个像素点组成。可以根据像素点比例和参照物面积求出植物叶片面积。叶片面积计算公式如下:


实验内容步骤

1、网格测面积

由于用excel做30mm*30mm网格及10mm*10mm小方格打印出来实际面积变为29mm*28mm网格及9mm*9mm小方格(如下两图)故参照物面积为81mm2,网格法测出叶子所占空格490,共有900网格,故叶子面积为442mm2计算如下:



v2-b4f4e22a19ea566faf97b895b1974822_b.jpg

v2-c744e6e1c1e91c47a98eb822855acf6c_b.jpg


2、matlab测面积

(1)通过手机拍照如下保存为leaf..jpg和一张白色背景图background.jpg,通过matlab读取图像。如图1

(2)图像灰度处理

由于手机拍摄的是彩色即rgb格式,为了进行下一步处理,需要先将图像转换为灰度图像。灰度变换是图像增强的一种手段,是图形动态范围加大,对比度扩展,图形更清晰,特征更明显。用rgb2gray函数。处理后如图2


v2-da94aaa3f5750b359705c3a232549fcc_b.jpg

v2-952f59537d8eebe666f1e5b027dc504e_b.jpg


图1 图2

  1. 用差分法进行图像分割

图像差分法用imsubtract函数将一幅输入图像的像素值从另外一幅输入图像相应的像素值中减去,再将相应的像素值之差作为输出图像的对应的像素值。处理图像后可使用imclearborder命令消除图像中的边缘对象。如图3

  1. 调节对比度

调节对比度imadjust函数可以使原来模糊不清甚至无法辨别的原始图像处理成清晰的富含大量有用信息的可使用图像,有效的去除图像中的噪音、增强图像中的边缘或其他需要的区域,从而更加容易对图像中需要的目标进行检测和测量。处理后如图4


v2-523ddc7cd939406160d6cc056f93e12d_b.jpg

v2-428f47b320b2f62a23831d6dff435218_b.jpg


图3 图4

  1. 边缘检测

通过edge函数对图像分别用sobel、robert、prewitt和canny算子方法比较在本实验叶片中canny效果最好。分析如图5


v2-662c5409ed0796a2b5bdec018146df56_b.jpg


图5

  1. 图像型学处理

通过strel和imdilate函数对图像进行膨胀操作,填补边缘缝隙后通过imfill函数对空隙填充,再用菱形结构对图像进行平滑处理。

  1. 中值滤波处理

中值滤波在衰减噪声同时不会使图像边界模糊,去噪效果依赖2个要素:领域的空间范围和中值计算中涉及的像素数。具体函数medfilt2。

  1. 标记及面积计算

这个步骤是确定图像中的目标对象并标记。调用bwlabe函数寻找连通成份而且用唯一的数字将他们分类标记。通过ismember函数去除不符合区域,在图片中显示像素数,图6所示。


v2-8240b9732c7393b178ba063bc258d03b_b.jpg


图6

实验结果与分析

最终得到图片中两个像素数带入原理中公式,求得叶片面积为438.12mm2:


v2-0a2fcbf6bcbfc058c90b1ae4405ca8e2_b.jpg


通过两种测试方法得到的结果误差为442-438.12=3.88mm2可知,matlab测试数据相对准确具有可用性,而且matlab通过几行代码测试可以减少人工费时费力,解决了实际问题。


代码附下


v2-266dcfbd43ad24ca43b0c36ca6e6b6ad_b.jpg



v2-aa715f6b6913e9f1cce803a205d3f372_b.jpg

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐