HSV到RGB转换

时间:2018-01-30 06:03:14

标签: matlab image-processing

根据我的问题,MosGeo回答了以下代码。我感谢他的回复。

% Load and Convert
RGB_original = imread('peppers.png');
HSV_original = rgb2hsv(RGB_original);

% Modify in HSV
HSV_Modified = HSV_original;
HSV_Modified(:,:,3)= HSV_Modified(:,:,3)*.5;
HSV_Modified(HSV_Modified(:,:,3)>1) = 1;

% Revert Back to RGB and Show
RGB_Modified = hsv2rgb(HSV_Modified);
% Note: RGB_Modified is a uint8 (not double)

% Show Results
figure('Color', 'White')
subplot(1,2,1)
imshow(RGB_original)
title('Original')
subplot(1,2,2)
imshow(double(RGB_Modified))
title('Modified')

我怀疑只转换V平面中的特定值而不是整个V平面值。 例如 如果不是

HSV_Modified(:,:,3)= HSV_Modified(:,:,3)x0.5;
我们写

HSV_Modified(HSV_Modified(:,:,3)>0.8) = HSV_Modified(:,:,3)x0.5;

输出RGB图像不如我们所期望的那样。

请澄清我的疑问。

1 个答案:

答案 0 :(得分:1)

声明

HSV_Modified(HSV_Modified(:,:,3)>0.8) = HSV_Modified(:,:,3)x0.5;

无法正常工作,因为=右侧的值比左侧的值多。你想这样做:

V = HSV_Modified(:,:,3);
mask = V>0.8;
V(mask) = V(mask)*0.5;
HSV_Modified(:,:,3) = V;