从抛物面镜检测图像中心?

时间:2014-03-03 03:38:30

标签: python opencv python-imaging-library pillow

我有一个全景一次性镜头:http://www.0-360.com/我使用python图像库编写了一个脚本,将图像“展开”成全景图。我想自动化这个过程,因为目前我必须指定图像的中心。另外,获得圆的半径也会很好。输入图像如下所示:enter image description here

“展开”图片如下所示:enter image description here

到目前为止,我一直在尝试Hough Circle检测。我遇到的问题是选择要使用的正确值。此外,有时,中心圆附近的暗物体似乎会将其抛弃。

我的其他想法:

  1. Hough Line检测未展开的图像。基本上,选择中心像素作为中心,然后展开并查看顶部和底部的线是直的还是“弯曲的”。如果不是直的,那就继续尝试不同的中心。
  2. 时刻/斑点检测。也许我可以找到中心blob并找到它的中心。问题是有时我会在暗盘的中心看到一个明亮的环,如上图所示。此外,中心附近有黑暗物体的问题。
  3. 将镜子的顶部斜面涂成绿色等明显的颜色,以便更容易进行圆形检测?如果我使用绿色并且仅使用绿色通道,检测会更容易吗?
  4. 什么是我应该尝试使用的最佳方法来获得此图像的中心,可能还有外圈和内圈的半径。

2 个答案:

答案 0 :(得分:1)

由于您的图片有多个共同中心的圆圈,您可以这样移动,例如

  1. 用霍夫圆检测圆圈并考虑具有共同中心的圆圈。

  2. 现在检查共同中心圆的比率,因为图像保持该比率不变。

答案 1 :(得分:1)

我想不要太花哨。黑色中心位于图像的中心,对吧?在图像中心附近切割一个正方形ROI并在那里寻找“黑色”区域。存储所有“黑色”像素位置并找到它们的中心。您可以考虑使用CMYK颜色空间来检测黑色区域。