OpenCV實現(xiàn)圖像拼接案例
一、penCV圖像特征采集
特征提取:
一幅圖中總存在著一些獨特的像素點,這些點我們可以認為就是這幅圖的特征,成為特征點。
計算機視覺領(lǐng)域特征提?。?/strong>
獲取一幅圖中存在著一些獨特的像素點。
需要解決問題:
- 1、提取圖片中的特征點
- 2、解決尺度不變性問題,不同大小的圖片獲取到的特征是一樣的。
- 3、提取到的特征點要穩(wěn)定,能被精確定位。
二、OpenCV 特征提取算法
特征提取算法:
三、OpenCV特征提取
結(jié)果:提取到的特征很粗糙,不是很精確的特征點,導致效果很差。
要求:去粗取精,獲取優(yōu)秀的匹配點。
四、OpenCV特征取精
取一幅圖像中的一個SIFT關(guān)鍵點,并找出其與另一幅圖像中歐式距離最近的前兩個關(guān)鍵點,在這兩個關(guān)鍵點中,如果最近的距離除以次近的距離得到的比率ratio少于某個閾值T,則接受這一對匹配點。
五、OpenCV透視轉(zhuǎn)換
透視變換是按照物體成像投影規(guī)律進行變換,即將物體重新投影到新的成像平面。透視變換常用于機器人視覺導航研究中,由于相機視場與地面存在傾斜角使得物體成像產(chǎn)生畸變,通常通過透視變換實現(xiàn)對物體圖像的校正。
使用cv::warpPerspective()進行透視變換
void cv::warpPerspective(
cv::InputArray src, // 輸入圖像
cv::OutputArray dst, // 輸出圖像
cv::InputArray M, // 3x3 變換矩陣
cv::Size dsize, // 目標圖像大小
int flags = cv::INTER_LINEAR, // 插值方法
int borderMode = cv::BORDER_CONSTANT, // 外推方法
const cv::Scalar& borderValue = cv::Scalar() //常量邊界時使用
);
透視矩陣 :
獲取特征矩陣:
a. 根據(jù)圖像的4個頂點來獲取特征矩陣
cv::Mat cv::getPerspectiveTransform( // 返回3x3透視變換矩陣
const cv::Point2f* src, // 源圖像四個頂點坐標(點數(shù)組)
const cv::Point2f* dst // 目標圖像上四個頂點的坐標(點數(shù)組)
);
b. 函數(shù)來計算透視矩陣H(3*3)
findHomography (
InputArray srcPoints,//源平面中點的坐標矩陣.vector<Point2f>類型
InputArray dstPoints,//目標平面中點的坐標矩陣,vector<Point2f>類型
int method = 0,
double ransacReprojThreshold = 3,
OutputArray mask = noArray(),
const int maxIters = 2000,
const double confidence = 0.995
)
六、OpenCV圖像配準融合與圖像反投影優(yōu)化
圖片拼接流程思想:
到此這篇關(guān)于OpenCV實現(xiàn)圖像拼接案例的文章就介紹到這了,更多相關(guān)OpenCV 圖像拼接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言 structural body結(jié)構(gòu)體詳解用法
C 數(shù)組允許定義可存儲相同類型數(shù)據(jù)項的變量,結(jié)構(gòu)是 C 編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許您存儲不同類型的數(shù)據(jù)項,結(jié)構(gòu)用于表示一條記錄,假設(shè)您想要跟蹤圖書館中書本的動態(tài),您可能需要跟蹤每本書的下列屬性2021-10-10c/c++拷貝構(gòu)造函數(shù)和關(guān)鍵字explicit詳解
這篇文章主要介紹了c/c++拷貝構(gòu)造函數(shù)和關(guān)鍵字explicit的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08