DescriptionBarns grand tetons HSV separation.jpg |
English: This takes an image ( Image:Barns grand tetons.jpg) and displays the H, S and V elements of it.
Note that the H element is the only one displaying colour. Compare the dark on the left side of the barn roof and the white of the snow; in both cases these have colour, but the saturation is very low, causing them to be near-greyscale; the intensity of the barn is much lower than the snow. The green of the grass is highly saturated and of moderate intensity; the blue of the mountains is consistent in colour but varies in intensity and saturation; and the sky has constant colour and intensity but varying saturation.
Generator code
In MATLAB:
RGBimage = imread('barns_grand_tetons_reduced.jpg');
[height,width,depth]=size(RGBimage);
HSVimage=rgb2hsv(RGBimage);
% Caution: MATLAB's hsv2rgb routine is very memory-hungry. I had to halve
% the size of the source image to avoid running out or memory (even with
% a lot of swap space allocated).
% Newer versions of matlab need outputimage=zeros(height*4,width,depth,'double');
outputimage=double(zeros(height*4,width,depth));
for w=1:width,
for h=1:height,
outputimage(h,w,1) = HSVimage(h,w,1); %Copy H, S and V for normal image
outputimage(h,w,2) = HSVimage(h,w,2);
outputimage(h,w,3) = HSVimage(h,w,3);
outputimage(h+height,w,1) = HSVimage(h,w,1); %Copy H only for first component
outputimage(h+height,w,2) = 1;
outputimage(h+height,w,3) = 1;
outputimage(h+(2*height),w,2) = HSVimage(h,w,2); %S only for second component
outputimage(h+(2*height),w,1) = 1;
outputimage(h+(2*height),w,3) = 1;
outputimage(h+(3*height),w,3) = HSVimage(h,w,3); %V only for third component
outputimage(h+(3*height),w,1) = 1;
outputimage(h+(3*height),w,2) = 1;
end
end
im2=hsv2rgb(outputimage);
image(im2);
imwrite(im2,'HSV_separation.jpg','jpeg');
Based on the (public domain) photo Image:Barns grand tetons.jpg. Code above and resulting output by Mike1024. |