{"id":13438479,"url":"https://github.com/GCaptainNemo/Camera-Calib-OpenCV","last_synced_at":"2025-03-20T06:30:32.766Z","repository":{"id":108956207,"uuid":"442544204","full_name":"GCaptainNemo/Camera-Calib-OpenCV","owner":"GCaptainNemo","description":"Opencv calibration program for different checkerboards.","archived":false,"fork":false,"pushed_at":"2022-01-15T15:30:54.000Z","size":25363,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-28T00:23:06.631Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/GCaptainNemo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-12-28T18:01:14.000Z","updated_at":"2024-10-10T10:48:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"7cd51101-3344-4702-aa35-188d32a3e219","html_url":"https://github.com/GCaptainNemo/Camera-Calib-OpenCV","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GCaptainNemo%2FCamera-Calib-OpenCV","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GCaptainNemo%2FCamera-Calib-OpenCV/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GCaptainNemo%2FCamera-Calib-OpenCV/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GCaptainNemo%2FCamera-Calib-OpenCV/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GCaptainNemo","download_url":"https://codeload.github.com/GCaptainNemo/Camera-Calib-OpenCV/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244564840,"owners_count":20473142,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T03:01:05.893Z","updated_at":"2025-03-20T06:30:27.759Z","avatar_url":"https://github.com/GCaptainNemo.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"# 相机标定\r\n\r\n## 一、依赖与安装\r\n\r\n### 1.1 依赖与环境\r\n\r\n`OpenCV` + `windows or ubuntu`\r\n\r\n### 1.2 生成\r\n\r\n```\r\nmkdir build \u0026\u0026 build\r\ncmake ..\r\nmake\r\n```\r\n\r\n### 1.3 demo\r\n\r\n* 单目棋盘格标定\r\n\r\n`./chessboard_calib ../imgs/chessboard/ ../imgs/chessboard/`\r\n\r\n* 单目对称圆点标定\r\n\r\n`./circle_board_calib` \r\n\r\n**注意:** \r\n\r\n1. 对于圆点标定板，需要用BLOB斑点检测器检测斑点，进而获取圆心。然而Blob检测器检测正确与否**非常依赖检测参数的设置**。\r\n2. 对OpenCV API\t`calibrateCamera`可以设置标定算法选项，引入若干先验，比如固定k3=0，固定光心，固定p1,p2=0等。\r\n\r\n\r\n\r\n## 二、介绍\r\n\r\n相机标定本质上是设计R\u003csup\u003e3\u003c/sup\u003e中已知尺寸的平面图案，使得其投影到图像后特征点具有显著性，容易被算法检测。接着通过构造三维空间和图像中的3D-2D匹配点对，计算投影矩阵H\u003csub\u003ei\u003c/sub\u003e = K[r1\u003csub\u003ei\u003c/sub\u003e, r2\u003csub\u003ei\u003c/sub\u003e, t\u003csub\u003ei\u003c/sub\u003e] (令平面上点在世界坐标系中Z=0）。接着可以利用r1,r2的正交约束和归一化约束，一个投影矩阵得到两个方程：\r\n\r\n1. h2i\u003c/sub\u003eK\u003csup\u003e-T\u003c/sup\u003eK\u003csup\u003e-1\u003c/sup\u003eh1\u003csub\u003ei\u003c/sub\u003e = 0\r\n\r\n2. h1\u003csub\u003ei\u003c/sub\u003eK\u003csup\u003e-T\u003c/sup\u003eK\u003csup\u003e-1\u003c/sup\u003eh1\u003csub\u003ei\u003c/sub\u003e = h2\u003csub\u003ei\u003c/sub\u003eK\u003csup\u003e-T\u003c/sup\u003eK\u003csup\u003e-1\u003c/sup\u003eh2\u003csub\u003ei\u003c/sub\u003e \r\n\r\n由于内参具有5个未知量，因此至少需要三幅正确检测特征点的图像。求出内参后，用LM非线性优化算法计算畸变参数。\r\n\r\n常见的相机标定板有四种，分别是棋盘格，对称圆点标定板、非对称圆点标定板和ChArUco板。对应特征点检测算法分别检测角点(鞍点)、投影椭球中心、投影椭球中心、棋盘格与ArUco的角点。\r\n\r\n\u003cp align=\"center\"\u003e\u003cimg src=\"./resources/calib_board.png\" width=50%\u003e\u003c/p\u003e\r\n\r\n\u003ch6 align=\"center\"\u003e从外到内分别是对称圆点、非对称圆点、棋盘格和ChArUco标定板\u003c/h6\u003e\r\n\r\nOpenCV支持四种标定板的标定(Matlab2021之前的版本只支持棋盘格)，本仓库代码是C++ OpenCV对应官方标定例子的总结。\r\n\r\n## 三、参考资料\r\n\r\n[1] [OpenCV对称圆点标定](https://blog.csdn.net/weixin_51229250/article/details/120009716)\r\n\r\n[2] [CSDN-ChArUco](https://blog.csdn.net/zhy29563/article/details/119039163)\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGCaptainNemo%2FCamera-Calib-OpenCV","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FGCaptainNemo%2FCamera-Calib-OpenCV","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FGCaptainNemo%2FCamera-Calib-OpenCV/lists"}