我在使用MATLAB,我想在灰度png影像上繪制彩色的軌跡,同時保留軌跡的顏色資訊。例如下面的資料,我想在影像A上繪制資料B,而不使資料B變成灰色,也不使顏色條代表灰度影像。如果有任何幫助,我們將不勝感激!
%Image A。
RGB = imread('peppers.png') 。
I = rgb2gray(RGB);
figure
imshow(I)
hold on
%資料B
x = 1: 1000;
y = x;
z = zeros(size(x))。
lineColor = x;
surface([x;x], [y;y], [z;z], [lineColor;lineColor], ...
'FaceColor', 'no', ...
'EdgeColor', 'interp', ...
'LineWidth', 8)。)
cc = colorbar()。
多謝!
uj5u.com熱心網友回復:
MATLAB似乎不喜歡做一個以上的colormap pet axes。通過使用hold住,我們把影像(灰色的colormap)和表面(如噴氣式colormap)都繪制在同一個圖上。默認情況下,imshow中的非RGB影像的顏色映射被設定為灰色,因此對表面繪圖也是如此。試圖通過呼叫colormap('jet')來改變顏色映射,就會改變影像和表面的顏色映射。
似乎也有其他人有同樣的問題。 https://uk.mathworks.com/matlabcentral/answers/194554-how-can-i-use-and-display-two-different-colormaps-on-the-same-figure
最好的解決方案似乎是為同一個圖形定義兩個獨立的軸,并將它們連接起來,以便位置資訊匹配。您需要指定繪制哪個軸,所以imshow已經被imagesc取代,后者具有更大的靈活性。然后您可以為每個軸定義不同的顏色圖。不幸的是,colorbar可能不會每次都玩得很好,所以你必須對它的位置資訊做一些調整。
在實踐中你的代碼:
figure。
%影像A
ax1 = axes;
RGB = imread('peppers.png')。
I = rgb2gray(RGB);
imagesc(ax1,I)
colormap(ax1,'gray')
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/326921.html
標籤:
