我最近開始使用Intel Performance Primitives (IPP)進行圖像處理。對於那些沒有聽說過IPP的人,可以將IPP看作是MKL的模擬圖像處理代替線性代數。在英特爾IPP上使用OpenCV Mat圖像?
我已經在OpenCV中實現了一個稍微複雜的視覺系統,並且我想換出一些OpenCV例程(例如卷積和FFT)以實現更快的IPP例程。我的OpenCV代碼始終使用cv::Mat
圖像數據結構。但是,根據IPP代碼示例,似乎IPP更喜歡CIppiImage
數據結構。
我的系統在OpenCV中做了幾次圖像轉換,然後我想在IPP中做幾件事情,然後在OpenCV中做更多的工作。下面就來讓OpenCV的一個簡單的方式和IPP很好地一起玩:
cv::Mat = load original image
use OpenCV to do some work on cv::Mat
write cv::Mat to file
CIppiImage = read cv::Mat from file //for IPP
use IPP to do some work on CIppiImage
write CIppiImage to file
cv::Mat = read CIppiImage from file
use OpenCV to do more work on cv::Mat
write final image to file
然而,這是一種單調乏味,和讀/寫大概文件增加了整體的執行時間。
我試圖使它更加無縫地在圖像處理程序中交替使用OpenCV和IPP。這裏有兩件事是可以解決這個問題:
- 有一個班輪將轉換
cv::Mat
到CIppiImage
,反之亦然? - 我對
cv::Mat
的實現細節非常熟悉,但我對CIppiImage
瞭解不多。cv::Mat
和CIppiImage
是否具有相同的數據佈局?如果是這樣,我可以做類似於下面的演員的東西嗎?CIppiImage cimg = (CIppiImage)(&myMat.data[0])
?