我有一个像这个的视觉标记和一个Java中的blob检测算法...如何提取图像的区域,以便我可以将blob检测算法分别运行在每个区域上,以便它可以分别检测出1、1、3个blob。
非常感谢!
我有一个像这个的视觉标记和一个Java中的blob检测算法...如何提取图像的区域,以便我可以将blob检测算法分别运行在每个区域上,以便它可以分别检测出1、1、3个blob。
非常感谢!
Max@MorphologicalComponents[
FillingTransform[DeleteBorderComponents@img]] >= 3
检测这些白色区域中一半是否包含一个或多个黑色区域可以通过计算每个白色区域内的孔来完成:
comp = ComponentMeasurements[DeleteBorderComponents@img, "Holes"];
2*Count[comp, _ -> n_ /; n > 0] >= Length@comp
通过查询封闭组件的数量可以检测是否存在更深层次的嵌套。
Count[
ComponentMeasurements[DeleteBorderComponents@img, "EnclosingComponentCount"],
_ -> n_ /; n > 0] == 0
有些上述操作可能在Java中实现会比较棘手。那一个我就不介绍了--有趣的部分结束了!
不确定您需要完成什么。Blob分析本身应该可以提取“区域”。分类目标图像中对比度较暗的对象或“blob”应该可以给您所需的任何目标区域。例如,可以根据大小、形状、颜色、位置、离心率、主/次轴、与父Blob的子关系等某些组合对对象进行分类,然后根据您感兴趣的特征选择它们。
也许您需要更实质性的Blob分析算法,返回更复杂的Blob数据。