使用 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。
使用im2uint8
或im2double
转换图像,这些函数会自动将您的值重新缩放到合适的范围。
我正在尝试将彩色图像从 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。
使用im2uint8
或im2double
转换图像,这些函数会自动将您的值重新缩放到合适的范围。