图像的矩阵变换
Matrix Transformation for image
我正在 python 进行图像处理项目,我需要在其中更改坐标系
我以为是类比矩阵变换试过不行,我取了红点的坐标
简单地减去 256 再除以 512。连接是你看到 256 的值映射到 0。因此,0 映射到 -256,256 映射到 0,512 映射到 256。但是,您还需要这些值在 [-0.5, 0.5]
的范围内。将所有内容除以 512 即可完成此操作。
因此关系是:
out = (in - 256) / 512 = (in / 512) - 0.5
从上面的示例输入中尝试一些值,让自己相信这是正确的关系。
如果您想将其形成为矩阵乘法,则可以将其解释为具有缩放和平移但没有旋转的仿射变换:
[ 1/512 0 -0.5 ]
K = [ 0 1/512 -0.5 ]
[ 0 0 1 ]
请注意,您需要使用齐次坐标才能获得所需的结果。
例如:
(x, y) = (384, 256)
[X] [ 1/512 0 -0.5 ][384]
[Y] = [ 0 1/512 -0.5 ][256]
[1] [ 0 0 1 ][ 1 ]
[X] [384/512 - 0.5] [ 0.25 ]
[Y] = [256/512 - 0.5] = [ 0 ]
[1] [ 1 ] [ 1 ]
只需去掉最后一个坐标即可得到最终答案(0.25, 0)。
我正在 python 进行图像处理项目,我需要在其中更改坐标系
我以为是类比矩阵变换试过不行,我取了红点的坐标
简单地减去 256 再除以 512。连接是你看到 256 的值映射到 0。因此,0 映射到 -256,256 映射到 0,512 映射到 256。但是,您还需要这些值在 [-0.5, 0.5]
的范围内。将所有内容除以 512 即可完成此操作。
因此关系是:
out = (in - 256) / 512 = (in / 512) - 0.5
从上面的示例输入中尝试一些值,让自己相信这是正确的关系。
如果您想将其形成为矩阵乘法,则可以将其解释为具有缩放和平移但没有旋转的仿射变换:
[ 1/512 0 -0.5 ]
K = [ 0 1/512 -0.5 ]
[ 0 0 1 ]
请注意,您需要使用齐次坐标才能获得所需的结果。
例如:
(x, y) = (384, 256)
[X] [ 1/512 0 -0.5 ][384]
[Y] = [ 0 1/512 -0.5 ][256]
[1] [ 0 0 1 ][ 1 ]
[X] [384/512 - 0.5] [ 0.25 ]
[Y] = [256/512 - 0.5] = [ 0 ]
[1] [ 1 ] [ 1 ]
只需去掉最后一个坐标即可得到最终答案(0.25, 0)。