python - 如何在python中应用控制点网格来变形图像
问题描述
我是 Python 的初学者;尽管如此,我最近开始将这种语言用于医学图像处理、图像配准的重要研究项目。
实际上,对于自由形式的配准,我们有一个分布在图像上的控制点网格,这里命名为矩阵 Fi。每个控制点从其原始位置的位移由矩阵 Ro 表示。Fi 和 Ro 的每个元素都是一个 2 成员数组,如 [x1,y1]。二维图像的维度、网格以及控制点之间的原始间距分别用 Mx、My、Nx、Ny、Sx、Sy 表示。
我想知道如何将上述三次 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 中那样的即用型插值函数,因为我为每个指定了一些地标的图像都有一个注释文件,并且我需要知道每个地标在变形图像中变形后的位置。
提前感谢您帮助我。
解决方案
推荐阅读
- android - 没有服务器端,如果在点击 Playstore 直接应用程序链接时已安装,则打开 android 应用程序
- c++ - wxWidget 3.1 自行构建和安装导致链接问题:未定义对 `wxGLCanvasX11::~wxGLCanvasX11()' 的引用
- javascript - React 组件布局:如何让子组件分布均匀,占用空间?
- flutter - 在 Flutter 中复制 .m4a 音频文件需要哪些 FFMPEG 参数?
- math - 从中心线计算圆柱表面点
- nuxt.js - Nuxt js(2.15.7 ) i18n 添加 vue 插件加载器时(app.i18n.__onNavigate 不是函数)
- javascript - encodeURIComponent() 小写
- android - 样本颤动项目没有其他写它有gradle问题
- python - 如何在 Python 中连接子类?
- python - load_opus() 缺少 1 个必需的位置参数:“名称”