2015-07-21 131 views
0

我试图从rgb转换成hsv(作出更改),然后回到rgb的彩色图像。作为测试,我只是为了测试如何从rgb到hsv回到rgb而编写代码,但是当我查看图像时,它只会显示为黑色。我错过了什么?使用matlab /八度音程从rgb转换为hsv图像回rgb

* PS我使用八度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); 

bump image

+0

您可以发布一些示例数据,请.... – kkuilla

+0

@kkuilla我已将bump.jpg图像作为您请求的示例数据以及上面的测试代码附加到问题中。 –

+0

如何在没有Octave中的图像包的情况下运行'rgb2hsv'?我不能... – kkuilla

回答

2

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

使用im2uint8im2double来转换图像,这些功能会自动将您的值重新调整到适当的范围。

+0

谢谢,但这需要我无法访问的图像工具箱/图像包。有另一种方法吗? –

+0

@RickT你为什么不自己动手......?乘以255.或者尝试'imshow(f_to_image,[]);'。 – kkuilla

+0

@kkuilla我会,但我不知道要增加什么。我知道RGB是0-255,但如果HSV是一个小数,我乘以1-255我还剩下一个数字和一个小数。一个简单的例子会有帮助。 –