在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenCV筑基之圖像的仿射變換方法總結(jié)

OpenCV學(xué)堂 ? 來源:Java與Android技術(shù)棧 ? 2024-03-19 11:11 ? 次閱讀

1. 幾何變換

圖像的幾何變換是指將一幅圖像中的坐標(biāo)位置映射到另一幅圖像中的新坐標(biāo)位置,其實(shí)質(zhì)是改變像素的空間位置,估算新空間位置上的像素值。幾何變換不改變圖像的像素值,只是在圖像平面上進(jìn)行像素的重新安排。

以下是常用的幾種幾何變換:

旋轉(zhuǎn):將圖像旋轉(zhuǎn)指定角度。

縮放:按縮放因子調(diào)整圖像大小,使其變大或變小。

平移:將圖像從當(dāng)前位置移動到新位置。

錯切:沿特定軸傾斜圖像。

仿射變換:一個更廣泛的類別,包括單個變換中的縮放、旋轉(zhuǎn)、錯切和平移。

透視變換:此變換模擬 3D 空間中的透視效果,允許進(jìn)行更復(fù)雜的操作,例如校正由攝像機(jī)角度引起的扭曲。

幾何變換通常使用數(shù)學(xué)函數(shù)和變換矩陣來實(shí)現(xiàn)。這些矩陣定義了原始圖像中的每個像素如何映射到轉(zhuǎn)換圖像中的新位置。

2. 仿射變換

2.1 仿射變換

圖像處理中的仿射變換是指對圖像進(jìn)行一次線性變換和平移,將其映射到另一個圖像空間的過程。仿射變換可以保持圖像的“平直性”,即直線經(jīng)過仿射變換后依然為直線,平行線經(jīng)過仿射變換后依然為平行線。

通常,使用 2x3 大小數(shù)組 M 來進(jìn)行仿射變換。數(shù)組由兩個矩陣 A、B 組成,其中矩陣 A(大小為2x2)用于矩陣乘法,矩陣 B(大小為2x1)用于向量加法。

wKgaomX5AsOAfjBZAABsFs4rUq4912.jpg

其中:

wKgaomX5AqeAO0T8AABQx1G2nA0780.jpg

由于縮放和旋轉(zhuǎn)是通過矩陣乘法來實(shí)現(xiàn),平移是通過矩陣加法來實(shí)現(xiàn)的,將這幾個操作都用一個矩陣實(shí)現(xiàn)所以構(gòu)造出上面的 2x3 矩陣 M。

仿射變換是從二維坐標(biāo)到二維坐標(biāo)之間的線性變換,且為了保持二維圖像的“平直性”和“平行性”。我們需要引入齊次坐標(biāo)的概念,最終得到的齊次坐標(biāo)矩陣表示形式為:

wKgaomX5AtyATZyWAAAT3sWPxmg170.jpg

2.2 齊次坐標(biāo)

在數(shù)學(xué)里,齊次坐標(biāo)(homogeneous coordinates),或投影坐標(biāo)(projective coordinates)是指一個用于投影幾何里的坐標(biāo)系統(tǒng),如同用于歐氏幾何里的笛卡兒坐標(biāo)一般。齊次坐標(biāo)可讓包括無窮遠(yuǎn)點(diǎn)的點(diǎn)坐標(biāo)以有限坐標(biāo)表示。使用齊次坐標(biāo)的公式通常會比用笛卡兒坐標(biāo)表示更為簡單,且更為對稱。

引入齊次坐標(biāo)的目的是為了更好的表示無限遠(yuǎn)(infinity)的坐標(biāo)的概念,在歐式空間中,無限大或者無限小的坐標(biāo)的并不存在,不能用數(shù)值表示。數(shù)學(xué)家 August Ferdinand M?bius(1) 提出了齊次坐標(biāo)系,采用 N+1 個量來表示 N 維坐標(biāo)。

例如,在二維齊次坐標(biāo)系中,我們引入一個量 w,將一個二維點(diǎn) (x,y) 表示為 (X,Y,w) 的形式,其轉(zhuǎn)換關(guān)系為

wKgaomX5AvGAVG62AAAJsCzn6j4959.jpg

其中,w 可以為任意值。

在笛卡爾坐標(biāo)系中以(1,2)為例,在齊次坐標(biāo)系中可以用(1,2,1)表示,也可以用(2,4,2)表示,還可以用 (4,8,4),(8,16,8)...表示,即 (k,2k,k),k∈ R 這些點(diǎn)都映射到歐式空間中的一點(diǎn),即這些點(diǎn)具有 尺度不變性(Scale Invariant),是“齊性的”(同族的),所以稱之為齊次坐標(biāo)

“齊次坐標(biāo)表示是計(jì)算機(jī)圖形學(xué)的重要手段之一,它既能夠用來明確區(qū)分向量和點(diǎn),同時也更易用于進(jìn)行仿射(線性)幾何變換。”——出自《計(jì)算機(jī)圖形學(xué)(OpenGL版)》的作者 F.S. Hill Jr.

通過齊次坐標(biāo)還可以證明兩條平行線可以相交,非常有意思。

3. 仿射變換中常見的變換形式

OpenCV 提供了 warpAffine() 函數(shù)實(shí)現(xiàn)仿射變換。它可以用于實(shí)現(xiàn)各種圖像幾何變換,例如平移、縮放、旋轉(zhuǎn)、錯切等。

voidwarpAffine(InputArraysrc,OutputArraydst,
InputArrayM,Sizedsize,
intflags=INTER_LINEAR,
intborderMode=BORDER_CONSTANT,
constScalar&borderValue=Scalar());

第一個參數(shù) src: 輸入圖像,可以是單通道或多通道圖像。

第二個參數(shù) dst: 輸出圖像,與輸入圖像同類型和大小。

第三個參數(shù) M: 仿射變換矩陣,2x3 的浮點(diǎn)數(shù)矩陣。

第四個參數(shù) dsize: 輸出圖像的大小。

第五個參數(shù) flags: 插值方式,默認(rèn)值為 INTER_LINEAR,表示使用雙線性插值。

第六個參數(shù) borderMode: 邊界模式,默認(rèn)值為BORDER_CONSTANT,表示使用常量值填充邊界。

第七個參數(shù) borderValue: 邊界填充值,默認(rèn)值為0。

3.1 平移

圖像平移的公式:

wKgaomX5AweAeHwDAAAU0bEeseE553.jpg

下面的代碼,分別實(shí)現(xiàn)了對圖像沿著 x 軸、y 軸進(jìn)行平移

#include
#include
#include

usingnamespacestd;
usingnamespacecv;

intmain(){
Matsrc=imread(".../girl.jpg");
imshow("src",src);

intwidth=src.cols;
intheight=src.rows;

Matdst;
Matwarp_matrix=(cv::Mat_(2,3)<<1,?0,?400,?0,?1,?0);
????warpAffine(src,?dst,?warp_matrix,?Size(width,?height),?INTER_LINEAR);
????imshow("Shift?along?X-axis",?dst);

????warp_matrix?=?(cv::Mat_(2,3)<<1,?0,?0,?0,?1,?400);
????cv::warpAffine(src,?dst,?warp_matrix,?Size(width,?height),?INTER_LINEAR);
????cv::imshow("Shift?along?Y-axis",?dst);

????waitKey(0);
????return?0;
}
e6a718e0-e59d-11ee-a297-92fbcf53809c.jpg

平移變換.png

3.2 縮放

圖像縮放的公式:

wKgZomX5Ax-AU_JvAAATItRNEzQ539.jpg

下面的代碼,分別實(shí)現(xiàn)了對圖像進(jìn)行0.75和1.25倍的縮放。

#include
#include
#include

usingnamespacestd;
usingnamespacecv;

intmain(){
Matsrc=imread(".../girl.jpg");
imshow("src",src);

intwidth=src.cols;
intheight=src.rows;

//設(shè)置縮放比例
floatscale=0.75;

Matdst;
Matwarp_matrix=(cv::Mat_(2,3)<(2,3)<
e6cd8426-e59d-11ee-a297-92fbcf53809c.jpg

縮放變換.png

3.3 旋轉(zhuǎn)

圖像旋轉(zhuǎn)的公式:

wKgZomX5AzmAcYaOAAAbuzJJZkA861.jpg

OpenCV 提供了更為簡潔的 getRotationMatrix2D() 函數(shù)用于生成一個 2x3 的仿射變換矩陣,該矩陣可以用于對圖像進(jìn)行旋轉(zhuǎn)操作。

MatgetRotationMatrix2D(Point2fcenter,doubleangle,doublescale);

第一個參數(shù) center: 圖像旋轉(zhuǎn)中心,以像素為單位。

第二個參數(shù) angle: 旋轉(zhuǎn)角度,以度為單位。逆時針方向?yàn)檎?/p>

第三個參數(shù) scale: 旋轉(zhuǎn)后的圖像縮放比例。

下面的代碼,展示了以圖像的中心作為旋轉(zhuǎn)中心,并且逆時針方向旋轉(zhuǎn)45度。

#include
#include
#include

usingnamespacestd;
usingnamespacecv;

intmain(){
Matsrc=imread(".../girl.jpg");
imshow("src",src);

intwidth=src.cols;
intheight=src.rows;

Pointcenter=Point(width/2,height/2);
doubleangle=45;
doublescale=1.0;
Matdst;
Matwarp_matrix=getRotationMatrix2D(center,angle,scale);
warpAffine(src,dst,warp_matrix,Size(width,height),INTER_LINEAR);
imshow("Rotate",dst);

waitKey(0);
return0;
}
e6e7b5f8-e59d-11ee-a297-92fbcf53809c.jpg

旋轉(zhuǎn)變換.png

3.4 錯切

圖像錯切的公式:

wKgaomX5A1WABBXiAAA6SnIS4IU545.jpg

下面的例子,展示圖像的錯切。

#include
#include
#include

usingnamespacestd;
usingnamespacecv;

intmain(){
Matsrc=imread(".../girl.jpg");
imshow("src",src);

intwidth=src.cols;
intheight=src.rows;

floata=0.25;
floatb=0.5;

Matdst;
Matwarp_matrix=(cv::Mat_(2,3)<<1,?a,?0,?b,?1,?0);
????warpAffine(src,?dst,?warp_matrix,?Size(width,?height),?INTER_LINEAR);
????imshow("Shearing",?dst);

????waitKey(0);
????return?0;
}
e7135f46-e59d-11ee-a297-92fbcf53809c.jpg

錯切變換.png

4. 總結(jié)

圖像仿射變換是一種簡單而有效的圖像幾何變換方法,在圖像處理和計(jì)算機(jī)視覺領(lǐng)域有著廣泛的應(yīng)用。它可以用于圖像矯正、增強(qiáng)、配準(zhǔn)、合成、目標(biāo)識別和跟蹤等多種任務(wù)。




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 圖像處理
    +關(guān)注

    關(guān)注

    27

    文章

    1300

    瀏覽量

    56894
  • 計(jì)算機(jī)視覺
    +關(guān)注

    關(guān)注

    8

    文章

    1700

    瀏覽量

    46129
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    635

    瀏覽量

    41556

原文標(biāo)題:OpenCV筑基之圖像的仿射變換

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Labview 竟然沒有仿變換函數(shù)???

    是這樣的 ,最近我要對一個二維數(shù)組(元素浮點(diǎn)型的XY坐標(biāo))。 結(jié)果不論是谷歌 還是其他搜索引擎 都無法在找到 NI里面的仿變換函數(shù)。這也太扯了吧。。。NI如此牛X的公司 為啥會沒有這個函數(shù)呢?是我沒找到嗎? 還是真的沒有。。。
    發(fā)表于 01-23 14:55

    紅外對方法+Pulse Sensor方法總結(jié)

    紅外對方法+Pulse Sensor方法總結(jié)剛開始用的紅外對做的:功能://硬件組成://MSP430G2553單片機(jī)+DS18B20溫
    發(fā)表于 11-29 06:16

    求助,算能的sdk仿變換不能設(shè)置填充方式嗎?

    我想讓仿變換后的圖片的空白區(qū)域填充為黑色,但是bmcv_image_warp_affine接口沒有相關(guān)設(shè)置,并且它的填充方式像是重復(fù)最后一個元素
    發(fā)表于 09-18 06:23

    使用仿不變特征的遙感圖像自動配準(zhǔn)

    提出一種仿不變特征的構(gòu)造方法對航空圖像序列進(jìn)行全自動配準(zhǔn)。仿不變特征基于
    發(fā)表于 04-03 08:41 ?27次下載

    一種多傳感器遙感圖像的配準(zhǔn)方法

    提出了一種對多傳感器遙感圖像進(jìn)行配準(zhǔn)的新方法. 應(yīng)用數(shù)學(xué)形態(tài)學(xué)的方法提取源圖像的結(jié)構(gòu)特征,并在此基礎(chǔ)上選擇圖像的相關(guān)配準(zhǔn)點(diǎn). 利用
    發(fā)表于 07-13 09:24 ?16次下載

    基于廣義典型相關(guān)分析的仿不變特征提取方法

    基于廣義典型相關(guān)分析的仿不變特征提取方法:該文結(jié)合廣義典型相關(guān)分析(GCCA)理論,提出了一種新的圖像仿
    發(fā)表于 10-29 12:52 ?17次下載

    基于角點(diǎn)的紅外與可見光圖像自動配準(zhǔn)方法

    基于角點(diǎn)的紅外與可見光圖像自動配準(zhǔn)方法摘要:針對紅外圖像與可見光圖像的自動配準(zhǔn)問題,提出了一種基于圖像角點(diǎn)特征以及
    發(fā)表于 05-12 09:11 ?29次下載

    基于仿變換模型的圖像跟蹤系統(tǒng)的實(shí)現(xiàn)

    文中設(shè)計(jì)研制了一種新型的基于仿變換模型的實(shí)時圖像跟蹤系統(tǒng)。本跟蹤系統(tǒng)已經(jīng)通過實(shí)踐檢驗(yàn),能夠穩(wěn)定的、準(zhǔn)確的、快速的跟蹤目標(biāo)。并且系統(tǒng)有很大的升級潛力,除了能夠滿足
    發(fā)表于 08-29 14:54 ?19次下載
    基于<b class='flag-5'>仿</b><b class='flag-5'>射</b><b class='flag-5'>變換</b>模型的<b class='flag-5'>圖像</b>跟蹤系統(tǒng)的實(shí)現(xiàn)

    仿變換綜合示例_《OpenCV3編程入門》書本配套源代碼

    OpenCV3編程入門》書本配套源代碼:仿變換綜合示例
    發(fā)表于 06-06 15:39 ?5次下載

    OpenCV3編程入門-源碼例程全集-仿變換綜合示例

    OpenCV3編程入門-源碼例程全集-仿變換綜合示例,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 09-18 16:55 ?0次下載

    采用仿不變矩的諧振接地系統(tǒng)故障選線方法研究

    采用仿不變矩的諧振接地系統(tǒng)故障選線方法研究_許曄
    發(fā)表于 01-04 16:57 ?0次下載

    仿重投影混合虛實(shí)注冊方法_雍玖

    仿重投影混合虛實(shí)注冊方法_雍玖
    發(fā)表于 03-19 19:04 ?0次下載

    如何利用TI DSP實(shí)現(xiàn)仿扭曲

    醫(yī)療保健和醫(yī)學(xué)研究近年來越來越多地使用醫(yī)學(xué)圖像。這種用法通常涉及三維(3D)數(shù)據(jù)集的可視化,以及準(zhǔn)確地將不同圖像中的信息關(guān)聯(lián)起來用于診斷、治療和基礎(chǔ)科學(xué)。圖像配準(zhǔn)和體繪制操作通常涉及圖像
    發(fā)表于 05-22 09:06 ?2次下載
    如何利用TI DSP實(shí)現(xiàn)<b class='flag-5'>仿</b><b class='flag-5'>射</b>扭曲

    總結(jié)一下OpenCV遍歷圖像的幾種方法

    在圖形處理中,遍歷每個像素點(diǎn)是最基本的功能,是做算法的基礎(chǔ),這篇文章來總結(jié)一下OpenCV遍歷圖像的幾種方法
    的頭像 發(fā)表于 01-18 15:08 ?1769次閱讀

    OpenCV圖像的透視變換

    透視變換是一種非線性變換,它可以將一個二維坐標(biāo)系中的點(diǎn)映射到三維坐標(biāo)系中的點(diǎn),然后再將其投影到另一個二維坐標(biāo)系中的點(diǎn)。透視變換可以改變圖像中的形狀,并可以模擬真實(shí)世界中的透視效果。
    的頭像 發(fā)表于 03-15 09:51 ?1254次閱讀
    <b class='flag-5'>OpenCV</b><b class='flag-5'>筑</b><b class='flag-5'>基</b><b class='flag-5'>之</b><b class='flag-5'>圖像</b>的透視<b class='flag-5'>變換</b>
    主站蜘蛛池模板: 日本三级香港三级人妇99 | 天天夜夜久久 | 亚洲xxx视频| 国产三级日本三级在线播放 | 午夜两性网 | 久久综合久久久 | 久久久免费精品 | 欧美人成绝费网站色www吃脚 | 三级视频在线 | 欧美色图亚洲综合 | 天天干天天射天天插 | 欧美黄色大全 | 五月婷婷色 | 大色综合色综合资源站 | 亚洲第八页 | 日本一卡二卡3卡四卡网站精品 | 日本妈妈4 | 尤物久久99热国产综合 | 亚洲香蕉久久 | 免费看黄色网 | 色视频在线观看 | 永久免费观看午夜视频在线 | 国内自拍 亚洲系列 欧美系列 | 黄色天天影视 | 久久美女精品国产精品亚洲 | 天天干亚洲 | 天堂网. www在线资源 | 日本特级黄色录像 | 一级片免费在线观看视频 | 永久在线免费 | 永久免费看毛片 | 国产无圣光高清一区二区 | 三级网址在线观看 | 久久精品国产6699国产精 | 午夜五月天 | 国产欧美一区二区日本加勒比 | 久久午夜精品视频 | freesexvideo性2| 亚洲欧美一区二区三区另类 | 国产性猛交xx乱 | 天天舔天天干 |