HIỆU CHUẨN MÁY ẢNH

Một phần của tài liệu Đồ án tốt nghiệp XÂY DỰNG HỆ THỐNG TÌM KIẾM TRONG CỨU HỘ SỬ DỤNG MÁY BAY KHÔNG NGƯỜI LÁI ỨNG DỤNG MẠNG HỌC SÂU YOLOv4 (Trang 73 - 75)

Hiệu chuẩn hình học máy ảnh là quá trình đo đạc các tham số của thấu kính máy ảnh và thông số cảm biến hình ảnh của một hình ảnh hoặc đoạn ghi hình ảnh video.

HÌNH 3.22. Các ứng dụng của việc hiệu chuẩn hình ảnh máy ảnh.

Thư viện hiệu chuẩn hình ảnh sử dụng ở đây là thư viện của chương trình thư viện xử lý ảnh mã nguồn mở OpenCV (Open Computer Vision), được viết bằng ngôn ngữ lập trình Python Để tìm kích thước của vật ta chỉ cần đến tham số ma trận nội tại trong các tham số.

Sử dụng một tấm bảng hình ca-rô loại 11 x 8 ô có kích cỡ 594 x 420mm để thực hiện hiệu chuẩn hóa tham số máy ảnh, với kích cỡ chuẩn mỗi ô vuông cạnh là 50mm.

HÌNH 3.23. Quá trình hiệu chuẩn máy ảnh.

Để hiệu chuẩn máy ảnh, bước đầu tiên ta sẽ lấy dữ liệu hình ảnh chụp tấm bảng ca-rô. Tổng cộng em chụp 20 tấm ảnh để làm dữ liệu hiệu chuẩn, bước thứ

SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56

hai trong code hiệu chuẩn ta sẽ đọc các hình ảnh dữ liệu mà ta đã thu được bằng thư viện glob

images = glob.glob('./data/*.jpg') size = np.zeros((w, h-1), dtype='uint8')

Sau khi đã đọc dữ liệu lưu thành mảng đa chiều. Tạo hai mảng array để chứa tọa độ 2 chiều và tọa độ 3 chiều của hình ảnh

objpoints = [] # 3D points in real world space imgpoints = [] # 2D points in image plane

Khởi tạo các điểm trong mảng objp, sử dụng hàm Numpy.zeros để tạo mảng có các giá trị bằng 0, mảng có số lượng tương đương với số góc của bảng hiệu chuẩn ca-rô là 10 x 7, mỗi điểm sẽ có 3 cột cho lần lượt tọa độ x,y và z của từng góc. Giữ nguyên tọa độ z bằng 0, ta sử dụng hàm mgrid vào giá trị tọa độ của x và y để tạo tọa độ mong muốn. Hàm mgrid sẽ trả về giá trị tọa độ với kích cỡ ô và hình dạng ma trận của bảng hiệu chuẩn ca-rô về lại hai cột.

objp = np.zeros((6*8,3), np.float32)

objp[:,:,] = mp.mgrid[0:8,0:6].T.reshape(-1,2) # x,y coordinates

Tiếp theo để tìm các điểm tọa độ ảnh trong ICS ta sẽ chuyển dữ liệu ảnh màu RGB về ảnh chỉ có màu ghi theo thang độ xám, sau đó tìm các góc của ô vuông trên hình.

# Convert image to grayscale

gray = cv2.cvtColor(img, cv2.COLOR_BRG2GRAY) # Find the Chesse board corners

rer, corners = cv2.findChessboardCorners(gray, (10,7), None)

Thư viện OpenCV cung cấp hàm calibrateCamera() để hiệu chuẩn máy ảnh, thuật toán được sử dụng để hiệu chuẩn máy ảnh được nêu trong tài liệu [23] của tác giả Zhang.

ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, size, None, None)

np.save("./ret", ret)

np.save("./mtx", mtx) # camera matrix np.save("./dist", dist) # distortion coefficients np.save("./rvecs", rvecs) # rotation vectors np.save("./tvecs", tvecs) # translation vectors

SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56

Hàm này sẽ lấy điểm Object point, Image point và hình dạng ma trận của dữ liệu hình ảnh để tính toán và trả về ma trận nội tại và ma trận ngoại lai.

Một phần của tài liệu Đồ án tốt nghiệp XÂY DỰNG HỆ THỐNG TÌM KIẾM TRONG CỨU HỘ SỬ DỤNG MÁY BAY KHÔNG NGƯỜI LÁI ỨNG DỤNG MẠNG HỌC SÂU YOLOv4 (Trang 73 - 75)

Tải bản đầy đủ (PDF)

(92 trang)