使用 matlab/octave 将图像从 rgb 转换为 hsv 回到 rgb

Converting image using matlab / octave from rgb to hsv back to rgb

我正在尝试将彩色图像从 rgb 转换为 hsv(进行更改)然后再转换回 rgb。作为测试,我制作这段代码只是为了测试如何从 rgb 到 hsv 再到 rgb,但是当我查看图像时,它只显示为黑色。我错过了什么?

*PS 我正在使用 octave 3.8.1,它的工作方式类似于 matlab

Here are the octave 3.8.1 packages I have loaded:
>>> pkg list
Package Name  | Version | Installation directory
--------------+---------+-----------------------
     control *|   2.6.2 | /usr/share/octave/packages/control-2.6.2
     general *|   1.3.4 | /usr/share/octave/packages/general-1.3.4
    geometry *|   1.7.0 | /usr/share/octave/packages/geometry-1.7.0
    parallel *|   2.2.0 | /usr/share/octave/packages/parallel-2.2.0
      signal *|   1.2.2 | /usr/share/octave/packages/signal-1.2.2
     specfun *|   1.1.0 | /usr/share/octave/packages/specfun-1.1.0

测试代码如下:

f=imread('/tmp/bump.jpg'); %color image

%Hue - Saturation - Value 
f_rgb2hsv=rgb2hsv(f); %convert image to HSV double
f_hsv2rgb=hsv2rgb(f_rgb2hsv);%convert to RGB double
f_to_image=uint8(f_hsv2rgb); %convert to uint8 to see image
imshow(f_to_image); 

double 个图像的值在 [0,1] 范围内(浮点数),uint8 个图像在 [0,2^8-1] 范围内(仅整数)。使用 uint8 您只需将 0 和 1 之间的值转换为黑色或接近黑色的 0 和 1。

使用im2uint8im2double转换图像,这些函数会自动将您的值重新缩放到合适的范围。