Table des matières
Projet Vision Active BUT3
Photo du dispositif
Simulation du dispositif
Vue de la caméra en simulation du dispositif
Vue de la caméra en simulation du dispositif avec segmentation laser
Image captée par la caméra réelle avec mire et longue durée d'exposition
Image RECTIFIÉE captée par la caméra réelle avec mire et longue durée d'exposition
Image captée par la caméra réelle avec longue durée d'exposition
Image captée par la caméra réelle avec courte durée d'exposition et laser sur l'objet
lien vers le TP de géométrie pour la vision
Lien pour récupérer des séquences d'images à traiter
Stocker et dezipper sur D:\etudiants\ : https://bvdp.inetdoc.net/files/iut/3Dscanner/
chaque séquence a un identifiant unique et restera sur le serveur
dans votre code, utiliser des variables String:
fileLocation="D:\\etudiants\\" sequence="imgs2024-03-03_18_32_31.576393R" fileName=fileLocation+sequence+"\\"+"im_00000R.png"
Séquence sans objet sur le plan z=0: https://bvdp.inetdoc.net/files/iut/3Dscanner/imgs2024-03-04_13_39_08.694176R.zip
Code pour récupérer les paramètres de caméra
- getCamera.py
import numpy as np import cv2 from matplotlib import pyplot as plt import math #variables à régler pour pointer vers le bon dossier fileLocation="D:\\etudiants\\" sequence="imgs2024-03-03_18_32_31.576393R" fileName=fileLocation+sequence+"\\"+"CalibResult.npz" #paramètre de la mire dimSquare=0.012 #dimension des carrés sur la mire en mètres-> les unités de longueur sont donc en mètres with np.load(fileName) as X: mtx, dist, rvecs, tvecs = [X[i] for i in ('mtx','dist','rvecs','tvecs')] #nbimages=len(rvecs) #for i in range(nbimages): #si les différentes images d'étalonnage devaient être traitées i=0 #pour récupérer les paramètres de l'image dans laquelle la mire est posée sur le plan horizontal matroti, jacobian=cv2.Rodrigues(rvecs[i]) #Rodrigues permet de calculer la matrice de rotation correspondante axis = np.float32([[0,0,0], [3*dimSquare,0,0], [0,3*dimSquare,0], [0,0,3*dimSquare]]).reshape(-1,3) imgpts, jac = cv2.projectPoints(axis, rvecs[i], tvecs[i], mtx,None) #pour ne pas utiliser les distorsions #matrice de changement de repère contenant les paramètres extrinsèques cRTw=np.concatenate((matroti,tvecs[i]),axis=1) cRTw = np.vstack((cRTw,[0,0,0,1])) print("cRTw: "+str(cRTw)) #paramètres intrinsèques de la caméra alphau=mtx[0][0] alphav=mtx[1][1] pu=mtx[0][2] pv=mtx[1][2]
Calcul de la position du centre optique
La position du centre optique
de la caméra dans le repère de travail est obtenue à partir de la matrice caméra:
En observant que le point
n'a pas d'image dans
:
Calcul du rayon de projection
L'ensemble des points
de la demi-droite (dans le repère de travail
) associés à un point
dans le plan image est donné par:
,
étant un paramètre associé à la distance du point 3D au point
.
Soit
le point à l'infini dans la direction de
:
,
et donc
On obtient:
qui donne finalement:
En fonction du facteur multiplicatif associé à la représentation homogène de
,
ou
.
Projet et rapport à rendre par mail le 16/02/2026
Le projet rendu en .zip ne doit pas contenir les images fournies par l'enseignant mais doit permettre de les utiliser en réglant les variables indiquant leurs emplacements.
Rendre 1 fichier par binome, le nom du fichier doit contenir le nom des differents membres du binôme et le mail doit être envoyé en copie à l'autre membre du binome.








