日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

仿射变换的原理

發布時間:2024/7/23 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 仿射变换的原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在條形碼識別軟件中有圖像預覽的功能。有時預覽的圖像需要進行轉置(旋轉180度或者90度)、縮放、鏡像(左右反轉)等操作。OpenCV提供了相應的函數進行以上操作。例如:?
轉置:cv::WarpAffine()?
縮放:cv::resize()?
鏡像:cv::remap()?
如果同時要轉置,縮放和鏡像,就需要進行三次圖像運算。其實以上三個操作都是同一類型的變化,稱作仿射變化。可以把這3次圖像運算合并成一次,從而優化運算時間。如何合并這三次運算,需要從仿射變換的原理說起。

舉個例子,我們需要對以下圖像(藍色)順時針旋轉90度(橙色),可以這么做:假設原來的圖像寬w高h?


(1) 創建寬h高w內存區域存放新圖像;?
(2) 逐一把原圖像中的像素(x0,y0)搬到新圖像的對應像素(x1,y1)?
例如原圖像的左上角點①(0,0)被搬到新圖像的右上角(h,0);?
右上角點②(w,0)被搬到新圖像的右下角(h,w);?
右下角③(w, h)被搬到新圖像的左下角(0,w)?
以此類推,可以發現(x0, y0)和(x1, y1)之間存在以下規律:?
X1=-y0+h; y1=x0;
對于其他各種幾何變換,平移、縮放、鏡像等,我們都可以用類似的方法進行運算。因此可以把上式寫成通用的形式:

x1=ax*x0+bx*y0+cx

y1=ay*x0+by*y0+cy

在順時針旋轉90度的例子中,

?ax=0,bx=1,cx=0;ay=?1,by=0,cy=w?

更一般的,我們可以把上面寫成矩陣形式:


?

(x1y1)=(axaybxbycxcy)×???x0y01???
或者齊次形式。
???x1y11???=???axay0bxby0cxcy1???×???x0y01???


我們把矩陣MT=???axay0bxby0cxcy1???稱作仿射矩陣。


轉載自: http://blog.csdn.net/bytekiller/article/details/47803753


總結

以上是生活随笔為你收集整理的仿射变换的原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。