我正在尝试恢复图像中建筑物三个轴的 3D 方向。
我目前的做法是手动标注三个轴对应的三个消失点,估计相机标定矩阵K,然后通过归一化K^{-1}v_{i}从一个消失点计算旋转矩阵的每一列,如本文附录中所述。
尽管这似乎有效,但 R 的计算列并不完全正交,我怀疑如果消失点噪声更大,问题会更加明显。
我可以通过使用 SVD 分解估计的 R 并将所有奇异值设置为 1 来捏造它,但我更喜欢更有原则的解决方案。另一种思路是将其作为约束优化问题来解决,该问题旨在最小化消失点上的投影误差。
是否有更好的方法从 K 和消失点计算旋转矩阵,同时考虑正交性和列单位约束?
提前致谢。
我正在尝试将3D对象插入到照片中,这不是我拍摄的.元信息被删除,因此我只能猜测场景中对象的相机参数和尺寸.在这种情况下如何设置适当的营地,有什么方法吗?
我已经看到人们正在绘制辅助线,找到消失点,但是当我理解消失点的含义时,我不知道如何帮助恢复视角.关于这个话题的任何好的写作?
我正在 Python 中处理基于 OpenCV 的项目,我必须计算/提取并直观地显示现有线条的消失点。
我的第一个任务是检测线条,使用 Canny 和 HoughLinesP 函数非常容易:
import cv2
import numpy as np
img = cv2.imread('.image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
edges = cv2.Canny(gray, 500, 460)
lines = cv2.HoughLinesP(edges, 1, np.pi/180, 30, maxLineGap=250)
for line in lines:
x1, y1, x2, y2 = line[0]
cv2.line(img, (x1, y1), (x2, y2), (0, 0, 128), 1)
cv2.imwrite('linesDetected.jpg', img)
Run Code Online (Sandbox Code Playgroud)
但我想计算/推断所有线条的消失点,以找到(并绘制)它们相互交叉的位置,如下图所示。
我知道我需要添加一个更大的框架来绘制线条的延续,以找到交叉点(消失点),但此时我非常迷茫。
太感谢了!!