首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >一种在图像中最佳放置裁剪区域以捕获特征的算法

一种在图像中最佳放置裁剪区域以捕获特征的算法
EN

Stack Overflow用户
提问于 2015-04-21 15:25:33
回答 1查看 261关注 0票数 6

我有一个大的图像,其中包含一个背景感兴趣的“斑点”。我有所有气泡的位置(质心,包围盒,面积)。我想在图像中裁剪有限数量的固定大小的区域,这样我就可以捕捉到大部分的气泡。下面是同一图像中1、2或3个裁剪区域的示例。

这个例子显示,裁剪1区域(红色)相对容易:只要选择尽可能多的气泡区域。这可以通过尝试所有的方法来解决,也可以通过使用核密度估计器或类似的方法来计算一个blobs的密度。

但是,种植2个区域(以虚蓝色表示)并不仅仅是在上面选择的第一个区域之后种植下一个最好的作物。这是一个新的问题,我需要找到两种作物的最佳组合。尝试两种作物的所有组合(蛮力)可能会导致计算成本过高(我有许多图像要处理,而且它们很大)。

同样,种植3个区域(绿色)是一个新的问题,而蛮力更不适合这个问题。在这个特殊的例子中,3个区域中的2个与蓝色的情况相同,并添加了一个新的区域,但这不是一般情况(我只是想展示一个稍微复杂的场景)。

我不知道解决n作物问题的算法。我想知道这个问题是否有一个理论上的/众所周知的解决办法。

此外:

  • 问题的几何学近似于上面的例子(在图像高度上最大的两种作物,宽度上的许多作物);这样就简化了事情。
  • 作物不应相交
  • 气泡应尽可能以作物为中心(即blob.png )
  • 农作物应该保持在原来的图像边界内。以上任何一个例子)
  • 应该考虑到blob的面积(我更感兴趣的是大blob而不是小blob);但是,通过将一个权重与每个blob关联起来来计算每个裁剪布局的分数,可以在任何算法中引入blob。
  • 把一些斑点去掉是可以的。实际上,我可能会计算一个成本复杂性参数,比如添加作物的新小块将得到多少,并设置一个阈值,在此阈值下停止添加作物。

提前谢谢你的指点。

PS:编码语言在这里并不重要,因为算法的核心(在给定块的位置/大小的情况下找到作物的最佳位置)只需要计算小阵列(每幅图像的位置/大小为100块)。我可能会用Python或R。

EN

回答 1

Stack Overflow用户

发布于 2016-01-05 21:41:05

如果blob相对较小,如图中所示,您可以使用blob中心x,y对运行k均值聚类。python learn包相当成熟,应该运行良好:http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html ( KMeans分类器的函数fit_predict )。

K是一个输入,表示你想要的簇数。该算法将blobs (样本)分解成k个簇(集合)。然后,你可以计算每个集合的x,y帧(min,max-x,min,max-y),还可以包括各个小块的大小,或者只是取它们的最大值(如果它们很小)。

然后,您可以根据它们的#块/帧面积比率对集群进行排序,并将它们相加,例如,直到覆盖足够多的块(完成)--或者整个区域变得太大(在这种情况下,用更大的k重新运行)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29776583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档