首页 > 解决方案 > 如何在python中应用控制点网格来变形图像

问题描述

我是 Python 的初学者;尽管如此,我最近开始将这种语言用于医学图像处理、图像配准的重要研究项目。

实际上,对于自由形式的配准,我们有一个分布在图像上的控制点网格,这里命名为矩阵 Fi。每个控制点从其原始位置的位移由矩阵 Ro 表示。Fi 和 Ro 的每个元素都是一个 2 成员数组,如 [x1,y1]。二维图像的维度、网格以及控制点之间的原始间距分别用 Mx、My、Nx、Ny、Sx、Sy 表示。

三次 B 样条插值方程

我想知道如何将上述三次 B 样条方程应用于此控制点网格以创建 DDF(密集位移场,即图像中每个像素的 x 和 y 坐标中的位移)以最终使用 NumPy使图像变形或 TensorFlow以一种有效的方式。目前,我的以下迭代算法太慢了。

for x in range(Mx-1):
    for y in range(My-1):
        Px=x//Sx;Py=y//Sy
        i=Px-1;j=Py-1
        u=x/Sx-Px;v=y/Sy-Py
        DDF[x, y] = 0
        for l in range(4):
            for m in range(4):
                DDF[x,y] = DDF[x,y] + B3(l,u)*B3(m,v)*Ro[i+l,j+m]

我不能使用像 SciPy 中那样的即用型插值函数,因为我为每个指定了一些地标的图像都有一个注释文件,并且我需要知道每个地标在变形图像中变形后的位置。

提前感谢您帮助我。

标签: pythonimageimage-registration

解决方案


推荐阅读