当前位置: 首页 > news >正文

益阳 网站制作维护关键词怎么写

益阳 网站制作维护,关键词怎么写,怎么上传视频到公司网站,网站制作合作操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算畸变矫正和校正变换映射。 该函数计算联合的畸变矫正和校正变换,并以 remap 所需的地图形式表示结果。矫正后的图像看起来像是原…
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

计算畸变矫正和校正变换映射。

该函数计算联合的畸变矫正和校正变换,并以 remap 所需的地图形式表示结果。矫正后的图像看起来像是原始图像,仿佛它是使用 cameraMatrix = newCameraMatrix 和零畸变的相机捕获的一样。对于单目相机,newCameraMatrix 通常等于 cameraMatrix,或者可以通过 getOptimalNewCameraMatrix 计算以更好地控制缩放。对于立体相机,newCameraMatrix 通常设置为由 stereoRectify 计算得到的 P1 或 P2。

此外,这个新的相机在坐标空间中的方向根据 R 不同。例如,这有助于对齐立体相机的两个头,使得两幅图像上的极线变得水平并且具有相同的 y 坐标(对于水平对齐的立体相机而言)。

该函数实际上构建了用于 remap 的逆映射算法的地图。也就是说,对于目标图像(即矫正和校正后的图像)中的每个像素 (u, v),该函数计算源图像(即来自相机的原始图像)中对应的坐标。应用以下过程:
x ← ( u − c ′ x ) / f ′ x y ← ( v − c ′ y ) / f ′ y [ X Y W ] T ← R − 1 ⋅ [ x y 1 ] T x ′ ← X / W y ′ ← Y / W r 2 ← x ′ 2 + y ′ 2 x ′ ′ ← x ′ 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 1 + k 4 r 2 + k 5 r 4 + k 6 r 6 + 2 p 1 x ′ y ′ + p 2 ( r 2 + 2 x ′ 2 ) + s 1 r 2 + s 2 r 4 y ′ ′ ← y ′ 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 1 + k 4 r 2 + k 5 r 4 + k 6 r 6 + p 1 ( r 2 + 2 y ′ 2 ) + 2 p 2 x ′ y ′ + s 3 r 2 + s 4 r 4 s [ x ′ ′ ′ y ′ ′ ′ 1 ] = [ R 33 ( τ x , τ y ) 0 − R 13 ( τ x , τ y ) 0 R 33 ( τ x , τ y ) − R 23 ( τ x , τ y ) 0 0 1 ] ⋅ R ( τ x , τ y ) ⋅ [ x ′ ′ y ′ ′ 1 ] m a p x ( u , v ) ← x ′ ′ ′ f x + c x m a p y ( u , v ) ← y ′ ′ ′ f y + c y \begin{array}{l} x \leftarrow (u - {c'}_x) / {f'}_x \\ y \leftarrow (v - {c'}_y) / {f'}_y \\ [X\,Y\,W]^T \leftarrow R^{-1} \cdot [x \, y \, 1]^T \\ x' \leftarrow X/W \\ y' \leftarrow Y/W \\ r^2 \leftarrow x'^2 + y'^2 \\ x'' \leftarrow x' \frac{1 + k_1 r^2 + k_2 r^4 + k_3 r^6}{1 + k_4 r^2 + k_5 r^4 + k_6 r^6} + 2p_1 x' y' + p_2(r^2 + 2 x'^2) + s_1 r^2 + s_2 r^4 \\ y'' \leftarrow y' \frac{1 + k_1 r^2 + k_2 r^4 + k_3 r^6}{1 + k_4 r^2 + k_5 r^4 + k_6 r^6} + p_1 (r^2 + 2 y'^2) + 2 p_2 x' y' + s_3 r^2 + s_4 r^4 \\ s \begin{bmatrix} x''' \\ y''' \\ 1 \end{bmatrix} = \begin{bmatrix} R_{33}(\tau_x, \tau_y) & 0 & -R_{13}(\tau_x, \tau_y) \\ 0 & R_{33}(\tau_x, \tau_y) & -R_{23}(\tau_x, \tau_y) \\ 0 & 0 & 1 \end{bmatrix} \cdot R(\tau_x, \tau_y) \cdot \begin{bmatrix} x'' \\ y'' \\ 1 \end{bmatrix} \\ map_x(u,v) \leftarrow x''' f_x + c_x \\ map_y(u,v) \leftarrow y''' f_y + c_y \end{array} x(ucx)/fxy(vcy)/fy[XYW]TR1[xy1]TxX/WyY/Wr2x′2+y′2x′′x1+k4r2+k5r4+k6r61+k1r2+k2r4+k3r6+2p1xy+p2(r2+2x′2)+s1r2+s2r4y′′y1+k4r2+k5r4+k6r61+k1r2+k2r4+k3r6+p1(r2+2y′2)+2p2xy+s3r2+s4r4s x′′′y′′′1 = R33(τx,τy)000R33(τx,τy)0R13(τx,τy)R23(τx,τy)1 R(τx,τy) x′′y′′1 mapx(u,v)x′′′fx+cxmapy(u,v)y′′′fy+cy

其中 (k1, k2, p1, p2[, k3[, k4, k5, k6[, s1, s2, s3, s4[, τx, τy]]]]) 是畸变系数。

对于立体相机,此函数会被调用两次:每次针对一个相机头,在 stereoRectify 之后调用,而 stereoRectify 又是在 stereoCalibrate 之后调用的。但如果立体相机未经过校准,仍然可以直接从基本矩阵使用 stereoRectifyUncalibrated 计算校正变换。对于每个相机,该函数以像素域中的单应性矩阵 H 而不是三维空间中的旋转矩阵 R 来计算校正变换。R 可以通过 H 按照以下方式计算:
R = cameraMatrix − 1 ⋅ H ⋅ cameraMatrix \texttt{R} = \texttt{cameraMatrix} ^{-1} \cdot \texttt{H} \cdot \texttt{cameraMatrix} R=cameraMatrix1HcameraMatrix
其中 cameraMatrix 可以任意选择。

函数原型


void cv::initUndistortRectifyMap	
(InputArray 	cameraMatrix,InputArray 	distCoeffs,InputArray 	R,InputArray 	newCameraMatrix,Size 	size,int 	m1type,OutputArray 	map1,OutputArray 	map2 
)		

参数

  • 参数cameraMatrix 输入相机矩阵 cameraMatrix = A = [ f x 0 c x 0 f y c y 0 0 1 ] \text{cameraMatrix} = A = \begin{bmatrix}f_x & 0 & c_x \\0 & f_y & c_y \\0 & 0 & 1\end{bmatrix} cameraMatrix=A= fx000fy0cxcy1
  • 参数distCoeffs 输入畸变系数向量 (k1, k2, p1, p2[, k3[, k4, k5, k6[, s1, s2, s3, s4[, τx, τy]]]]),包含 4、5、8、12 或 14 个元素。如果该向量为 NULL/空,则假设畸变系数为零。
  • 参数R 可选的对象空间中的校正变换(3x3 矩阵)。可以传递由 stereoRectify 计算得到的 R1 或 R2。如果该矩阵为空,则假定为单位变换。在 initUndistortRectifyMap 中,R 假设为单位矩阵。
  • 参数newCameraMatrix 新的相机矩阵 $ newCameraMatrix = A ′ = [ f x ′ 0 c x ′ 0 f y ′ c y ′ 0 0 1 ] \text{newCameraMatrix} = A' = \begin{bmatrix} f'_x & 0 & c'_x \\ 0 & f'_y & c'_y \\ 0 & 0 & 1 \end{bmatrix} newCameraMatrix=A= fx000fy0cxcy1
  • 参数size 矫正后图像的尺寸。
  • 参数m1type 第一个输出映射的类型,可以是 CV_32FC1, CV_32FC2 或 CV_16SC2,参见 convertMaps。
  • 参数map1 第一个输出映射。
  • 参数map2 第二个输出映射。

代码示例

#include <iostream>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;int main()
{// 假设的相机矩阵和畸变系数Mat cameraMatrix = ( Mat_< double >( 3, 3 ) << 500, 0, 320, 0, 500, 240, 0, 0, 1 );Mat distCoeffs   = ( Mat_< double >( 5, 1 ) << 0.1, 0.05, -0.01, 0.005, 0 );// 假设的旋转矩阵 R 和新的相机矩阵 newCameraMatrixMat R               = Mat::eye( 3, 3, CV_64F );  // 单位矩阵作为示例Mat newCameraMatrix = cameraMatrix.clone();// 图像尺寸Size imageSize( 640, 480 );// 定义输出映射类型int m1type = CV_32FC1;// 初始化矫正映射Mat map1, map2;initUndistortRectifyMap( cameraMatrix, distCoeffs, R, newCameraMatrix, imageSize, m1type, map1, map2 );cout << "Undistortion and rectification maps created." << endl;// 使用 remap 对图像进行矫正Mat originalImage = imread( "/media/dingxin/data/study/OpenCV/sources/images/remap.png" );  // 加载原始图像if ( originalImage.empty() ){cerr << "Error: Could not open or find the image!" << endl;return -1;}Mat undistortedImage;remap( originalImage, undistortedImage, map1, map2, INTER_LINEAR );// 显示结果imshow( "Original Image", originalImage );imshow( "Undistorted Image", undistortedImage );waitKey( 0 );return 0;
}
http://www.hkea.cn/news/13210/

相关文章:

  • 失业保险网站上海网站制作公司
  • wordpress 新手指南温州seo教程
  • 微信管理中心四川自助seo建站
  • 襄阳做网站公司百度账号中心官网
  • 申请网站域名怎么做网站推广赚钱软件
  • 哈尔滨网站建设咨询360营销推广
  • 昆明室内设计公司排名在线看seo网站
  • 一个大型网站建设得多少钱软服业营收破334亿
  • 手机怎样建个人网站晋城今日头条新闻
  • 开发区人力资源招聘网武汉网站优化
  • 免费无广告建站怎么推广软件
  • 佛山市企业网站建设平台网络推广seo教程
  • html家具网站源代码冯耀宗seo博客
  • 做电影下载网站好百度推广网站平台
  • 哪有做网站的公司怎么做百度网页推广
  • 温州市网站制作哪家便宜百度推广工具有哪些
  • 做网站如何赚广费小黄豆crm
  • 网页模版比较出名的网站网络营销渠道策略
  • 东台网站建设国际十大市场营销公司
  • 互联网建站是什么重庆网站搭建
  • 做文化传播公司网站推广平台有哪些
  • 南同网站建设百度一下首页版
  • dw做链接网站无法显示该页面武汉网站推广公司排名
  • 内网网站搭建教程环球军事网最新消息
  • 做营销网站建设挣钱吗软文营销策划方案
  • 国内做香港视频网站有哪些贵阳网络推广排名
  • 第三方做公司网站推广平台网站热狗网
  • 网站制作图片插入代码关键词优化靠谱推荐
  • 四川万景建设工程有限公司网站天眼查企业查询
  • 网站建设 长摊 无形资产必应bing搜索引擎