收藏 分销(赏)

气泡matlab.docx

上传人:pc****0 文档编号:6623773 上传时间:2024-12-17 格式:DOCX 页数:5 大小:389.22KB 下载积分:10 金币
下载 相关 举报
气泡matlab.docx_第1页
第1页 / 共5页
气泡matlab.docx_第2页
第2页 / 共5页


点击查看更多>>
资源描述
一:问题描述 在一幅包含气泡的图像中,求出气泡面积占图像总面积的比例,并求出可分辨气泡的个数。(11.24 P562) 二:例子分析 针对上面的彩色图片,想到的方式是先转换成二值图像,然后进行边缘检测,在进行圆形填充,这样可以求出面积比例,最大的难度在气泡重叠的部分处理上,我想到的是要进行腐蚀处理,虽然结果并不精确,但也准确度还算可以。 三:matlab实现 I=imread('c:\Users\张达\Desktop\气泡.png') i=rgb2gray(I)%将图片转换成灰度图像 figure subplot(231) imshow(i) title('灰度图像') [m,n]=size(i)%求出图片的长宽 threshold=graythresh(i)%设立二值图像的阈值 bw=im2bw(i,threshold)%转换成二值图像 bw2=bwperim(bw,8)%按八连通求出图片的边缘 bw2=bwareaopen(bw2,10)%去除小于10个像素的单元 等于是排除了杂质 subplot(232) imshow(bw2) title('去除杂质后的二值图像') %此处是为了避免出现右图所示的情况,先膨胀再填充 可保证气泡填满,最后进行腐蚀得到最终准确结果。 se=strel('disk',5)%设定半径为5的结构元素 bw3=imdilate(bw2,se)%先进行膨胀处理 subplot(233) imshow(bw3) title('膨胀处理后的二值图像') bw4=imfill(bw3,'hole')%再进行填充处理 subplot(234) imshow(bw4) title('填充处理后的二值图像') bw=imerode(bw4,se)%最后进行腐蚀处理,得到了气泡准确的二值图像 subplot(235) imshow(bw) title('腐蚀处理后准确的二值图像') a=sum(bw(:))./(m*n) %通过计算二值图像像素值和与图像像素个数总和得到比例 c=0%设定初始的气泡个数 for counter=3:100%设定循环,从半径为3开始的形状元素 se2=strel('disk',counter) bw=imerode(bw,se2)%腐蚀操作,尽量还原出重叠部分的气泡 [b,l]=bwboundaries(bw,'noholes')%l返回的是标签矩阵, if max(l(:))>=c %对每次求出l中的最大元素值,即气泡的个数。 c=max(l(:)) else return end subplot(236) imshow(label2rgb(l,@jet,[0.5 0.5 0.5])) title('腐蚀到阈值时形成的图像') end 这样就求出了占面积比为0.3868,个数为10个(实际上是13个) 四:存在的问题 1:运算不够快,共花费了15秒左右的时间,矩阵运算量比较大,还有针对求气泡个数,没有想到更好的优化算法,如果将counter=3:100更改为counter=3:2:100(即步长拉大) 会有一定的时间提升,并且能够保证准确度。 2:对于气泡重叠部分的处理,理想化的比较多,若重叠部分比较多,或者重叠部分占气泡比比较大时,会存在较大误差。 五:更多例子 1:下图所示:占比0.3512,个数是10(正确是11) 2 2:下图所示 占比是0.0999 个数是43(正确是46) 中间底部最大的气泡填充后依旧有缺口,这是膨胀的结构元素不够大导致的。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服