Раскраска треугольной сетки из значений вокселей RGB

У меня есть 3D-изображение, содержащее значения RGB. Я хотел бы создать из него треугольную сетку с треугольниками, окрашенными в соответствии со значениями RGB соответствующих вокселей. Можно ли сделать это напрямую, вызвав isosurface, или мне нужно найти, какие воксели используются для каждого треугольника, и установить цвет треугольника как среднее значение для соответствующих вокселей?

Вот небольшой пример с одинаковым цветом для всех вокселей. Очевидно, я мог бы использовать столько цветов, сколько есть вокселей. Каким будет способ вызвать изоповерхность, чтобы учесть значения RGB каждого вокселя?

          % 3D Binary image
    Binary_Image_3D = ones(6,6,10) ; 
    Binary_Image_3D([1,end],:,:) = 0 ;
    Binary_Image_3D(:,[1,end],:) = 0 ;
    FV = isosurface(Binary_Image_3D,0.5) ;
    patch('vertices',FV.vertices,'faces',FV.faces,'facecolor','cyan') 
    axis equal off

    % 4D Binary image 
    Binary_Image_4D = zeros(6,6,10,3) ; 
    Sizes = size(Binary_Image_4D) ; 
    Color = [0 0 1] ; 
    for k = 1:Sizes(3) 
        for j = 1:Sizes(2) 
            for i = 1:Sizes(1) 
                Binary_Image_4D(i,j,k,:) = Color ;
            end
        end
    end

0 ответов

Другие вопросы по тегам