将图像扭曲到另一个平面

Posted

技术标签:

【中文标题】将图像扭曲到另一个平面【英文标题】:Warping an image to another plane 【发布时间】:2021-09-21 17:26:20 【问题描述】:

我有一个 Mat 形式的图像。我正在使用opencv c++。 我想将此图像扭曲到另一个平面。我将原始图像划分为 15x15 网格。所有的网格点都被认为是原始顶点。我正在做一些操作并在新平面上获取目标顶点。所有原始网格顶点在新平面中都有对应的目标顶点。如何根据目标顶点和原始顶点将图像扭曲到新平面。

我正在考虑这样做 -> 在原始平面和新平面中获取每个四边形并找到它们之间的单应性。现在以某种方式将每个四边形扭曲到新平面,但我不知道该怎么做。有人可以建议我如何执行此操作或其他更好的方法吗?

【问题讨论】:

这是一次性的事情,还是必须在应用程序中经常发生的事情? 会发生多次 你能举出例子(图片)吗?你需要什么类型的扭曲,仿射,透视,线性插值网格? 【参考方案1】:

计算每个网格的 Homography 并计算地图。地图(x0,y0)= x1,y1。目标平面上的位置 (x0, y0) 映射到源平面上的 (x1, y1)。即 [ax1 ay1 a]T = H [x0, y0, 1]T

然后使用cv::remap

【讨论】:

以上是关于将图像扭曲到另一个平面的主要内容,如果未能解决你的问题,请参考以下文章

2021-04-11

使用单应性扭曲图像的四个角并返回无效的四边形

Halcon - 将坐标转移到不同的平面

如何将未扭曲图像的点投影到扭曲图像?

通过鱼眼扭曲功能扭曲直线并在图像中正确绘制

Internet Explorer 在矩阵变换时扭曲 SVG 图像