2013-05-21 143 views
0

我使用OpenCV中的輸入圖像轉換爲灰度圖像的SURF功能。SURF和OpenSURF彩色圖像

cvtColor(object, object, CV_RGB2GRAY); 

當我瀏覽OpenSURF的文檔時,我意識到它不是灰度。

我的困惑是,我們可以將SURF應用於任何圖像格式(YUV,HSV,RGB),或者我們必須改變和修改程序來實現這一點?

回答

1

大多數特徵檢測器都在灰度級上工作,因爲它們分析圖像補丁中邊緣的圖案。您可以在任何單色通道上使用您提及的顏色格式運行SURF,即可以在YUV圖像上運行Y,U或V圖像,也可以在HSV圖像上運行H,S或V.不確定OpenSURF如何處理這個問題,但他們必須在內部使用灰度圖像。

+0

此外:OpenSURF在計算完成後立即執行灰度轉換積分圖像(檢測器需要)。請參閱'IplImage * Integral(IplImage * source)'執行'IplImage * img = getGray(source);'。 – deltheil

0

像OpenCV一樣,如果您向OpenSURF發送的圖像不是單通道,則會調用cvtColor(src, dst, CV_BGR2GRAY)。如果您通過YUV,HSV,Lab等任意一個3通道圖像,事情會變得非常糟糕,因爲圖像將會應用不適當的顏色轉換。

+0

因此,如果我使用YUV,例如我不得不在這種情況下通過Y通道,否則它也會出錯。 – rish

+0

如果你只是通過Y通道(即單通道圖像),它會很好(不會進行顏色轉換)。順便說一句,你可以使用cv :: split()將3通道YUV圖像轉換爲包含3個單通道圖像的矢量。 – Bull