我有两个3D矩阵。每个像素都是灰度值。
第一个3D矩阵是参考形状。例如想象一个嘴巴的3D模型。
第二个3D矩阵是参考形状的近似子部分。例如想象一颗牙齿。该小节是近似的,因为它来自不同的嘴。请注意,该小节可能略微倾斜。
挑战在于确定参考矩阵内子部分的坐标。扩展上面的口腔示例,挑战在于确定第二个3D矩阵最准确代表的牙齿。
输出可以是3D像素位置和方向值。
答案 0 :(得分:1)
您可以使用imregister
,imregtform
和imwarp
自动对齐两个体积数据集。见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算法,这与您的问题非常相似。