这个问题是关于HSV color space以前的问题。修改colorbar刻度和颜色范围
比方说,我有两个数组A
和B
,其中A
是在彩条显示,以及B
是由HSV色彩空间,转化为RGB图像的关注我的数据点(2D):色调在区间[0.25-1]
(对应于归一化的A
值0.25-1),饱和度= 1,区间[0-1]
中的值(对应于一些其他值)。
当显示B
与imshow
时,我想创建一个匹配的颜色条,其中的刻度对应的值范围为A
。
我面临的第一个难题是我希望我的色调位于区间[0.25-1]
之内,因此我只需要显示hsv
色条的某个部分。
第二个难点是我需要将A
的值范围与颜色条相匹配。
示例代码:
A = rand(30,30)*0.4; % Values range from 0 - 0.4
X = rand(30,30)*100+100; % Values range from 100 - 200
A_n = A/(max(A(:))/0.75) + 0.25; % "Normalize", with range 0.25 - 1
X_n = X/max(X(:)); % Normalize, range 0 - 1
colorRGB = NaN([size(A),3]); % preallocate
for ii = 1:size(A,1)
for jj = 1:size(A,2)
colorRGB(ii,jj,:) = hsv2rgb([A_n(ii,jj),1,X_n(ii,jj)]); % turn into RGB
end
end
imshow(colorRGB), % display image
colormap hsv; cb = colorbar();
你可以看到colourbar覆盖整个HSV范围,并有例蜱从0 - 1
我希望它是什么仅显示hsv范围的上限75%,刻度从0到最大(A(:))
假设max(A(:))= 0.35的正确的色条应如下所示:
你其实可以告诉你如何做呢?代码 –
尝试发布一个MCVE:https://stackoverflow.com/help/mcve –
@Ander Biguri添加了一个MCVE。我希望现在更清楚一点。 – Johannes