gpt4 book ai didi

python - Python 中的图像配准和仿射变换

转载 作者:行者123 更新时间:2023-11-28 18:51:12 43 4
gpt4 key购买 nike

我一直在读Programming Computer Vision with Python由 Jan Erik Solem 撰写,这是一本非常好的书,但是我无法澄清有关图像配准的问题。

基本上,我们有一堆图像(人脸)需要对齐一点,所以首先需要做的是通过相似变换执行刚性变换:

x' = | sR t | x
| 0 1 |

其中 x 是要通过旋转 R、平移 t 和缩放 s 转换为 x' 的向量(在本例中为一组坐标)。

Solem 为每个图像计算这个刚性变换,它返回旋转矩阵 R 和平移向量作为 tx 和 ty:

R,tx,ty = compute_rigid_transform(refpoints, points)

但是,由于某种原因,他对 R 的元素进行了重新排序:

T = array([[R[1][1], R[1][0]], [R[0][1], R[0][0]]])

然后他执行了一个 affine transformation :

im2[:,:,i] = ndimage.affine_transform(im[:,:,i],linalg.inv(T),offset=[-ty,-tx])

在这个例子中,这个仿射变换是在每个 channel 上执行的,但这并不相关。 im[:,:,i] 是要处理的图像,此过程返回另一幅图像。

什么是 T 以及为什么我们要在仿射变换中反转该矩阵?实现图像配准的通常步骤是什么?

更新

Here您可以在 Google 图书中找到此代码的相关部分。从第 67 页底部开始。

最佳答案

在我看来这像是代码中的一个错误。 T 似乎只是 R 的转置,对于旋转矩阵而言,它与逆矩阵相同。然后他在对 ndimage.affine_transform 的调用中(再次)取反。我认为它应该是 Tlinalg.inv(R) 传递给该函数。

关于python - Python 中的图像配准和仿射变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943024/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com