【发布时间】:2016-03-15 11:37:21
【问题描述】:
这个问题是上一个关于HSV color space的问题的后续问题。
假设我有两个数组 A 和 B,其中 A 是我感兴趣的数据点 (2D),要显示在颜色栏中,B 是从 HSV 颜色空间转换而来的 RGB 图像其中:色相在区间[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();
在示例中,您可以看到颜色条覆盖了整个 hsv 范围,并且刻度从 0 到 1。
我希望它只显示 hsv 范围的上 75%,刻度从 0 到 max(A(:))
假设 max(A(:)) = 0.35 的正确颜色条应如下所示:
【问题讨论】:
-
你能真正展示你是如何做到的吗?代码
-
尝试发布 MCVE:stackoverflow.com/help/mcve
-
@Ander Biguri 添加了一个 MCVE。我希望现在能更清楚一点。