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

标签 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 循环导致删除背景图像,如下所示: Image gradually erased when overlayed with lines ,至少对于 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 能够接受多个颜色参数。 (我现在无法测试。)查看其 properties page ,特别是“颜色”选项卡,并与 scatter properties '“Cdata”的相同内容进行比较。

我看不到问题的正确解决方法,因为在底部,Matlab 显然无法通过相同的调用绘制不同颜色的向量。如果以统一的颜色绘制矢量并在它们的起点添加各种颜色的 scatter 对你来说就足够了,那就去做吧......否则我会看看 this 的源代码: 它没有按照您的意愿行事,但也许可以进行调整。

关于matlab - 如何在 matlab 中的背景图像上绘制单独的彩色矢量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27167698/

相关文章:

Matlab:避免for循环来查找具有相同标签的值中的最大值

matlab - 如何在给定每日 fts 的情况下提取月度金融时间序列

matlab - 在 3d 空间中的两个平面之间进行插值

arrays - 在向量存在之前用 'end' 创建索引数组

Matlab 生成矩阵

matlab - 使用 fmincon 时动态修复一些变量

matlab - 如何绘制矩阵中非零元素的坐标?

image-processing - 如何使用 bwlabel 或 regionprops 提取每个标签的像素集?

python - Matlab 到 python 转换结果不相等

matlab - 是否可以从 MATLAB 内置类型派生类?