Hi, I am

Ngô Tôn

I am a programmer.

Home / AI/ML/DL/DS / Tính khoảng cách từ Camera đến một đối tượng với OpenCV

Tính khoảng cách từ Camera đến một đối tượng với OpenCV

Một chủ đề khá là hay mà hôm nay Ngô Tôn .IT đem đến cho các bạn đó là Tính khoảng cách từ Camera đến một đối tượng với OpenCV.

Sự giống nhau giữa hình tam giác và khoảng cách giữa camera với một vật thể

Để xác định khoảng cách từ máy ảnh đến một vật thể, chúng ta sẽ sử dụng tính tương tự của tam giác. Sự tương tự của tam giác như sau:

Giả sử chúng ta có một điểm đánh dấu hoặc đối tượng có chiều rộng đã biết W. Sau đó, chúng ta đặt điểm đánh dấu này cách máy ảnh một khoảng D. Chúng ta chụp ảnh đối tượng bằng máy ảnh của mình và sau đó đo chiều rộng tính bằng pixel P. Điều này cho phép chúng ta tính được tiêu cự F của máy ảnh:

F = (P x D) / W

Ví dụ: Giả sử mình đặt một mảnh giấy tiêu chuẩn có kích thước 8,5 x 11 inch (theo chiều ngang: W = 11), D = 24 inch trước máy ảnh và chụp ảnh. Khi đo chiều rộng của mảnh giấy trong hình ảnh, mình nhận thấy rằng chiều rộng cảm nhận được của tờ giấy là P = 248 pixel.

Tiêu cự F sau đó là:

F = (248 x 24) / 11 = 543,45

Khi tiếp tục di chuyển máy ảnh của mình cả gần và xa hơn đối tượng, mình có thể áp dụng phép đồng dạng tam giác để xác định khoảng cách của đối tượng đến máy ảnh:

D’= (W x F) / P

Cụ thể, giả sử mình di chuyển máy ảnh của mình ra xa điểm đánh dấu 36 inch và chụp ảnh cùng một mảnh giấy. Thông qua xử lý hình ảnh tự động, mình có thể xác định rằng chiều rộng cảm nhận được của mảnh giấy hiện là 168 pixel. Bây giờ chúng ta nhận được:

D’= (11 x 543,45) / 168 = 35,58 ~ 36 inch

Tính khoảng cách từ Camera đến một đối tượng với OpenCV

Bây giờ, chúng ta sẽ triển khai code python để tính khoảng cách từ camera tới vật thể với OpenCV. Ở phần này, mình kết hợp giữa việc nhận diện khuôn mặt và đo khoảng cách từ camera tới mặt người luôn.

Khai báo

Mình sử dụng module nhận diện đối tượng Haar Cascade của OpenCV, các bạn hãy tải file này về nhé “haarcascade_frontalface_default.xml”.
 Tiếp theo, chúng ta sẽ tính tiêu cự F
Và hàm tính khoảng cách D
Chúng ta cũng định nghĩa thêm hàm nhận diện khuôn mặt và tính khoảng cách
Cuối cùng, chúng ta vẽ khoảng cách tính được. Code đầy đủ như sau:
Các bạn nhớ mở camera lên chụp 1 tấm hình của bạn lưu dưới tên “Ref_image.png”.

Xong, chạy lên xem kết quả thế nào!

measure-camera-distance

About ngoton

Ngô Tôn is a programmer with passion for tailored software solutions. Comes with 7+ years of IT experience, to execute beautiful front-end experiences with secure and robust back-end solutions.

Check Also

Tự động tạo code HTML & CSS từ hình ảnh với Deep Learning

Mục lục Xây dựng mạng nơ-ronPhiên bản đơn giảnPhiên bản nâng caoPhiên bản cuối cùng …

Leave a Reply

avatar
  Subscribe  
Notify of