根据我的问题,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-plane中的特定值,而不是整个V-plane值。例如,如果不是
HSV_Modified(:,:,3)= HSV_Modified(:,:,3)x0.5;我们写
HSV_Modified(HSV_Modified(:,:,3)>0.8) = HSV_Modified(:,:,3)x0.5;输出的RGB图像与我们预期的不同。
请澄清我的疑问。
发布于 2018-01-30 14:14:27
这句话
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;https://stackoverflow.com/questions/48514852
复制相似问题