当前位置:网站首页>Correction binoculaire
Correction binoculaire
2022-07-02 07:48:00 【Silence des nuages】
Un.、Étalonnage binoculaire
Le double ciblage nécessite l'acquisition des paramètres internes des deux caméras et de la matrice de transformation.Lien référencé:
https://blog.csdn.net/qq_38236355/article/details/89280633
https://blog.csdn.net/qingfengxiaosong/article/details/109897053
Ou Baidu seul
Utilisation recommandéeMatlabÉtalonnage de la boîte à outils,Où il est recommandé de cocher3 Coefficients.
ProduitsMatlabAprès les données de,Utilisez le script suivant pour extraire les données:
rowName = cell(1,10);
rowName{1,1} = 'Matrice de traduction';
rowName{1,2} = 'Matrice de rotation';
rowName{1,3} = 'La caméra1Matrice des paramètres internes';
rowName{1,4} = 'La caméra1Distorsion radiale';
rowName{1,5} = 'La caméra1Distorsion tangentielle';
rowName{1,6} = 'La caméra2Matrice des paramètres internes';
rowName{1,7} = 'La caméra2Distorsion radiale';
rowName{1,8} = 'La caméra2Distorsion tangentielle';
rowName{1,9} = 'La caméra1Vecteur de distorsion';
rowName{1,10} = 'La caméra2Vecteur de distorsion';
xlswrite('out.xlsx',rowName(1,1),1,'A1');
xlswrite('out.xlsx',rowName(1,2),1,'A2');
xlswrite('out.xlsx',rowName(1,3),1,'A5');
xlswrite('out.xlsx',rowName(1,4),1,'A8');
xlswrite('out.xlsx',rowName(1,5),1,'A9');
xlswrite('out.xlsx',rowName(1,6),1,'A10');
xlswrite('out.xlsx',rowName(1,7),1,'A13');
xlswrite('out.xlsx',rowName(1,8),1,'A14');
xlswrite('out.xlsx',rowName(1,9),1,'A15');
xlswrite('out.xlsx',rowName(1,10),1,'A16');
xlswrite('out.xlsx',stereoParams.TranslationOfCamera2,1,'B1'); % Matrice de traduction
xlswrite('out.xlsx',stereoParams.RotationOfCamera2.',1,'B2'); % Matrice de rotation
xlswrite('out.xlsx',stereoParams.CameraParameters1.IntrinsicMatrix.',1,'B5'); % La caméra1Matrice des paramètres internes
xlswrite('out.xlsx',stereoParams.CameraParameters1.RadialDistortion,1,'B8'); % La caméra1Distorsion radiale(1,2,5)
xlswrite('out.xlsx',stereoParams.CameraParameters1.TangentialDistortion,1,'B9'); % La caméra1Distorsion tangentielle(3,4)
xlswrite('out.xlsx',stereoParams.CameraParameters2.IntrinsicMatrix.',1,'B10'); % La caméra2Matrice des paramètres internes
xlswrite('out.xlsx',stereoParams.CameraParameters2.RadialDistortion,1,'B13'); % La caméra2Distorsion radiale(1,2,5)
xlswrite('out.xlsx',stereoParams.CameraParameters2.TangentialDistortion,1,'B14'); % La caméra2Distorsion tangentielle(3,4)
xlswrite('out.xlsx',[stereoParams.CameraParameters1.RadialDistortion(1:2), stereoParams.CameraParameters1.TangentialDistortion,...
stereoParams.CameraParameters1.RadialDistortion(3)],1,'B15'); % La caméra1Vecteur de distorsion
xlswrite('out.xlsx',[stereoParams.CameraParameters2.RadialDistortion(1:2), stereoParams.CameraParameters2.TangentialDistortion,...
stereoParams.CameraParameters2.RadialDistortion(3)],1,'B16'); % La caméra2Vecteur de distorsion
Python Correction binoculaire
Créer un nouveaupythonScript,Entrez le code suivant:
import cv2
import numpy as np
# Ginseng intraoculaire gauche
left_camera_matrix = np.array([[443.305413261701, 0., 473.481578105186],
[0., 445.685585080218, 481.627083907456],
[0., 0., 1.]])
# Distorsion oculaire gauche
#k1 k2 p1 p2 k3
left_distortion = np.array([[-0.261575534517449, 0.0622298171820726, 0., 0., -0.00638628534161724]])
# Ginseng intraoculaire droit
right_camera_matrix = np.array([[441.452616156177,0., 484.276702473006],
[0., 444.350924943458, 465.054536507021],
[0., 0., 1.]])
# Distorsion oculaire droite
right_distortion = np.array([[-0.257761221642368, 0.0592089672793365, 0., 0., -0.00576090991058531]])
# Matrice de rotation
R = np.matrix([
[0.999837210893742, -0.00477934325693493, 0.017398551383822],
[0.00490062605211919, 0.999963944810228, -0.0069349076319899],
[-0.0173647797717217, 0.00701904249875521, 0.999824583347439]
])
# Matrice de traduction
T = np.array([-71.0439056359403, -0.474467959947789, -0.27989811881883]) # Traduire le vecteur relationnel
size = (960, 960) # Taille de l'image
# Effectuer une correction stéréo
R1, R2, P1, P2, Q, validPixROI1, validPixROI2 = cv2.stereoRectify(left_camera_matrix, left_distortion,
right_camera_matrix, right_distortion, size, R,
T)
# Calcul des corrections map
left_map1, left_map2 = cv2.initUndistortRectifyMap(left_camera_matrix, left_distortion, R1, P1, size, cv2.CV_16SC2)
right_map1, right_map2 = cv2.initUndistortRectifyMap(right_camera_matrix, right_distortion, R2, P2, size, cv2.CV_16SC2)
Les paramètres doivent être remplacés par leurs propres paramètres réels .
Ensuite, écrivez un script et testez les résultats :
import cv2
import numpy as np
import camera_config
w = 1920
h = 960
cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, w)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, h)
key = ""
ww = int(w/2)
jiange = int(h/10)
while key!=27:
ret, img = cap.read()
if ret:
imgLeft = img[:, :ww]
imgRight = img[:, ww:w]
left_remap = cv2.remap(imgLeft, camera_config.left_map1, camera_config.left_map2, cv2.INTER_LINEAR)
right_remap = cv2.remap(imgRight, camera_config.right_map1, camera_config.right_map2, cv2.INTER_LINEAR)
out = np.hstack([left_remap, right_remap])
for i in range(10):
cv2.line(out, (0, jiange*i), (w, jiange*i), (255, 0, 0), 2)
cv2.imshow("frame", out)
key = cv2.waitKey(10)
cap.release()
cv2.destroyAllWindows()
Vous pouvez voir l'effet:
Avant correction( Très mauvais appareil photo ,Effet fisheye, Ne convient pas à une utilisation pratique ):
Après correction:
边栏推荐
- 深度学习分类优化实战
- 论文写作tip2
- yolov3训练自己的数据集(MMDetection)
- 【TCDCN】《Facial landmark detection by deep multi-task learning》
- Using MATLAB to realize: Jacobi, Gauss Seidel iteration
- Win10+vs2017+denseflow compilation
- Implementation of yolov5 single image detection based on pytorch
- 论文tips
- Latex formula normal and italic
- Point cloud data understanding (step 3 of pointnet Implementation)
猜你喜欢
What if the notebook computer cannot run the CMD command
[introduction to information retrieval] Chapter 1 Boolean retrieval
How do vision transformer work?【论文解读】
What if a new window always pops up when opening a folder on a laptop
【Cutout】《Improved Regularization of Convolutional Neural Networks with Cutout》
Sorting out dialectics of nature
【Random Erasing】《Random Erasing Data Augmentation》
【Sparse-to-Dense】《Sparse-to-Dense:Depth Prediction from Sparse Depth Samples and a Single Image》
Mmdetection trains its own data set -- export coco format of cvat annotation file and related operations
【Wing Loss】《Wing Loss for Robust Facial Landmark Localisation with Convolutional Neural Networks》
随机推荐
Faster-ILOD、maskrcnn_benchmark安装过程及遇到问题
Faster-ILOD、maskrcnn_ Benchmark installation process and problems encountered
Drawing mechanism of view (I)
图片数据爬取工具Image-Downloader的安装和使用
【MEDICAL】Attend to Medical Ontologies: Content Selection for Clinical Abstractive Summarization
基于pytorch的YOLOv5单张图片检测实现
【DIoU】《Distance-IoU Loss:Faster and Better Learning for Bounding Box Regression》
Latex formula normal and italic
Proof and understanding of pointnet principle
解决latex图片浮动的问题
The difference and understanding between generative model and discriminant model
半监督之mixmatch
【Paper Reading】
Thesis writing tip2
Faster-ILOD、maskrcnn_benchmark训练自己的voc数据集及问题汇总
【Cascade FPD】《Deep Convolutional Network Cascade for Facial Point Detection》
[Sparse to Dense] Sparse to Dense: Depth Prediction from Sparse Depth samples and a Single Image
[introduction to information retrieval] Chapter 6 term weight and vector space model
Alpha Beta Pruning in Adversarial Search
Win10 solves the problem that Internet Explorer cannot be installed