如何在 matlab 中的背景图像上绘制单独着色的矢量



我有一个背景图像和一个矢量字段,其中包含每个矢量的单独颜色信息,我想在背景图像上绘制这些信息:

% Random background image
Image = rand(100,200);
% Random colors
color1 = rand(30,30);
color2 = rand(30,30);
color3 = rand(30,30);
% Positions
x = 31:60;
y = 31:60;
[X,Y] = meshgrid(x,y);
% Random vectors
DX = 10 * rand(30,30);
DY = 20 * rand(30,30);
% The vector at (X(i,j),Y(i,j)) is supposed
% to have the RGB color [color1(i,j) color2(i,j) color3(i,j)]
% Uniformly colored vector field - works fine
imshow(Image);
hold on;
quiver(X,Y,DX,DY,'color',[0.5 0.75 1]);
% What I would like - does not work
imshow(Image);
hold on;
quiver(X(:),Y(:),DX(:),DY(:),'color',[color1(:) color2(:) color3(:)]);

一个简单的 for 循环会导致擦除背景图像,如中所述:图像在与线条叠加时逐渐擦除,至少对于 Matlab 版本 R2012b (8.0.0.783) 是这样。

有什么想法吗?

我对你的代码的第一个问题是

color1 = rand(30,30);
color2 = rand(30,30);
color3 = rand(30,30);
(...)
quiver(X,Y,DX,DY,'color',[color1 color2 color3]);

即使假设quiver可以采用多种颜色(更多内容见下文),您传递的最后一个参数是一个 30x90 数组。我不明白如何期望 MATLAB 猜测它如何分解为三个 30x30 数组(红色、绿色、蓝色)。通常,将颜色数据作为 RGB 矩阵传递的方法是为 N 个点提供 Nx3 向量

更重要的是,我不希望quiver能够接受多种颜色的参数。(我现在无法测试。请参阅其属性页面,特别是"颜色"选项卡,并与散点属性的"Cdata"进行比较。

我没有看到这个问题的正确解决方案,因为在底部,Matlab 中显然无法使用相同的调用绘制不同颜色的向量。如果以均匀的颜色绘制矢量并在它们的起点添加各种颜色的scatter对您来说就足够了,那就去做吧......否则我会看看这个的源代码:它没有做你想要的,但也许它可以适应。

相关内容

  • 没有找到相关文章

最新更新