天天看點

圖像轉置的Neon優化代碼圖像轉置的Neon優化代碼

圖像轉置和矩陣轉置是一樣的,其公式為:

效果如下:

原圖:

圖像轉置的Neon優化代碼圖像轉置的Neon優化代碼

結果圖:

圖像轉置的Neon優化代碼圖像轉置的Neon優化代碼

先做圖像轉置後,再實作90度/270度的旋轉相對容易,

如圖像旋轉90度,就隻需要再水準翻轉一下:

旋轉結果圖:

圖像轉置的Neon優化代碼圖像轉置的Neon優化代碼

圖像轉置的優化思路是:

1、将圖像分割成一系列小矩陣。

分成的小矩陣當然是越大越好,但在矩陣變大時,彙編代碼的複雜度變高,且寄存器如果使用完了也非常難處理,這裡選的是4x4的矩陣。

2、每個小矩陣的宏觀位置轉置。

3、實作每個小矩陣的内部轉置。

必須把矩陣圖和寄存器向量的關系圖畫清,然後推演一番。

neon指令vtrn是解決轉置問題的核心。

圖像轉置的Neon優化代碼圖像轉置的Neon優化代碼

4、邊角處理

寫慣了基于一行的neon優化,到這步很容易犯錯,一定要記得這裡是二維的neon優化,邊角料是兩條邊。

圖像轉置的Neon優化代碼圖像轉置的Neon優化代碼

該代碼僅适用于32位(rgba)圖像的轉置。

大約10倍左右性能提升,資料遺失,不補。

繼續閱讀