5

私はグリッドを持っています。それは 3D で、数値を格納しています。

2*2*2 の場合のグリッドの例を次に示します。

(:, :, 1) -> [0, 0;
              0, 0]
(:, :, 2) -> [0, 0;
              0, 0]

ボクセルが存在しない場合、数値 0 は通常、色または nan で表現したい数値です。私がやりたいことは、次の図のように matlab でボクセル グリッドを表示することです。

ここに画像の説明を入力

ただし、母音はセル内の数字で色付けする必要があります。

ライブラリや自分で書く方法があれば、これを行う方法を知っている人はいますか?

4

2 に答える 2

5

だから私はあなたがこのようにそれを行うことができることを知りました:

for x = 1:GridSize(1)
    for y = 1:GridSize(2)
        for z = 1:GridSize(3)

            if (~isnan(VoxelGrid(x, y, z)))

                cubeLength = VoxelGrid.resolution;

                plotcube(   [cubeLength cubeLength cubeLength], ...
                            [x, y, z], ...
                            0.9, ...
                            [colour, colour, colour])
             end
         end
     end
 end

これにより、次のようなグレースケールのボクセル表現が出力されます。

ここに画像の説明を入力してください

今、私は色を機能させるためにいくつかの助けが必要です。

于 2012-07-25T04:30:08.173 に答える
0

完全なソース コードは、さまざまな色で立方体をプロットする以下に示されています。色情報を取得するには、<0,1> の間の Float 値が必要であることに注意してください。したがって、入力ボリュームは正規化されてこの範囲の強度値をシフトし、plotcube スクリプトを使用して個々の立方体を表示します。色を取得するスクリプトは@Use matlab color scheme to convert float to RGBです。個々のキューブのプロットは @ http://www.mathworks.com/matlabcentral/fileexchange/15161-plotcubeです

%PLOTCUBE(EDGES,ORIGIN,ALPHA,COLOR)

VoxelGrid(:,:,1)=[5 3;8 1];
VoxelGrid(:,:,2)=[9 2;7 1];

%VoxelGrid=round(20*rand(8,8,8)); %Uncomment this line to display dense volume

GridSize=size(VoxelGrid);
for x = 1:GridSize(1)
    for y = 1:GridSize(2)
        for z = 1:GridSize(3)
            if (~isnan(VoxelGrid(x, y, z)))
                cubeLength = 1;
                f = VoxelGrid(x,y,z)/max(max(max(VoxelGrid)));
                cm = colormap; % returns the current color map
                colorID = max(1, sum(f > [0:1/length(cm(:,1)):1])); 
                colour = cm(colorID, :); % returns your color
                plotcube([cubeLength cubeLength cubeLength],[x, y, z],0.9,[colour]);
             end
         end
     end
end
于 2015-07-19T11:48:01.003 に答える