一、前言

      轉(zhuǎn)置操作在很多算法上都有著廣泛的應(yīng)用,在數(shù)學(xué)上矩陣轉(zhuǎn)置更有著特殊的意義。而在圖像處理上,如果說圖像數(shù)據(jù)本身的轉(zhuǎn)置,除了顯示外,本身并無特殊含義,但是在某些情況下,確能有效的提高算法效率,比如很多行列可分離的算法,在很多情況下,行和列方向的算法邏輯隨相同,但是由于多方面原因(比如Cache miss, 優(yōu)化水平等)行列處理時(shí)間還是由很大的差異的,這個(gè)時(shí)候如果轉(zhuǎn)置的耗時(shí)和處理時(shí)間相比所占比例甚小,則可以考慮在進(jìn)行耗時(shí)處理前先轉(zhuǎn)置數(shù)據(jù),然后調(diào)用不耗時(shí)的方向的算法,處理完后再次進(jìn)行轉(zhuǎn)置。因此,一個(gè)高效的圖像轉(zhuǎn)置算法的設(shè)計(jì)時(shí)非常有必要的。

二、目前的狀況

     沒怎么搜集這方面的資料,不過在百度上看到的優(yōu)化的帖子也有幾篇:

     1、利用SSE優(yōu)化圖像轉(zhuǎn)置      這篇文章講到了SSE優(yōu)化轉(zhuǎn)置操作,講的很簡單,我只是稍微看了下他的代碼,他似乎處理的不是普通的8位圖像,而是16位的,反正我是沒有看懂,并且他的提供比較的C代碼本身寫法就完全沒有考慮到C語言自身的優(yōu)化,因此最后提出SSE代碼比C快5倍說服力就大為打折扣,不過他這里可以值得學(xué)習(xí)的地方就是這個(gè)轉(zhuǎn)置支持In-Place操作,就是Src和Dest可以相同。

     2、圖像轉(zhuǎn)置的Neon優(yōu)化代碼  Neon的代碼,沒看懂,不過后面說10倍左右的提速,其實(shí)也要看原始的C代碼是怎么寫的了,不過原文也明確的說,只支持RGBA 32位的圖,顯然作者也避而不談灰度或者24位的圖,當(dāng)然這于手機(jī)端似乎沒有24位的概念有關(guān)。

網(wǎng)友評(píng)論