2015-12-03 99 views
-1

是否有任何方法將圖像的色調,飽和度和值量化爲分箱?
我想將色調量化爲20個分檔,飽和度和值分別爲8個分檔。Matlab將圖像的色調和飽和度量化爲分辨率

之後,我想計算每個分箱中色相的數量,以及飽和度和數值。

+1

你的意思是像[histcounts](http://www.mathworks.com/help/matlab/ref/histcounts.html)? – beaker

+0

使用'rgb2hsv'後,MATLAB中HSV的動態範圍跨越所有通道的[0,1]'。使用它並將每個通道劃分爲正確數量的分箱,然後使用'countcounts'作爲建議的燒杯。 – rayryeng

+0

嗨,燒杯,嗨雷林,請問在使用[N,邊緣]後,什麼是N和邊是什麼? N是特定倉中的色相計數的數量?但是垃圾箱邊緣的用途是什麼? –

回答

1

可以使用rgb2hsv

hsv_im = rgb2hsv(rgb_im); 

現在,您可以定義在HSV空間的顏色表,表示您的量化箱中心的圖像轉換成hsv

dh = 1/20; %// bin for Hue 
dsv = 1/8; %// bin for saturation/value 
[Q{1:3}] = meshgrid((dh/2):dh:1, (dsv/2):dsv:1, (dsv/2):dsv:1); 
Q = [Q{1}(:) Q{2}(:) Q{3}(:)]; %// quant color map 

一旦你的顏色貼圖你可以使用rgb2ind根據Q量化圖像:

q_img = rgb2ind(hsv_im, Q, 'nodither'); 
+0

對不起,爲什麼你需要把dh和dsv除以2? ((dh/2):dh:1,(dsv/2):dsv:1,(dsv/2):dsv:1)。 –

+0

@StephanieWong因爲你想的垃圾箱中心 – Shai

+0

喜曬,我收到此錯誤: 錯誤rgb2ind> parse_inputs(線146) 如果任何(M(:)<0) 錯誤rgb2ind(49行) [RGB,m,dith] = parse_inputs(varargin {:}); SVMTrain錯誤(第66行) quantizedImg = rgb2ind(imgHsv,Q,'nodither'); –