Раскраска треугольной сетки из значений вокселей 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