2014-07-23 54 views
3

我想在MATLAB中將圖像從RGB空間轉換爲HSV並使用Hue。在轉換RGB 2 HSV中的塊僞像

但是,當我使用'rgb2hsv'或其他代碼,我在互聯網上發現Hue組件具有塊僞影。下面顯示了原始圖像和塊製品版本的示例。

原始

blah

色調

blah

+0

[1]:http://i.stack.imgur.com/Lw8rj.jpg [2]:http://i.stack.imgur.com/x4FiI。jpg –

+0

'rgb2hsv'不能對此負責,但是也許你的''其他代碼'可能是? – Divakar

+0

'rgb2hsv'絕對不負責。另外,色調被編碼爲0到360度之間的角度,但在[0,1]之間被歸一化。你是否試圖直接使用它作爲結果?如果你是,那麼這很可能是你得到塊狀結果的原因。直接使用色相與RGB空間中的強度沒有相同的解釋。對於我們重現您的錯誤,請放置您嘗試產生這個塊狀結果的所有代碼。 – rayryeng

回答

3

我能夠重現你的錯誤。對於那些你們誰是閱讀,並希望複製在自己的結束這個形象,你可以這樣做:

im = imread('http://i.stack.imgur.com/Lw8rj.jpg'); 
im2 = rgb2hsv(im); 
imshow(im2(:,:,1)); 

此代碼將產生輸出圖像的OP告訴我們。


您直接使用Hue並顯示結果。您應該注意,Hue 不具有與根據RGB顏色空間的灰度強度相同的解釋

您應該參考definition of the Hue。色調基本上是指人類如何感知顏色或人類視覺系統所解釋的主要顏色。這是沿着HSV錐體的圓形開口形成的角度。 RGB顏色空間可以表示爲所有顏色被限制在一個立方體中。這是一個3D空間,每個軸表示每個原色的顏色(紅色,綠色,藍色),這些顏色有助於所討論的顏色像素。將像素轉換爲HSV(也稱爲色調 - 飽和度值),將RGB色彩空間轉換爲錐形。圓錐可以通過圓錐原點和向上移動的距離(值),圓錐中心向外移動的距離(飽和度)以及圓錐圓周開口(色相)的角度進行參數化。

這是HSV錐體的樣子:

blah

來源:Wikipedia

色相的占主導地位的/感知顏色的角度之間的映射如下所示:

blah

來源:Wikipedia

正如你所看到的,每個角度表示主色是什麼。在MATLAB中,這個比例在[0,1]之間。因此,您不能正確顯示色調。您正在使用Hue通道將該結果直接顯示爲灰度圖像。然而,如果你掃描了這個圖像中的值,並將每個結果乘以360,然後參考上面我已經顯示的Hue顏色表,這將給你一個表示什麼顏色的主導顏色在這些像素位置會是。


這個故事的寓意是你不能簡單地使用色相和可視化結果。轉換爲HSV當然可以用作預處理步驟,但在發生任何富有成效之前,您應該在該域中進行更多處理。正如您在輸出圖像中看到的那樣,直接將它看作圖像是無用的。你可以做的是使用一個顏色映射圖,它可以像我在Hue查找映射中展示的那樣,在色相和顏色之間推導出一種關係,然後可以對圖像進行顏色處理,但實際上這隻能用作觀察工具。


編輯:2014年7月23日

作爲獎勵,我們所能做的就是顯示的色調作爲初始灰度圖像,然後應用適當的顏色映射到圖像,所以我們實際上可以想像什麼每個位置的每種主色都是這樣。幸運的是,有一個內置的HSV顏色圖,與我上面顯示的顏色查找圖非常相似。您只需在顯示色相通道後執行colormap hsv即可。我們可以並排側做顯示原始圖像,這colourized圖片:

im = imread('http://i.stack.imgur.com/Lw8rj.jpg'); 
im2 = rgb2hsv(im); 
subplot(1,2,1); 
imshow(im); title('Original Image'); 
subplot(1,2,2); 
imshow(im2(:,:,1)); title('Hue channel - Colour coded'); 
colormap hsv; 

這是圖的樣子:

enter image description here

這個數字可能有點混亂。它將天空標記爲主色藍色。雖然這是令人困惑的,但這確實是有道理的。在晴朗的一天,天空是藍色的,但這張照片中天空呈灰色的原因可能是由於飽和度和價值的貢獻。飽和度指的是顏色的「純」程度。例如,真紅(RGB = [255,0,0])表示飽和度爲100%。價值是指顏色的強度。基本上,它指的是顏色有多深或多淺。因此,飽和度和數值很可能在此處起作用,這會使顏色顯得灰色。我們在圖像中看到的少量顏色是我們期望我們如何感知顏色的。例如,噴氣機側面的紅色被認爲是紅色,並且綠色頭盔被認爲是綠色的。噴氣機載體的下半部分(顯然)也被認爲是紅色的。這我不能向你解釋,但飽和度和價值是有助於混合,使整體輸出顏色是灰色左右。

您在圖像中看到的塊狀很可能是由於JPEG量化。 JPEG的工作原理非常好,因爲我們不會感覺到圖像平滑區域的任何不連續性,但是圖像編碼的方式是它以這種方式重建它......在一種方法中,這將大大減少保存圖像,但讓它看起來像是在看RAW圖像一樣具有視覺吸引力。


這裏這個故事的寓意是,你當然可以用色相爲您處理鏈的一部分,但它不是整個圖片。您可能需要使用飽和度或值(或甚至兩者)來幫助您辨別顏色。

+1

這真是令人驚訝!我想我從來沒有喝醉了,只顯示色相部分:) +1的調查結果和瘋狂的圖! – Divakar

+1

@Divakar - 謝謝!我非常熟悉的HSV色彩空間,所以我決定仔細研究一下,看看OP如何提供這個圖像。事實證明,他使用不當。 – rayryeng

+0

嗨。感謝回覆我。在問題我說,我需要色相組件爲我的工作。其實我需要這個進行下一個處理來提取彩色圖像的邊緣。我知道繪製色相組件並不合適。但我的問題是爲什麼在矩形塊中圖像的色調是恆定的? –