我有一个二进制blob(见图),我想在它上面放一个已知宽度和高度的矩形。
如何找到最佳拟合矩形,即前景像素最大的内部和背景像素的最大值在外?
(这是我最适合的初步定义,我愿意接受其他建议)
我正在寻找已知尺寸的矩形,但如果有任意尺寸的解决方案,那也会很棒。
示例blob:
我想找到这些矩形:
到目前为止我的想法包括
我意识到同一个blob可能有多个矩形符合我的标准,理想情况下我想要一些可以找到所有候选人的算法(想想因为那可能更难,我会很满意只找到一种方法一个候选人):
我主要使用opencv和cvBlobLib来处理我的数据,但我愿意接受任何一般解决方案。
答案 0 :(得分:1)
我已经看到一篇关于类似主题的论文(基于RGB平面的圆覆盖),基于进化方法。
我记得,比较了SGA,CGA和eCGA(CGA从初始的,基于k-means的覆盖开始),SGA优于其他SGA。它们是基于每个图像运行的。大约有30个人和20代,运行时间大约几分钟。
对于SGA,交叉操作员一次需要两个父母,并将两个父母的关闭/大多数相似的圈子配对。然后,对于每一对,它将在两者之间的某个地方绘制一个儿童圆圈,半径也在两个圆圈之间。 (虽然我建议不要在父母的值之间取值,但允许+/- 15%超出范围。这样可以防止人口过早收敛。)
使用矩形,您必须略微修改方法;每个矩形可以是元组(x,y,宽度,高度,旋转),其中 x 和 y 是中心的坐标。