首页 > 解决方案 > 具有 3 个点的仿射变换和合并图像

问题描述

我正在编写一个 Python 程序,该程序显示 2 个彼此相邻的热(低分辨率)无人机镜头。然后用户在两张图片上选择 3 个点,之后第二张图片应该被转换并与第一张合并。在接下来的步骤中,程序应该显示合并后的图片以及旁边航班的第三张图片,等等。

目前我正在寻找对图像进行转换和合并的方法。

我正在考虑将图像读取为数组(列表列表(=行)),使用转换公式手动计算每个像素的新位置(目前我已经用 OpenCV 计算了转换矩阵),创建一个新的空列表列表并将像素值粘贴到新列表列表中的相应位置。之后,我想用零填充所有空的“单元格”。

为了合并它们,我将再次创建一个新的列表列表并遍历两个图像并获取每个单元格的最大值或平均值,并用零填充剩余的空“单元格”。然后,我将在窗口中显示这个生成的合并图像,旁边是我提到的飞行中的以下图像。

在计算像素值的新坐标之前,我仍然不知道如何预测列表列表的大小。此外,这种方法似乎有点冗长且效率低下,所以我想知道是否有更简单的方法可以使用 Wand 或 OpenCV(或任何其他库)来做到这一点。

标签: pythonopencvimage-processingimagemagickwand

解决方案


我手动完成了所有工作并且它有效,我仍然遇到的一个问题是通过转换图像的对角 NoData 线。我想这是坐标四舍五入的结果,因为我不能使用浮点数(这是转换公式的结果)作为列表中的索引。(在这个例子中,3 组点的选择不是非常仔细,但你明白了。)

编辑:我通过在中心像素和与中心像素接壤的其他 8 个像素中填充计算值来解决对角线。它使图像更模糊,但这是我唯一的解决方案。

结果


推荐阅读