【问题标题】:how to compute horizontal angle of a pixel from a computer vision camera如何从计算机视觉相机计算像素的水平角
【发布时间】:2015-12-08 02:13:42
【问题描述】:

我的程序需要从具有 120 度水平视野、640 像素宽和 480 像素高的分辨率的计算机视觉相机计算像素的角度。

程序从相机接收每个图像帧的 X,Y 像素数组。 对于最左边的像素,X 为 0,角度为 -60 度。 对于最右边的像素,X 为 639,角度为 60 度。 对于中心像素,X 为 320,角度为 0。

当 (X is > 0 and 320 and

【问题讨论】:

  • 是 120 fovy 还是 fovx?
  • 120 度水平视野 (fovx)

标签: opencv image-processing camera geometry computer-vision


【解决方案1】:
// In pseudocode.

// Compute focal length in pixels from FOV
double f = (0.5 * image_width) / tan(0.5 * fov_radians);

// Vectors subtending image center and pixel from optical center
// in camera coordinates.
Vector3D center(0, 0, f), pixel(x - center_x, y - center_y, f);

// angle between vector (0, 0, f) and pixel
double dot = dot_product(center, pixel)
double alpha = acos(dot / (center.length() * pixel.length()));

【讨论】:

  • 我认为这不是答案。请参阅下面的评论。
  • 如果您觉得它有用,如果您赞成/接受答案,那就太好了。
【解决方案2】:

我在以下位置找到了答案: here

我认为答案是:

angle =  ( pix_X - (Hres/2) ) / (Hres/2)  * HFOV/2

地点:

pix_X = Pixel * coordinate
Hres = horizontal resolution = 640 pixels
HFOV = horizontal field of view angle = 120 degrees

【讨论】:

  • 错了。角度的正切不是角度的线性函数。
  • 但每个 x 坐标与相机等距。相机的视野是一个弧线,所有像素都沿着该弧线与相机等距。所以沿 x 的每个像素的角度相等。像素的水平轴不是沿着一条线,相对于相机,它是沿着一条弧线。
  • 在“这里”查看答案。
  • 回复:“所以沿 x 的每个像素之间的角度相等” - 问题没有提到您有一个球形传感器。如果它是带有平面传感器的标准相机(即由标准针孔模型建模的相机),那么您的断言显然是错误的。角度(x - c_x) = atan((x - cx) / 焦距)
  • 同意。我错了。每个相机像素传感器都在同一平面上。这就是为什么校准是必不可少的。谢谢!!
【解决方案3】:

这是最简单的,似乎很有效:

double image_width_pixels = CAMERA_HORIZONTAL_RESOLUTION_PIXELS;
double fov_radians = CAMERA_HORIZONTAL_FIELD_OF_VIEW_RADIANS;
double f = ( image_width_pixels / 2.0 ) / tan( fov_radians / 2.0 );
int x = <<< horizontal pixel coordinate >>>;
double angle_radians = atan( x / f );

【讨论】:

  • 弗朗西斯科:这有意义吗?我尝试了您的完整解决方案,但角度错误。然后我意识到求解 x 只是 x 和 f 的简单三角函数。
  • 又错了,抱歉。将 atan(x/f) 替换为 atan((x - 0.5 * image_width) / f),因为您需要 w.r.t. 的角度。中心射线。我的原始表达式给出了反投影图像中心的光线与相机光学中心的通用像素之间的角度。您在上面的预期表达是反射图像中心的光线与相同通用像素在经过图像中心的水平图像轴上的投影之间的角度。
猜你喜欢
  • 2018-11-07
  • 1970-01-01
  • 2011-10-18
  • 2017-08-26
  • 1970-01-01
  • 2018-05-13
  • 1970-01-01
  • 1970-01-01
  • 2010-12-04
相关资源
最近更新 更多