








Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Image stitching panorama image from image list and videos using opencv and deploy website using streamlit
Typology: Essays (university)
1 / 14
This page cannot be seen from the preview
Don't miss anything!









GVHD : Nguyễn Vĩnh Tiệp Lớp: CS321.K Thành viên: Nguyễn Đình Vinh- 16521582 Nguyễn Đắc Phi Hùng 16521688 Phạm Thị Nga 16521743 TP. Hồ Chí Minh, tháng 1 năm 2020
d) Blending: Dựa trên thuật toán Alpha Blending vì nó đơn giản dễ thực hiện và có độ thẩm mĩ tương đối tốt e) Cropping: cắt bỏ những phần màu đen dư thừa dựa 4 góc (top-left, bottom-left,bottom-right,top-right ) của 2 tấm hình
1. Đọc ảnh và chuyển về ảnh xám 2. Dùng ORB để rút trích đặc trưng, mặc định chúng em để ORB với nfeature=3000, việc thực hiện khá đơn giản với OpenCV orb = cv2.ORB_create(nfeatures= 3000 ) keypoints, features = orb.detectAndCompute(grayImage, None)
featureMatcher = cv2.DescriptorMatcher_create("FlannBased") matches = featureMatcher.knnMatch(featuresA,featuresB, k= 2 ) good = [] for m,n in matches: if m.distance<ratio*n.distance: good.append(m)
4. Tính toán ma trận homography và áp dụng RANSAC để loại nhiễu, đơn giản chỉ cần lấy toạ độ các điểm src_points và dst_points trong các kết quả hợp lệ ở bước 3 rồi dùng hàm findHomography. H,_= cv2.findHomography(src_points, dst_points, cv2.RANSAC,5.0) Áp dụng Homography lên src_img để nó xoay về đúng hướng với dst_img Warp_src_img= cv2.warpPersective(src_img, H,(width,hight) Tuy nhiên ảnh sau khi xoay bị cắn xén 1 phần rất lớn so với ảnh gốc bên dưới Để giải quyết vấn đề này chúng em áp dụng 1 phép translation lên ma trận homography. Ý tưởng tham khảo tại đây
Cộng từng pixel 2 ảnh ở trên ta thu được ảnh đã blending
6. Cropping: Sau khi đã ghép 2 ảnh và blending nó, chúng em tiến hành cắt bỏ những phần màu đen, việc cắt bỏ khá đơn giản dựa vào toạ độ 4 điểm góc của 2 tấm ảnh ban đầu, áp dụng kĩ thuật slicing để chọn vùng ảnh. 7. Multi stitching: Để ghép nhiều ảnh lại với nhau, chúng em chia list ảnh ban đầu thành 2 list con là left và right. Lấy bức ảnh ở giữa làm mốc (dst_img) rồi đi ghép với từng ảnh mỗi list. Mỗi lần ghép thì pop 2 ảnh ra rồi push ảnh kết quả ghép được vào. Đến khi còn 1 ảnh thì dừng. Cuối cùng thu được left-panorama và right-panorama đem 2 ảnh này ghép với nhau thu được ảnh hoàn chỉnh.
Kết quả:
IV. Tài liệu tham khảo: http://graphics.cs.cmu.edu/courses/15-463/2010_spring/Lectures/blending.pdf https://www.pyimagesearch.com/2016/01/11/opencv-panorama-stitching/ https://kipalog.com/posts/Dung-RANSAC-de-loai-bo-nhieu-trong-mo-hinh https://opencv-python- tutroals.readthedocs.io/en/latest/py_tutorials/py_feature2d/py_matcher/py_mat cher.html