2015-07-21 3 views
0

Я пытаюсь преобразовать цветное изображение из rgb в hsv (внести изменения), а затем обратно в rgb. В качестве теста я сделал этот код, чтобы проверить, как перейти от rgb к hsv обратно к rgb, но когда я просматриваю изображение, он просто отображается как черный. Что мне не хватает?Преобразование изображения с использованием matlab/octave из 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

Как вы можете запустить 'rgb2hsv' без пакета изображений в Octave? Я не могу ... – kkuilla

ответ

2

double изображения имеют значения в диапазоне [0, 1] (float), uint8 изображений в диапазоне [0,2^8-1] (только целые числа). Используя uint8, вы просто конвертируете свои значения между 0 и 1 в 0 и 1, которые являются черными или почти черными.

Используйте im2uint8 или im2double для преобразования изображений, эти функции автоматически масштабируют ваши значения до соответствующего диапазона.

+0

спасибо, но для этого требуется набор инструментов для изображений/изображений, к которым у меня не будет доступа. Есть ли другой способ? –

+0

@RickT Почему бы вам не сделать это самостоятельно ...? Просто умножьте на 255. Или попробуйте 'imshow (f_to_image, []);'. – kkuilla

+0

@kkuilla Я бы, но я не уверен, что умножить. Я понимаю, что RGB - 0-255, но если HSV является десятичной и множится на 1-255, я по-прежнему остаюсь с числом и десятичной точкой. Простой пример поможет. –