问题标签 [image-registration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
480 浏览

matlab - 3D B样条近似

3D 中的 B 样条可以扩展以产生三个参数的标量函数:

在此处输入图像描述

B 样条由 64 个控制点(4X4X4 体素邻域内的数据值)定义,并在由八个中心体素界定的单位立方体内进行评估,其中 t、s 和 r 表示 x、y 和 z 方向上的距离分别。

基于以上注释,我在 Matlab 中编写了我的函数:

如果我的函数是真的,我现在应该如何调用我的函数?我不知道我应该如何计算 r、s 和 t。

PS:要运行这个功能,我有 3D 的控制点和 ngrid,例如从 XY 的角度来看,我的控制点(蓝色)和网格(红色)是这样的:

在此处输入图像描述

根据以上注释,s,r 和 t 是控制点与上图中网格之间的距离值吗?

任何人都可以帮助我找出我是否通过正确的方式和理解?任何可以帮助我在 3D Bspline 中的替代方式或示例代码?

PS:我正在做图像配准(3d MRI),我的控制点是我的配准结果的运动场。我需要应用 B-Spline 以使我的注册更加顺利。

非常感谢

0 投票
0 回答
185 浏览

matlab - 快速计算两幅图像的联合直方图

在图像配准的上下文中,我必须计算两个图像的联合直方图,即每个直方图(i,j)包含第一张图像中强度为 i 和第二张图像中强度为 j 的像素数。

为此,我循环强度:

然而,这样的算法对我的项目来说太慢了,我试图在没有 for 循环的情况下做到这一点,但到目前为止,我还没有找到任何解决方案来解决我的问题。

我希望你们能帮助我解决它;)

0 投票
1 回答
546 浏览

matlab - 使用 MATLAB 对齐/配准骨骼 X 射线图像

我有几张在不同时间(在随访期间)拍摄的同一块骨头的 X 射线图像,与骨头表面平面相比,相机平面的角度大致相同。但是,图像中骨骼的角度、位置和大小是不同的。

我的目标是使用 MATLAB 使用此类图像的最佳配准技术(自动,即无需手动挑选配准点)对齐图像。

我尝试使用 mathworks.com 中的代码:http: //www.mathworks.com/help/images/examples/find-image-rotation-and-scale-using-automated-feature-matching.html 并且效果很好用于识别植入物上的点并根据这些点对齐图像,但我似乎无法让它识别相似的骨骼模式。

为了帮助“关注”骨骼而不是植入物,我已将植入物从图像中完全移除。尽管如此,detectSURFFeatures 仍然没有发现可以使用的骨骼特征。更改detectSURFFeatures 的参数也没有多大帮助。

我希望坚持这个整体代码,因为只要我能让它检测到足够的特征点,它就可以很好地工作。

是否有人对如何检测关节或骨折等骨骼特征/模式有任何建议(使用 detectSURFFeatures 或任何其他类似功能)?

谢谢你,诺加

0 投票
1 回答
607 浏览

matlab - 注册后如何计算图像中点的新坐标?

假设我有图像中某个点的 XY 坐标。

然后,我使用“相似性”优化对此图像执行非变形配准。

现在我想计算与图像中同一点对应的新 XY 坐标(注册后)。

我敢打赌,应该有一种方法可以通过使用 tform / 空间参考对象 / 类似的东西来做到这一点......

有谁知道如何做到这一点?

0 投票
1 回答
2552 浏览

matlab - 具有不同切片数的两个体积的图像配准

我正在尝试注册来自大脑的两个体积图像(PET 和 CT 甚至 PET 和 MR)。这些体积图像中的每一个都包含不同数量的 2D 图像(切片)。例如,CT150切片和PET100切片。我正在考虑使用插值方法来计算 CT 切片的数量并将其减少到 100。这是正确的方法吗?有谁知道任何可能对我有帮助的资源?就像一个伪代码,或者我应该通过注册两个体积图像的步骤。谢谢 :)

0 投票
1 回答
1410 浏览

matlab - 将非各向同性体素转换为各向同性体素

我正在尝试注册两个大脑图像卷(每个都包括 2D 切片)。第一个体积(目标或移动体积)的切片厚度和间距分别为 1.5 和 [1.5 1.5]。对于第二个(参考体积),这些值为 4 和 [0.9375 0.9375]。切片的数量也不同。第一卷有 96 片,第二卷有 44 片。

我的一位朋友建议使体素各向同性,但我不知道该怎么做。我可以看到第一卷是各向同性的,但不是第二卷。我想知道我应该怎么做?

此外,我将考虑每个卷的两个切片,并在其上应用特征提取方法。因此,这两个切片都应该与大脑的同一层(同一场景)相关。考虑到切片的数量不同,我应该怎么做以及我应该如何重新计算第一卷的新切片与第二卷相同?

0 投票
1 回答
652 浏览

matlab - 计算 3D 仿射变换并使用它重新采样体积

我正在尝试注册两个卷(vol1vol2)。的大小vol140x40x24。的大小vol264 x64x11

到目前为止,我已经提取了它们的特征,然后进行了匹配。现在,我在两个体积中有一组对应的点,这些点存储在pairs其中是一个大小矩阵100x6(每一行pairs是体素的坐标在[x y z X Y Z]哪里,并且是对应的体素在哪里)。然后,使用 RANSAC 算法,我计算了 3D 仿射变换 T。例如,T 如下所示:(x,y,z)vol1[X Y Z]vol2

我有一些问题。首先,这个仿射变换矩阵看起来正确吗?在我看来是正确的。如果它是正确的,那么为什么 MATLAB 中计算 3D 仿射变换的函数affine3d具有零列而不是零行(如上面的 T 中)?它看起来像我的变换 T 的转置。

如果我的转换是正确的,那么就会出现另一个问题。我尝试使用变换 T 对 vol1 重新采样,但计算出的体素坐标为负数!!!我感到很困惑。我不知道是什么导致了这个问题。

这是我的代码。如果您发现任何问题,请告诉我。

0 投票
0 回答
1884 浏览

matlab - 使用 3D RANSAC 估计 3D 仿射变换

我正在尝试注册两个体积图像(img1img2)。的大小img140x40x24。的大小img264 x64x11。到目前为止,我已经提取了它们的特征(vol1vol2,与图像大小相同),然后匹配它们。

现在,我在两个特征体积中有一组对应点,它们成对存储,它是一个大小矩阵100x6(每一行对是[x, y, z, X, Y, Z]其中(x,y,z)的体素坐标vol1[X Y Z]是对应体素的坐标vol2)。

现在,我正在尝试使用 RANSAC 算法来估计 3D 仿射变换 T。我编写了下面的代码,但我认为它存在问题,因为当我得到输出变换 T 并将其乘以样本体素坐标时从 vol1,我得到了一些负坐标!!!

下面是我对 3D RANSAC 算法的实现。我在这个链接中使用了 2D RANSAC 实现。如果您发现任何问题,请告诉我。

0 投票
1 回答
1027 浏览

image - 使用 MATLAB 进行图像转换后裁剪边框

如何在转换(旋转、平移、缩放和剪切)图像后自动裁剪黑色边框?

我正在使用基于强度的自动图像配准(imregtform、优化器、imregister ....)来旋转一个图像以适应另一个图像。现在旋转后,我需要裁剪两个图像以具有相同的大小,并且仍然排成一行。

旋转图像的最简单表示形式是应用了变换矩阵的白色正方形。

可以在这里看到我正在使用的一组实际图像的示例。

我假设图像边缘可能具有零值像素的事实可能会使操作复杂化,尽管我假设由于噪声,整个图像将是非零的。

也许我可以使用变换矩阵来实际计算需要裁剪的边界。在上面的例子中,矩阵是:

该矩阵列在工作区中的“1x1 仿射 2d”对象中。我无法从那里找到使用它的语法。

0 投票
2 回答
1965 浏览

python - 是否可以在 ITK 中使用蒙版来注册两个图像?

我想知道是否可以使用两个二进制掩码(每个图像一个)使用 Simple ITK 注册两个图像?

实际上,我需要注册 2 个已经进行地理参考的图像(不包含数据的像素用“0”填充)但仍然存在投影错误。

所以,我只想在计算相似度度量时使用掩码值为“1”的像素。

这是我的一段代码:

我希望有人能帮忙!