matlab计算叶子的面积,基于MATLAB进行树叶面积测量实验报告

《基于MATLAB进行树叶面积测量实验报告》由会员分享,可在线阅读,更多相关《基于MATLAB进行树叶面积测量实验报告(3页珍藏版)》请在人人文库网上搜索。

1、科学计算与数据处理实验报告学号姓名实验名称基于Matlab的植物叶面积数字摄影图像处理实验目的1.学习用matlab解决实际问题;2.学习用matlab对图像进行背景去除;3.学习用matlab对图像进行二值化转换;4.学习用matlab对图像进行中值滤波处理;5.学习用matlab计算像素点的比例,以计算出所求的叶子面子。实验方案实验所选择植物叶为银杏叶,把银杏叶固定在标准面积板上,用数码相机拍取图像。对银杏叶图像的处理即是数字摄影图像处理法测量其叶面积的关键。本实验中利用matlab对银杏叶图像进行背景去除、二值化及中值滤波处理和分析。1. 实验采用差分法去除图像的背景差分处理代数运算的数。

2、学表达式为:C( x , y) = A ( x , y) - B ( x , y),其中 , A ( x , y) 和 B ( x , y) 为输入图像 , A ( x , y)为原始图像 , B ( x , y) 为背景图像 , 而 C ( x , y) 为输出图像即差分图像。在matlab中A ( x , y) 、B ( x , y) 、 C ( x , y) 分别为原始图像、背景图像和差分图像的矩阵。2. 采用自动阈值法对图像进行二值化处理常用的阈值选取方法有自动寻找最佳阈值法和固定阈值法。自动寻找阈值法能够自动分析图像的灰度直方图, 根据直方图确定最佳阈值, 然后用寻找到的最佳阈值进行。

3、二值化处理。而固定阈值法首先分析每一帧图像的灰度直方图, 然后得出每帧图像的阈值。可以看出固定阈值法的工作量大大高于自动阈值法 , 并且不能做到自动化 , 完全依靠手工去获取图像的阈值, 其精度也较自动阈值法低。3. 中值滤波的目的是消除图像中的各种干扰噪声噪声可能是在图像采集量化等过程中所产生的,也可能是在各种图像处理过程中产生的。其表现是图像信息被干扰噪音所污损,导致图像质量下降。中值滤波是一种较简单但又很常用的滤波平滑方法,它采用邻域内的像素灰度值的中值来作为处理后像素点的灰度值, 对脉冲式的灰度跳跃平滑效果好。4. 叶子面积的计算由于数字图像由一个个像素点组成, 所以在已知每个像素点代。

4、表的真实面积下, 可以通过计算图像中对象物体区域的像素数, 求出叶子的面积。二值化图像经中值滤波处理后的白色区域灰度值为 255 代表背景, 黑色区域灰度值为 0 ,代表叶子区域。叶子面积的计算即灰度值为 0 的黑色区域的像素个数。根据下面公式:可求出所求银杏叶的叶面积。实验记录把银杏叶固定在标准板上拍照,得到原图像与背景图像如图1,图2。图1 原图像 图2 背景图1. 用差分法去除图像的背景。右图3为去除背景图像Matlab处理程序为:I=imread(shuye.bmp);I1=imread(beijing.bmp);J=rgb2gray(I);J1=rgb2gray(I1);K=imsu。

5、btract(J1,J);figure,imshow(K); 图3 去除背景图像2. 用自动阈值法对图像进行二值化处理右图4为二值图像Matlab程序为:level=graythresh(K); K1=im2bw(K,level);figure,imshow(K1);title(二值图像); 图4 二值图像3. 中值滤波右图5为中值滤波之后的图像Matlab程序为:K2=medfilt2(K1,3 3); figure,imshow(K2);4. 叶子面积的计算 图5 中值滤波后图像Matlab程序为: S0=sum(sum(K2)/(length(K2(:,1)*length(K2(1,:)。

6、 S0所求为叶子(白色)所占总体的比例大小,求出S0=0.1148。已知标准面积板面积为360平方厘米。可知银杏叶子面积S=41.328平方厘米。实验总 结通过本次综合实验设计,使我能把所学的MATLAB应用到解决实际问题当中,能够用MATLAB解决实际问题。在实际动手操作过程中理解和掌握了相关知识和技能,例如:如何对目标图像进行去除背景,如何对目标图像进行二值化转换,中值滤波等等。在本次实验过程中,我通过查阅相关文献来优化自己的实验设计,学到了很多课堂上学不到的知识。在实践过程中,我加深了对所学的基本知识和概念的掌握,并且充分认识到MATLAB功能的强大。在今后学习过程中,我会秉承知识与实践相结合的学习方法,带着问题去学习,在实践中解决遇到的问题,补充课堂所学知识的不足。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个问题是一个经典的最优化问题,可以使用圆盘装填算法来解决。以下是 Matlab 的实现代码: ```matlab % 定义正方形边长和圆半径 L = 500; r = 5; % 计算每个圆的位置和面积 x = r; y = r; count = 0; while x + r <= L while y + r <= L count = count+1; pos(count,:) = [x,y]; area(count) = pi*r^2; y = y + 2*r; end x = x + 2*r; y = r; end % 构建圆的相邻关系矩阵 n = length(pos); adj = zeros(n,n); for i = 1:n for j = i+1:n dist = norm(pos(i,:)-pos(j,:)); if dist <= 2*r adj(i,j) = 1; adj(j,i) = 1; end end end % 使用最大团算法求解最大圆盘装填问题 cliques = maxclique(adj); % 计算最大圆盘装填面积 max_area = sum(area(cliques)); % 绘制圆盘装填结果图形 figure;hold on; rectangle('Position',[0,0,L,L],'LineWidth',2,'EdgeColor','k'); for i = 1:n if ismember(i,cliques) rectangle('Position',[pos(i,1)-r,pos(i,2)-r,2*r,2*r],'Curvature',[1,1],'FaceColor','r','EdgeColor','none'); else rectangle('Position',[pos(i,1)-r,pos(i,2)-r,2*r,2*r],'Curvature',[1,1],'FaceColor','none','EdgeColor','b'); end end axis equal;axis off; title(['Maximum area of circle packing: ',num2str(max_area)]); ``` 这个程序首先定义正方形边长和圆半径,然后计算每个圆的位置和面积。接下来,它构建了圆的相邻关系矩阵,其中元素为 1 表示两个圆相邻。然后使用最大团算法求解最大圆盘装填问题,并计算最大圆盘装填面积。最后,程序绘制了圆盘装填结果图形,其中红色圆表示最大圆盘装填,蓝色圆表示未选中的圆。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值