Tải bản đầy đủ (.pdf) (12 trang)

báo cáo môn thị giác máy position estimation

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (977.54 KB, 12 trang )


Mục lục
I, Giới thiệu.................................................................................................................................................... 3
II, Thực hiện và kết quả: ................................................................................................................................ 4
III, Tóm tắt và kết luận ................................................................................................................................ 11


I, Giới thiệu
Trong vấn đề điều khiển robot, luôn xuất hiện bài toán định vị vị trí cho robot.
Có nhiều phương pháp định vị, sử dụng nhiều thuật toán phức tạp như slam, đòi hỏi kết hợp
với nhiều loại cảm biến cùng lúc: lidar, encoder hay camera để định vị robot trong không gian
2d/3d.
Bài báo cáo này trình bày phương pháp sử dụng camera để xác định vị trí vật thể trong không
gian 2 chiều.


II, Thực hiện và kết quả:
Bài toán đặt ra: xác định vị trí của robot trong môi trường không gian phẳng ( hệ trục Oxy )

bằng 1 camera đặt ở vị trí cố định
Mục tiêu: Từ một ảnh với một vật mốc được chụp ở các tư thế bất kỳ, xác định được pose của vật mốc,
và vị trí tương đối của các điểm trong ảnh so với vật mốc trong không gian 2 chiều Oxy
Các vấn đề cần giải quyết:


Hình chụp từ camera không mô tả chính xác thế giới do các thống số không lý tưởng trong
camera ( lens khó được lắp đặt chính xác vào vị trí cần thiết so với màn trập, thấu kính không có
độ cong hoàn hảo ) gây nền các hiện tượng méo hình ( distortions ) -> ảnh hưởng đến kết quả
định vị




Camera đặt ở các góc nhìn khác nhau nên khoảng từ điểm mốc tới các điểm khác bị biến dạng ->
gây khó khăn cho việc xác định vị trí.


Giải pháp:



Thực hiện calib camera để bù cho những thông số không lý tưởng
Xác định thế của vật mốc ( pose ) để chỉnh định lại góc nhìn của camera về không gian 2 chiều
Oxy

Quá trình thực hiện:


Calib camera:
Tổng quan quá trình calib:
o Tìm ra ma trận nội của camera, ma trận này chứa các thông số như tiêu cự, độ lệch của
lens so với vị trí chuẩn,…

o

Tìm các hệ số méo dạng

Việc tìm ma trận nội và các hệ số méo dạng được hệ thống hóa thành bài toán giải hệ phương
trình nhiều ẩn. Các phương trình này được chiết ra từ một loạt hình input, với điều kiện trong
hình phải chứa những pattern hoặc vật thể mà, một hoặc ta phải biết được chính xác tọa độ của
pattern/ vật thể trong không gian 3 chiều, hoặc pattern/ vật thể chứa cấu trúc đặc biệt mà chỉ
cần từ tọa độ 3 chiều của 1 điểm trong pattern có thể suy ra tọa độ của nhiều điểm khác. Tiếp

theo sẽ nhận dạng các điểm của pattern trên hình, từ đó ứng với mỗi cặp pattern trên hình –
pattern trong không gian 3 chiều sẽ cho 1 phương trình
Pattern ở đây lựa chọn là hình bàn cờ với các ô vuông xen kẽ theo quy luật.
Các hàm có sẵn của thư viện OpenCV hỗ trợ việc calib:
bool findChessboardCorners( InputArray image,
Size patternSize interior number of corners,
OutputArray corners,
int flags operation flags);




Tham số:
o Image: ảnh chứa hình bàn cờ
o patternSize: kích thước các corners của bàn cờ, ví dụ bàn cờ 6x6
patternSize có kích thước là 5x5, 10x7 -> 9x6
o corners: tọa độ các góc tìm được
o flags: cờ chỉnh chế độ hoạt động
Hàm trả về bool xem có tìm được đủ các góc của bàn cờ hay không






double calibrateCamera( InputArrayOfArrays objectPoints,
InputArrayOfArrays imagePoints, Size imageSize,
InputOutputArray cameraMatrix, InputOutputArray distCoeffs,
OutputArrayOfArrays rvecs, OutputArrayOfArrays tvecs,
int flags = 0, TermCriteria criteria = TermCriteria(

TermCriteria::COUNT + TermCriteria::EPS, 30, DBL_EPSILON) );
Tham số:
o objectPoints: tọa độ các corners trong không gian thực
o imagePoints: tọa độ các corners trong ảnh
o cameraMatrix: ma trận nội tính được
o distCoeffs: các hệ số distort
o rvecs: vector quay
o tvecs: vector chuyển vị
o flags: cờ tùy chỉnh chế độ hoạt động cho hàm calibrateCamera
o criteria: điều kiện để dừng vòng lặp sử dụng trong hàm
Hàm trả về sai số reprojected




Xác định thế và biến đổi góc nhìn (Pose estimation và homography transform):
Thế là cách vật được đặt trong không gian, xác định được thế đồng nghĩa xác định được vị trí
cũng như góc nhìn của camera so với vật.
Homography transfrom: Từ ma trận nội, và thế của vật, có thể mapping các điểm của vật trong
ảnh bất kỳ để tạo thành một ảnh khác mà trong đó, các điểm của vật được nhìn theo góc từ trên
cao xuống.
Các hàm có sẵn của thư viện OpenCV cho Pose estimation và biến đổi góc nhìn:
bool solvePnP( InputArray objectPoints, InputArray imagePoints,
InputArray cameraMatrix, InputArray distCoeffs,
OutputArray rvec, OutputArray tvec,
bool useExtrinsicGuess = false, int flags = SOLVEPNP_ITERATIVE );






Tham số:
o objectPoints: tọa độ điểm tham chiếu trong không gian thực
o imagePoints: tọa độ điểm tham chiếu trong ảnh
o cameraMatrix: ma trận nội của camera
o distCoeffs: các hệ số distort của camera
o rvecs: vector quay tính được
o tvecs: vector chuyển vị tính được
o useExtrinsicGuess: nếu true thì sẽ sử dụng rvec,tvec lúc đầu để tính toán
rvec,tvec
o flags: các chế độ hoạt động khác nhau
Hàm ước lượng pose của các object points nhập vào ( rvec, tvec )
void projectPoints( InputArray objectPoints,
InputArray rvec, InputArray tvec,
InputArray cameraMatrix, InputArray distCoeffs,
OutputArray imagePoints,
OutputArray jacobian = noArray(),
double aspectRatio = 0 );



Tham số:
o objectPoints: tọa độ điểm tham chiếu trong không gian thực
o rvec: vector quay của camera so với vật
o tvec: vector chuyển vị của camera so với vật
o cameraMatrix: ma trận nội của camera
o distCoeffs: các hệ số distort của camera
o imagePoints: tọa độ điểm trong ảnh
o jacobian: chưa nghiên cứu và để default
o aspectRatio: chưa nghiên cứu và để default




Hàm project một hoặc nhiều điểm trong không gian thực thành một hoặc nhiều điểm
trên ảnh
Mat getPerspectiveTransform( const Point2f src[],const Point2f dst[] );





Tham số:
o src: 4 điểm chọn từ hình gốc
o dst: 4 điểm tương ứng từ hình muốn biến đổi
Hàm trả về ma trận Homography






void warpPerspective( InputArray src, OutputArray dst,
InputArray M, Size dsize)
Tham số:
o src: hình gốc
o dst: hình muốn biến đổi
o M: ma trận Homography
o Dsize: tỉ lệ của hình muốn biến đổi so với hình gốc
Hàm biến đổi hình thái học cho hình nhập vào



Kết quả:

H1 Hình chụp gốc sau khi calib camera cùng điểm mốc (0,0), điểm chọn bất kỳ có vị trí tương đối là
(4.99,1.02) trong hệ tọa độ Oxy với điểm mốc là gốc tọa độ


H2: Ảnh sau khi được biến đổi theo góc nhìn từ trên xuống dưới ( bird eye ) với điểm mốc (0,0) và điểm
chọn có vị trí giống với H1.


III, Tóm tắt và kết luận
Bài toán định vị ví trí nhóm thực hiện tóm gọn lại thành các phần thể hiện qua các lưu đồ dưới:
Lưu đồ calibrate camera:


Lưu đồ giải thuật cho bài toán định vị robot:



×