matlab - 用MATLAB进行图像的散射叠加

  显示原文与译文双语对照的内容

我有一个RGB图像,img,我想生成一个新的图像 img2,上面有一个覆盖分散的plot 。

如果X Y Z 分别是X 协调,Y 坐标和"大小"值的nx1向量,我正在做的是:


imshow(img);
hold on;
scatter(X,Y,3,Z,'fill');
hold off;

这样我实际上获得了一个图像的散点,但问题是每个点的颜色( blu ) 相同,而不是通常。


figure;
scatter(X,Y,3,Z,'fill');

有什么建议谢谢。

时间: 作者:

尝试在 imshow() 之前添加 figure;,这将使你可以使用正常的颜色绘制图像。


figure; % add this line before imshow()
imshow(img);
hold on;
scatter(X,Y,3,Z,'fill');
hold off;

以下是我刚刚测试过的示例:


figure; % add this line before imshow()
imshow(img);
hold on;

load seamount
s = sqrt(-z/2);
c = z;
scatter(x,y,s,c,'fill')

hold off;

enter image description here

可以看到,图像上显示的颜色与单独绘制时的颜色一致。

enter image description here


通过设置属性。换句话说,MarkerEdgeColorMarkerFaceColor的颜色,你可以随时将颜色更改为你喜欢的任何颜色。

作者:

好的,把Z的值重新映射到 0 -255. 以下是我的功能:


function [ Aremaped ] = remap( A,lnew,hnew )
 Aremaped = zeros(size(A));
 lold=min(A);
 hold=max(A);
 for i=1:length(A)
 newVal = lnew + (A(i)-lold)*(hnew-lnew)/(hold-lold);
 Aremaped(i) = newVal 
 end
end

希望这可以帮助

...