二值图像区域滤波
在我8月8日关于Pokemon Go的帖子(我仍然不敢相信我做到了),其中一个处理步骤是找到二值图像中最大物体的质心。
这让我想起了我博客上的一个话题:根据物体大小过滤二值图像。通常,此操作被用作一种清除或预处理操作,以删除小的“类似噪声的”斑点。
在数学形态学中,去除面积小于某个阈值的连接组件被称为区域开放,有一个图像处理工具箱函数叫做bwareaopen就这样了。
Bw = imread(“blobs.png”);imshow (bw)标题(“原始”)
保持对象包含至少10个像素。
Bw2 = bwareaopen(bw,10);imshow (bw2)标题(“开放区域”)
长期阅读博客的读者可能还记得五年前的邮件我邀请大家对区域开放术语和函数的名称bwareaopen.我在那篇文章里想知道区域开放有点太专业了。一些人发表了深刻的评论。
嗯,那次讨论产生了影响。几个发布周期之后,在R2014b中,工具箱开发团队添加了一个新函数:bwareafilt.这个函数根据大小在二值图像中“保留”对象的子集。有几种方法可以定义子集。下面是一些例子:
保留10个最大的对象。
Bw3 = bwareafilt(bw,10);imshow (bw3)标题(“十大物体”)
保留10个最小的对象。
Bw4 = bwareafilt(bw,10,“最小”);imshow (bw4)标题(“10个最小的对象”)
保持对象的大小在一定范围内。
Bw5 = bwareafilt(bw,[20 50]);imshow (bw5)标题(“大小范围:20-50像素”)
通过使用Inf作为上限来保持对象的最小大小。
bw6 = bwareafilt(bw,[100 Inf]);imshow (bw6)标题(“至少100像素的对象”)
最后,让我向您展示一个快速获取图像中物体大小直方图的方法。
Bw_text = imread(“text.png”);imshow (bw_text)
T =区域道具(“表”bw_text,“区域”);图直方图(t.Area)“文本图像中的对象大小”)
评论
如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。