use*_*880 6 graphics opencv image image-processing
我正在使用OpenCV将一堆视点匹配到全景图中.结果是在黑色背景上的一堆图像(一种多边形形状).我想要做的是裁剪这个多边形,以便在结果图像中没有黑色.有一个很好的算法来做到这一点?
我想的天真的方式是从图像中间的一个小方块开始向上扩展直到我击中黑色,然后向左和向右扩展.
我想要的解决方案是最大化填充区域总面积的解决方案.
编辑:多边形是凹的,所以我们需要检查 - 我认为O(N^2)
尝试每个顶点对的算法是可行的,因为N很小.但是我们需要检查区域边界是否被填充,我猜想可以在O(N)中通过检查每个顶点来查看它是否位于由我们选择的顶点对定义的矩形的边界内.这给了我们一个O(N^3)
算法
简单的解决方案可能效果不佳,因为通常使矩形更高会限制其宽度,因此您将无法获得最佳解决方案。
如果多边形上没有太多顶点,则以下方法可能有效:尝试选取顶边和底边的每种组合。为了简化,假设它们总是包含多边形的顶点之一。当指定顶部和底部时,可以确定边,因此对于每对顶部/底部,您可以计算面积。选择面积最大的解决方案。
上述简化可能会产生次优结果,但应该不会太糟糕。
归档时间: |
|
查看次数: |
2468 次 |
最近记录: |