2010-11-24 72 views
5

我已經搜索了幾次,但我沒有得到直接的答案。我有一個我想用離散濾波器進行卷積的矩陣(例如用於邊緣檢測的Sobel算子)。用iPhone上的OpenGL ES以加速的方式執行此操作有可能嗎?在iPhone上使用OpenGL ES調用圖像:可能嗎?

如果是這樣,怎麼樣?如果不是,我還可以使用其他高性能技巧來加速操作嗎?嚮導式ARM組裝操作可以快速完成嗎?最終,我希望在iPhone的ARM處理器上執行儘可能快的卷積。

+0

ES 1.1或2.0? – genpfault 2010-11-24 19:54:00

回答

14

您應該可以在OpenGL ES 2.0下使用可編程着色器來執行此操作。我在iTunes U的課堂視頻中更詳細地描述了OpenGL ES 2.0着色器。

儘管我自己沒有完成圖像卷積,但我還是介紹了一些適用於Mac和iOS的GPU加速圖像處理 here。我提供了一個使用GLSL着色器(基於Apple開發的核心圖像過濾器)的 sample application,該着色器可以從iPhone的相機饋送中進行實時顏色追蹤。

由於我寫了這個,我創建了一個open source framework基於上面的例子,它具有內置的圖像卷積濾波器,範圍從Sobel邊緣檢測到自定義3x3卷積核。這些可以比CPU綁定的實現運行速度快100倍。

但是,如果您要在CPU上執行此操作,則可能可以使用Accelerate framework在iPhone的NEON SIMD單元上運行某些操作。尤其是,FFT運算(通常是圖像卷積濾波器的關鍵組件,或者我聽說過的)可以通過使用Apple在此提供的例程來加速〜4-5倍。