2015-07-21 57 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我還剩下一個數字和一個小數。一個簡單的例子會有幫助。 –