C中的OpenCV拼接器例程,如何获得像素变换?

Posted

技术标签:

【中文标题】C中的OpenCV拼接器例程,如何获得像素变换?【英文标题】:OpenCV stitcher routine in C , how to get pixel transform? 【发布时间】:2012-10-02 18:11:44 【问题描述】:

所以,我设法在 C++ 中使用 opencv 的拼接器例程实现了全景拼接。

拼接完成后,输出会显示初始内在参数,以及每个拼接的相机参数为 3x3 矩阵。

这些参数是什么意思?

我想找出从每个单独图像到合成全景图的像素映射。像素偏移量是多少。这可能是一个二维向量,因为像素是向左或向右平移,然后向上或向下平移。

如何获取输出全景图中每个像素的数据?

【问题讨论】:

【参考方案1】:

3x3 矩阵只是 2d 仿射变换(缩放 + 旋转 + 平移)的表示。

要将一幅图像上的 (x1, y1) 转换为具有拼接矩阵 M 的另一幅图像上的 (x2, y2),您只需执行

 (x1, y1, 1) = M * (x2, y2, 1)

其中* 是通常的矩阵向量乘法。

请参阅此处(Wiki, Affine transform),了解此类矩阵和齐次(三重)坐标。

【讨论】:

你说的是单应矩阵,对吗?拼接返回的矩阵不是单应矩阵,而是相机矩阵。

以上是关于C中的OpenCV拼接器例程,如何获得像素变换?的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 完整例程39. 图像灰度的线性变换

OpenCV 完整例程49. 图像增强—局部直方图处理

OpenCV 完整例程43. 图像的灰度变换(对数变换)

OpenCV 完整例程24. 图像的仿射变换

youcans 的 OpenCV 例程200篇172.SLIC 超像素区域分割算法比较

OpenCV 完整例程35. 图像的投影变换(边界填充)