我有一个体积(图像)和一个包裹某个结构的最小边界框。 我使用以下算法来提取最小边界框
http://uk.mathworks.com/matlabcentral/fileexchange/18264-minimal-bounding-box/content/minboundbox.m
所以我得到一个看起来像这样的边界框
现在,我想从MBB创建一个新卷。换句话说,我想将MBB中的每个点映射到一个轴平行的新框。
我可以从角点获取新盒子的尺寸
dim = [0 0 0];
x = cp(:,1);
y = cp(:,2);
z = cp(:,3);
dim(3) = sqrt( (x(1)-x(2))^2 + (y(1)-y(2))^2 + (z(1)-z(2))^2 );
dim(1) = sqrt( (x(1)-x(4))^2 + (y(1)-y(4))^2 + (z(1)-z(4))^2 );
dim(2) = sqrt( (x(1)-x(5))^2 + (y(1)-y(5))^2 + (z(1)-z(5))^2 );
现在,我可以应用minboundbox算法返回的旋转矩阵
A = zeros(4,4); A(1:3, 1:3) = R; A(4,4) = 1;
tform = affine3d(A);
N = numel(img);
[X,Y,Z] = ind2sub(size(img), 1:N);
V = img(1:N);
[Xt, Yt, Zt] = transformPointsForward (tform,X,Y,Z);
Xt = reshape(Xt, size(img));
Yt = reshape(Yt, size(img));
Zt = reshape(Zt, size(img));
现在我被卡住了。我需要:
在常规网格中插入与这些坐标关联的值(我试过的任何方法都是OUT OF MEMORY,图像的大小=(300,400,500));
仅提取MBB的区域。
任何想法我该怎么做?
更新主要问题不是如何获得Xt,Yt,Zt ......
问题是,由于Xt,Yt和Zt形成一个不规则的点网格,并且某些值相关联,我如何得到带插值点的规则网格?我试过这个,但内存不足
Vq = griddata(Xt, Yt, Zt, double(V), 1:dim(1), 1:dim(2), 1:dim(3));
答案 0 :(得分:1)
如果要仅提取MBB的区域,则更容易将MBB的空间映射到单位立方体。这是我将如何做到这一点(注意这主要是伪代码,不能保证它的工作原理。我会很快在我的另一台计算机上的matlab实例上试一试......)
Translation = eye(4)
Translation(1:3, 4) = transpose(-cornerpoints(1,:))
BoxAxisX = transpose(cornerpoints(:,4) - cornerpoints(:,1))
BoxAxisX = BoxAxisX / norm(BoxAxisX)
BoxAxisY = transpose(cornerpoints(:,5) - cornerpoints(:,1))
BoxAxisY = BoxAxisY / norm(BoxAxisY)
BoxAxisZ = transpose(cornerpoints(:,2) - cornerpoints(:,1))
BoxAxisZ = BoxAxisZ / norm(BoxAxisZ)
Rotation = eye(4)
Rotation(1:3,1:3) = [ BoxAxisX, BoxAxisY, BoxAxisZ ]
Scale = diag( [ (1/dim(1)) (1/dim(2)) (1/dim(3)) 1 ] )
A = affine3d( Scale * Rotation * Translation )
[Xt, Yt, Zt] = transformPointsForward (A,X,Y,Z);
% Now all your points that are within the box should satisfy unit constraints
GoodIndices = Xt <= 1 && Xt >= 0 && Yt <= 1 && Yt >= 0 && Zt <= 1 && Zt >= 0
GoodX = Xt(GoodIndices)
...
一般的想法是将盒子放回原点上有一个点的单位立方体。以下是步骤:
我不使用它们给出的旋转矩阵的原因是我不知道它将朝向哪个轴以及它绕哪个点旋转(围绕原点旋转!什么!)。所以...使用你知道允许你选择基点的角点来构造旋转矩阵更容易。
至于内存不足例外......有很多关于如何减少内存使用量的帖子。虽然图像尺寸很大..(~240MB)