- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于数字图像处理技术测定植物叶片属性
基于数字图像处理技术测定植物叶片属性
一、实验名称:基于数字图像处理技术测定植物叶片属性。
二、实验目的
掌握并熟练使用matlab R2014b软件;
采用合适的分割方法对原图片进行图像分割,获取目标叶片;
将分割后的图片进行去噪增强处理;
通过matlab软件来测定目标叶片的属性;
通过手工网格法计算出目标叶片实际属性,并与实验结果对比修改。
三、实验原理
实验通过手动网格法测出叶片实际面积值,并与通过matlab图像处理计算出的实验面积值对比,研究测试运用matlab图像处理技术提取叶片面积的可行性。
实验中,将已知属性的小方格(1cm*1cm)作为参照物与所测叶片置于同一平面的白纸上,用手机相机获取图像。由于数字图像都是由一个个像素点组成,可以根据像素点比例和参照物属性求出植物叶片属性。
叶片面积计算公式如下:
式1:叶片面积 = 参照物面积×
叶片周长计算公式如下:
式2:叶片周长 = 参照物周长×
四、实验步骤
(1)网格测面积
手工制作网格纸一张(最小格边长5mm),将叶片轮廓描于纸上,计算轮廓所占方格数(未占满格的均按半格计算),得出实际面积约为24cm2。用一根细线围绕叶子一周,然后拉直,测其周长为22.2cm。
图1:获取的原图片(黑方格为参照物)
图2:网格法求叶片实际面积
(2)matlab图像处理提取叶片属性
1、图像灰度处理
图3:灰度图像
2、中值滤波
图4:中值滤波
3、二值化
图5:二值化图像
4、颜色反转
5、提取边缘
6、填补边缘空隙
7、图像切割
对分割后的图像进行图像切割,平均分为三份(如图6、7)。
图6:切割后的叶片图像
图7:切割后的参照物图像
8、分别计算目标叶片和参照物图像的像素数
由于分割后的图像均为二值图像(0和255),所以目标叶片和参照物图像的像素数可以运用sum()函数列出以下式子得出:
参照物像素数=sum(sum(参照物图像))/255;
目标叶片像素数=sum(sum(目标叶片图像))/255;
9、分别计算目标叶片和参照物的实验周长
首先运用bwconncomp函数分析滤波后图像的连通域个数,然后运用regionprops函数计算各连通域周长。
五、结论分析
通过式1、式2得出叶片实验面积为:23.626692 cm2、周长21.697166cm。
图8:实验结果截图
与网格法得出的实际面积约为24 cm2对比,误差为0.37 cm2,周长的误差则为0.5cm,误差较小,可以接受。
六、实验代码
a=imread(leaf.jpg);
figure,imshow(a);title(原图像);
b=rgb2gray(a);
figure,imshow(b);title(灰度图);
c=medfilt2(b);
figure,imshow(c);title(中值滤波);
level=graythresh(c);
d=im2bw(c,level);
figure,imshow(d);title(二值化);
e=imcomplement(d);
figure,imshow(e);title(颜色反转);
image1 = edge(e,sobel);
image2 = edge(e,roberts);
image3 = edge(e,prewitt);
image4 = edge(e,canny);
figure;
subplot(2,2,1);
imshow(image1);title(soble图像边缘提取)
subplot(2,2,2);
imshow(image2);title(roberts图像边缘提取)
subplot(2,2,3);
imshow(image3);title(prewitt图像边缘提取)
subplot(2,2,4);
imshow(image4);title(canny图像边缘提取)
I = strel(line,3,90);
H = strel(line,3,0);
t = imdilate(image4,[I H]);
figure,imshow(t);title(填补边缘缝隙的图像);
filled = imfill(t,holes);
figure,imshow(filled);title(填充空隙后的图像);
SeD = strel(diamond,1);
final = imerode(filled,SeD);
final = imerode(final,SeD);
figure,imshow(
文档评论(0)