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

北城以北 提交于 2019-12-31 05:43:45

问题


I'm trying to convert a color image from rgb to hsv (make changes) then back to rgb. As a test I made this code just to test how to go from rgb to hsv back to rgb but when I view the image it just shows up as black. What am I missing?

*PS I'm using octave 3.8.1 which works like 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

test code below:

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); 


回答1:


double images have values in range [0,1] (float), uint8 images in range [0,2^8-1] (only integers). Using uint8 you simply convert your values between 0 and 1 to 0 and 1 which is black or nearly black.

Use im2uint8 or im2double to convert images, these functions automatically rescale your values to the appropriate range.



来源:https://stackoverflow.com/questions/31544618/converting-image-using-matlab-octave-from-rgb-to-hsv-back-to-rgb

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!