具有 3 个点的仿射变换和合并图像
Affine transformation with 3 points and merging images
我正在编写一个 Python 程序,显示 2 个相邻的热成像(低分辨率)无人机镜头。然后用户在两张图片上选择 3 个点,之后第二张图片应该被转换并与第一张合并。在接下来的步骤中,程序应显示合并后的图片以及旁边航班的第三张图片等。
目前我正在寻找进行图像转换和合并的方法。
我正在考虑将图像读取为数组(列表的列表(=行)),使用变换公式手动计算每个像素的新位置(目前我已经使用 OpenCV 计算了变换矩阵) ,创建一个新的空列表列表并将像素值粘贴到新列表列表中的相应位置。之后,我想用零填充所有空 'cells'。
为了合并它们,我将再次创建一个新的列表列表并循环遍历两个图像并获取每个单元格的最大值或平均值,并用零填充剩余的空值 'cells'。然后,我将在 window 中显示我提到的来自航班的以下图像旁边的合成图像。
我仍然不知道如何在计算像素值的新坐标之前预测列表列表的大小。此外,这种方法似乎有点冗长且效率低下,所以我想知道是否有更简单的方法使用 Wand 或 OpenCV(或任何其他库)来做到这一点。
我手动完成了所有操作并且一切正常,但我仍然遇到的一个问题是通过转换图像的对角线 NoData 线。我想这是坐标四舍五入的结果,因为我不能使用浮点数(这是转换公式的结果)作为列表中的索引。 (对于这个例子,没有非常仔细地选择 3 组点,但你明白了。)
编辑: 我通过在中心像素和与中心像素接壤的其他 8 个像素中填充计算值来解决对角线。它使图像变得模糊,但这是我唯一的解决方案。
我正在编写一个 Python 程序,显示 2 个相邻的热成像(低分辨率)无人机镜头。然后用户在两张图片上选择 3 个点,之后第二张图片应该被转换并与第一张合并。在接下来的步骤中,程序应显示合并后的图片以及旁边航班的第三张图片等。
目前我正在寻找进行图像转换和合并的方法。
我正在考虑将图像读取为数组(列表的列表(=行)),使用变换公式手动计算每个像素的新位置(目前我已经使用 OpenCV 计算了变换矩阵) ,创建一个新的空列表列表并将像素值粘贴到新列表列表中的相应位置。之后,我想用零填充所有空 'cells'。
为了合并它们,我将再次创建一个新的列表列表并循环遍历两个图像并获取每个单元格的最大值或平均值,并用零填充剩余的空值 'cells'。然后,我将在 window 中显示我提到的来自航班的以下图像旁边的合成图像。
我仍然不知道如何在计算像素值的新坐标之前预测列表列表的大小。此外,这种方法似乎有点冗长且效率低下,所以我想知道是否有更简单的方法使用 Wand 或 OpenCV(或任何其他库)来做到这一点。
我手动完成了所有操作并且一切正常,但我仍然遇到的一个问题是通过转换图像的对角线 NoData 线。我想这是坐标四舍五入的结果,因为我不能使用浮点数(这是转换公式的结果)作为列表中的索引。 (对于这个例子,没有非常仔细地选择 3 组点,但你明白了。)
编辑: 我通过在中心像素和与中心像素接壤的其他 8 个像素中填充计算值来解决对角线。它使图像变得模糊,但这是我唯一的解决方案。