从图像中的像素中获取轴承矢量(方向)
Get bearing vector (direction) from pixel in image
我是一名机器人工程师,我不是计算机视觉或视觉伺服的专家。这是我对摄像机的第一个经验之一。
无论如何,我想获得与图像中某个像素相关的轴承的信息。
设置为以下。我有一个带有分辨率1040x776的相机,我校准了。我的图像中有一些对象,我能够检测并关联到图像中的一个点。像素以 u,v (我猜)表示,因此这些点在 u 轴上的0和1040之间,在> v 轴。
让我们假设u,v = 0,0在图像的中心(即使它位于左上角。但这不是问题)。
我想要的是一个单元向量,从相机的中心到上述像素。因此,例如,如果像素位于图像的中心,则结果向量应为(1,0,0)。
我认为我已经在stackexchange上找到了答复,但是我不是100%确定我需要的是:OPENCV:计算相机和像素之间的角度
食谱:
1-校准摄像机,获得摄像机矩阵K和失真参数D。在OpenCV中,如本教程所述进行的。
2-从感兴趣的像素位置中删除非线性失真。在OpenCV中,使用UndistortPoints例程完成,而无需通过参数r和p。
3-通过在均匀坐标中乘以相机矩阵的均值时,将感兴趣的像素引入相机3D坐标中的射线(带尾部的单位向量(带尾部的单位向量))。
您怎么看?
事先感谢您的关注。
假设摄像机位于原点位于原点,并且正在向下看正z轴,图像平面是xy平面,xy平面为正x,右x右y,指向朝下,a的位置3D中的像素为:
(pixel.x - imageCentreX, pixel.y - imageCentreY, focalLength)
然后,您需要将其乘以相机的3x3旋转矩阵才能获取3D方向向量:
rotation * (pixel.x - imageCentreX, pixel.y - imageCentreY, focalLength)
然后,您可以通过除以长度以检索单位方向向量到像素。
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 使用Unreal C++获取VR耳机的世界位置/方向
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 平均图像时图像损坏
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 将图像添加到资源文件夹UWP C++
- 在C++中向零方向近似的最佳方法
- 彩色图像的卤化物处理平均值
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 重新定位图像时如何前进到下一个内存块
- 从图像中的像素中获取轴承矢量(方向)
- 保存itkImage为DICOM时,不写入图像位置/方向
- 在x方向上对图像的每一行进行一维卷积