比较或对齐3D对象

时间:2017-12-06 16:59:55

标签: python matlab matrix 3d image-recognition

我有两个3D矩阵。每个像素都是灰度值。

第一个3D矩阵是参考形状。例如想象一个嘴巴的3D模型。

第二个3D矩阵是参考形状的近似子部分。例如想象一颗牙齿。该小节是近似的,因为它来自不同的嘴。请注意,该小节可能略微倾斜。

挑战在于确定参考矩阵内子部分的坐标。扩展上面的口腔示例,挑战在于确定第二个3D矩阵最准确代表的牙齿。

输出可以是3D像素位置和方向值。

2 个答案:

答案 0 :(得分:1)

您可以使用imregisterimregtformimwarp自动对齐两个体积数据集。见matlab's documentation for an example... 或者如果你想更加努力,在6D(convn)中进行卷积,在第一个矩阵的(x,y,z,theta = 0,phi = 0,psi = 0)开始,并创建一个表示所有角度投影中的三维牙齿......

答案 1 :(得分:1)

通常,您希望将子分段矩阵B与参考矩阵A的每个可能的子分段矩阵进行比较(以使其具有相同的大小,作为矩阵B)并找到最相似的一块。

相比之下,我指的是差异的估计,例如如果B_i是矩阵A的某个子部分,则可以计算:

 d_i=sum(sum(sum((B_i-B).^2)));

之后,您需要找到$ d_i $的最小值。如果您正在使用大矩阵A(NxNxN)和B(MxMxM),则(N-M)^3个可能的子矩阵B_i与矩阵B的大小相同。该算法将非常昂贵。

但是,有一种使用卷积的替代实现。您可以查看Particle Image Velocimetry算法,这与您的问题非常相似。