平面映像的快速旋轉

來源:互聯網
上載者:User

原問題:
http://community.csdn.net/Expert/topic/3757/3757859.xml?temp=5.727786E-02
對於一個點旋轉一個角度alpha的話,乘以一個矩陣就可以了,但是對於一整幅圖片來說,如果每個點都乘以矩陣,速度太慢了,有沒有快一點的演算法,來旋轉整個圖片?

基本知識
旋轉一個映像,如果是從原圖上象素點到靶心圖表像的象素點進行計算的話不好,會導致靶心圖表片上出現空洞
所以一般的辦法是計算旋轉後的圖片上的象素點,在原圖上的位置
由於旋轉並不能保證原圖和靶心圖表片上的象素位置一一完全對應,所以一般的時候是需要進行差值進行光滑處理的,一個光滑處理必然是涉及到乘法運算,或者雙線性或者三次差值計算。
但是在對圖片品質要求不高,對速度要求比較高的情況下,有辦法進行加速最佳化處理

解決方案
我們知道對於一個二維的位元影像圖片,如果要把它旋轉一個角度,基本演算法就是:
x1,y1對應旋轉後點的公式:
     x0=       x1*cosa + y1*sina + num1;
     y0=  -x1*sina  + y1*cosa + num2;
那麼一條水平線上的點 (x1+dx), y1 對應的點x0', y0'就是
     x0' = x0 + dx*cosa
     y0' = y0 - dx*sina
對於dx固定的時候, cosa,sina也都是定值了
這樣你在定位了水平線上的一點之後, 就可以順序獲得後面的增量了

同樣對於垂直線上的一點x1, y1+dy對應的點x0'', y0''也有類似的公式
   x0'' = x0 + dy*sina
   y0'' = y0 + dy*cosa
同樣dy和sina,cosa也是固定數值

有了上面這個公式,我們就可以快速的找到靶心圖表片當中一條條水平或者垂直直線,在原圖當中的位置了,新位置只通過簡單的加法己可以確定了,不再需要逐點乘法計算了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.