我正在使用一些 MATLAB 代码通过视频捕获来跟踪流体解决方案中的粒子。
所有跟踪的粒子都存储在一个单元格数组 ( tr
) 中,每个单元格条目是一个不同的跟踪粒子。然后,该单元包含一个N x 11
矩阵,其中每一行包含该特定帧的粒子参数(位置、大小、对比度等),N 是粒子已被跟踪的视频帧数。
每个单元格的第 1 列包含粒子 x 位置,每个单元格的第 2 列包含粒子 y 位置,每个单元格的第 11 列包含捕获的所有帧的粒子平均速度(忽略所有其他列)。
粒子单元的示例:
现在通常要在我捕获的视频的第一帧上绘制这些轨道,我使用以下代码:
image = read(mmreader([movie '.avi']), 1); %Loads the first frame of the avi file
figure
imshow(image);
hold on
for i = 1:length(tr) % Or choose which particle you want to show
plot3(tr{i}(:,1),tr{i}(:,2),tr{i}(:,11),'r')
end
但我更愿意做的是像使用上面的代码一样绘制粒子,但粒子轨迹的颜色取决于其平均速度的值(红色 - 快,蓝色 - 慢等)。我想也许最好的方法是将其绘制为 3D 并使用平均速度作为 Z 轴值?但是我仍然不确定如何将颜色添加到绘图中并保持相对,以便可以通过它们绘制的颜色来比较不同粒子的速度。
任何帮助将不胜感激!