2010-09-30 101 views
0

我正在開發一個用於實時圖像處理的Java簡單(或至少認爲如此)的桌面應用程序。我選擇使用Java媒體框架(JMF)訪問視頻幀。我有一臺PAL相機,並使用EasyCAP視頻轉換器進行數字化。該設備在我的Windows機器上作爲VFW設備可見,允許YUV和24位RGB格式採集(32位不可用)。使用JMF快速實現24位RGB到灰度轉換Java

我已經想出了框架的基礎知識。我正在使用一個javax.media.Processor進行媒體數據控制,並且一開始希望添加一個灰度編解碼器(實現javax.media.Codec)以供進一步呈現。在編解碼器中,我可以訪問各個幀,如javax.media.Buffer對象。

什麼是在Java中進行灰度轉換的最快方法?我想堅持像JAI這樣的標準,因爲我希望能夠使用相同的框架/方法輕鬆地進行進一步的轉換。

我一直在考慮以下至今:

編碼解碼器鏈的開頭24位RGB轉換爲32位RGB增加的編解碼器。比使用java.nio.ByteBuffer將byte []轉換爲int []像素數組以進一步處理使用javax.awt.image過濾器。儘管如此,我已經嘗試使用com.sun.media.codec.video.colorspace.RGBConverter來實現這一點,但沒有成功。

我會很感激任何幫助,希望任何人都已經做到了。

我很感激任何有關整體應用程序體系結構的建議。我的總體目標是在Java中實現光流算法,以便能夠僅使用視覺輸入實時估計攝像機姿態。

回答

0

看看這個圖書館在JH實驗室(http://www.jhlabs.com/ip/filters/index.html)。 它與源代碼一起提供。您可以檢查那裏的實施...具體GrayscaleFilter ..也請在使用前檢查許可證。如果你喜歡它,那麼請給原作者的功勞.. :)

+0

感謝您的回答Favonius。我也許可以複製此過濾器中使用的顏色權重。但在我的情況下,我需要的輸出是8位,而不是24或32。我知道,我忘了在我原來的帖子中提到 - 對不起。 – mmm 2010-10-10 16:25:07