当前位置:网站首页>【ORB_SLAM2】void Frame::ComputeImageBounds(const cv::Mat &imLeft)
【ORB_SLAM2】void Frame::ComputeImageBounds(const cv::Mat &imLeft)
2022-08-02 01:05:00 【小秋SLAM实战教程】
ComputeImageBounds这个函数的主要目的是获得去畸变后的图像坐标的范围,为后续的网格划分提供边界值,这个函数只会在第一帧图像进来或者内参发生了改变的时候被调用,这里的边界值选取使用了最大覆盖的准则,也就是左上角取小,右下角取大,从而能够覆盖整个去畸变后的图像
void Frame::ComputeImageBounds(const cv::Mat &imLeft)
{
// 如果畸变参数不为0,用OpenCV函数进行畸变矫正
if(mDistCoef.at<float>(0)!=0.0)
{
// 保存矫正前的图像四个边界点坐标: (0,0) (cols,0) (0,rows) (cols,rows)
cv::Mat mat(4,2,CV_32F);
mat.at<float>(0,0)=0.0; //左上
mat.at<float>(0,1)=0.0;
mat.at<float>(1,0)=imLeft.cols; //右上
mat.at<float>(1,1)=0.0;
mat.at<float>(2,0)=0.0; //左下
mat.at<float>(2,1)=imLeft.rows;
mat.at<float>(3,0)=imLeft.cols; //右下
mat.at<float>(3,1)=imLeft.rows;
// Undistort corners
// 和前面校正特征点一样的操作,将这几个边界点作为输入进行校正
mat=mat.reshape(2);
cv::undistortPoints(mat,mat,mK,mDistCoef,cv::Mat(),mK);
mat=mat.reshape(1);
//校正后的四个边界点已经不能够围成一个严格的矩形,因此在这个四边形的外侧加边框作为坐标的边界
mnMinX = min(mat.at<float>(0,0),mat.at<float>(2,0));//左上和左下横坐标最小的
mnMaxX = max(mat.at<float>(1,0),mat.at<float>(3,0));//右上和右下横坐标最大的
mnMinY = min(mat.at<float>(0,1),mat.at<float>(1,1));//左上和右上纵坐标最小的
mnMaxY = max(mat.at<float>(2,1),mat.at<float>(3,1));//左下和右下纵坐标最小的
}
else
{
// 如果畸变参数为0,就直接获得图像边界
mnMinX = 0.0f;
mnMaxX = imLeft.cols;
mnMinY = 0.0f;
mnMaxY = imLeft.rows;
}
}

边栏推荐
猜你喜欢

Reflex WMS中阶系列6:对一个装货重复run pick会有什么后果?

S/4中究竟有多少个模块,你对这些模块了解多少

Flink_CDC construction and simple use

IDEA版Postman插件Restful Fast Request,细节到位,功能好用

feign异常传递的两种方式 fallbackfactory和全局处理 获取服务端自定义异常

GateWay实现负载均衡

管理基础知识21

【CodeTON Round 2 (Div. 1 + Div. 2, Rated, Prizes!)(A~D)】

Pytorch seq2seq model architecture to achieve English translation tasks

期货公司开户实力经纪业务的规模
随机推荐
安全(1)
期货开户手续费加一分是主流
JDBC PreparedStatement 的命名参数实现
datagrip连接mysql数据库
大话西游无法登陆解决
管理基础知识9
Docker安装canal、mysql进行简单测试与实现redis和mysql缓存一致性
去经营企业吧
H5页面打开微信小程序
canal realizes mysql data synchronization
哈希表
dayjs时间处理库的基本使用
dbeaver连接MySQL数据库及错误Connection refusedconnect处理
青蛙跳台阶
Day.js 常用方法
当关注「互联网+」模式的时候,通常仅仅只是在关注「互联网+」模式本身
扫雷小游戏
flask获取post请求参数
Rust P2P网络应用实战-1 P2P网络核心概念及Ping程序
FlinkSQL CDC实现同步oracle数据到mysql