作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在读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
的调用中(再次)取反。我认为它应该是 T
或 linalg.inv(R)
传递给该函数。
关于python - Python 中的图像配准和仿射变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943024/
我是一名优秀的程序员,十分优秀!