Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 最适合二维水滴上的矩形_Algorithm_Opencv_Image Processing_Image Recognition_Object Recognition - Fatal编程技术网

Algorithm 最适合二维水滴上的矩形

Algorithm 最适合二维水滴上的矩形,algorithm,opencv,image-processing,image-recognition,object-recognition,Algorithm,Opencv,Image Processing,Image Recognition,Object Recognition,我有一个二进制blob(见图),我想在它上面放一个已知宽度和高度的矩形 如何找到最佳拟合矩形,即最大前景像素位于内部而最大背景像素位于外部的矩形 (这是我对最佳匹配的初步定义,我愿意接受其他建议) 我正在寻找一个已知大小的矩形,但如果有一个任意大小的解决方案,那也太好了 示例blob: 我想找到这些矩形: 到目前为止,我的想法包括 从最小的封闭矩形开始;但这与这些斑点并不匹配 最大封闭矩形;同样的问题,加上我没有一个算法 用hough变换求矩形边;数据太嘈杂了,不能这样做 我意识到同一个

我有一个二进制blob(见图),我想在它上面放一个已知宽度和高度的矩形

如何找到最佳拟合矩形,即最大前景像素位于内部而最大背景像素位于外部的矩形

(这是我对最佳匹配的初步定义,我愿意接受其他建议)

我正在寻找一个已知大小的矩形,但如果有一个任意大小的解决方案,那也太好了

示例blob:

我想找到这些矩形:

到目前为止,我的想法包括

  • 从最小的封闭矩形开始;但这与这些斑点并不匹配
  • 最大封闭矩形;同样的问题,加上我没有一个算法
  • 用hough变换求矩形边;数据太嘈杂了,不能这样做
我意识到同一个blob可能有多个符合我标准的矩形,理想情况下,我想要一些能够找到所有候选对象的算法(考虑到这可能更难,我很乐意找到一种只找到一个候选对象的方法):


我主要使用opencv和cvBlobLib来处理我的数据,但我对任何通用解决方案都持开放态度。

我看过一篇基于进化方法的类似主题(RGB平面上的圆覆盖)的论文

  • 明确定义了目标函数(有多少个正方形?多大? 它们能重叠吗?你可能想惩罚小的或小的 重叠的正方形)
  • 您可以从运行 预处理数据的算法,即找到正方形的潜在中心点
我记得,对SGA、CGA和eCGA进行了比较(CGA从初始的、基于k均值的覆盖开始),SGA的表现优于其他方法。他们是在每张图片的基础上运行的。大约有30个个体和20代人,运行时间大约为几分钟

对于SGA,交叉算子将一次选取两个父对象,并将两个父对象的闭合圆/最相似圆配对。然后,对于每一对,它会在中间的某个地方画一个半径也在两个圆半径之间的子圆。(尽管我建议不要将值精确地取在父母的值之间,但允许+/-15%超出范围。这将防止人口过早收敛)


对于矩形,您必须稍微修改方法;每个矩形可以是一个元组(x,y,宽度,高度,旋转),x和y是中心的坐标。

自从我上次处理它已经有几年了,所以只是一个注释而不是答案。但这听起来像是一个年轻人的工作。沿着主轴跨越一个矩形,这样它就包围了所有的点,应该得到最小的矩形(尽管我不能100%确定它是否真的是最小的)。