Image stitching panorama image using opencv and deploy website using streamlit, Essays (university) of Digital Image Processing

Image stitching panorama image from image list and videos using opencv and deploy website using streamlit

Typology: Essays (university)

2022/2023

Uploaded on 12/28/2022

Huylejoo
Huylejoo 🇻🇳

1 document

1 / 14

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KHOA HC MÁY TÍNH
BÁO CÁO MÔN HC
NHP MÔN TH GIÁC MÁY TÍNH
PANORAMA
GVHD : Nguyn Vĩnh Tip
Lp: CS321.K11
Thành viên:
Nguyễn Đình Vinh- 16521582
Nguyễn Đắc Phi Hùng 16521688
Phm Th Nga 16521743
TP. H Chí Minh, tháng 1 năm 2020
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Partial preview of the text

Download Image stitching panorama image using opencv and deploy website using streamlit and more Essays (university) Digital Image Processing in PDF only on Docsity!

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA KHOA HỌC MÁY TÍNH

BÁO CÁO MÔN HỌC

NHẬP MÔN THỊ GIÁC MÁY TÍNH

PANORAMA

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

MỤC LỤC

  • I. Thư viện và kỹ thuật :………………………………………..………Trang
      1. Thư viện :…...……………………………………………………Trang
      1. Kỹ thuật :…...…………………………………………………….Trang
  • II. Phương pháp thực hiện :……………………………………………..Trang
  • III. Đánh giá và phân tích hệ thống :………………………………….....Trang
      1. Chạy thử :………………………………………...………………Trang
      1. Đánh giá :………………………………………………….……Trang
      1. Cải tiến :………………………………………………………...Trang
  • IV. Tài liệu tham khảo :………………………………………………....Trang

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

II. Phương pháp thực hiện

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)

3. Ghép các điểm tương đồng, sử dụng k-NN với k=2 để chọn ra 2

kết quả tốt nhất, sau đó áp dụng Lowe’s ratio = 0.75 để loại bỏ

các kết quả không hợp lệ

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.

  • Bộ 3: Kết quả:
  • Bộ 4

Kết quả:

  • Các kết quả chưa tốt, góc chụp lệch nhiều, điểm chung ít từ 10~15%, điều kiện chiếu sáng khác nhau - Bộ 1: Kết quả:
  • Thêm chức năng tạo ảnh panorama 360 từ hàm của openCV (cv2.createStitcher) cùng với các kĩ thuật để crop ảnh panorama 360 này
  • Hàm tạo ảnh panorama 360 này có tốc độ xử lí nhanh hơn, ánh sáng, điều kiện chụp cũng như góc chụp có độ lệch lớn cũng xử lí khá tốt và số lượng ảnh đầu vào cũng nhiều hơn. Panorama tạo bởi cv2.createStitcher (trên) so với hàm tự định nghĩa (dưới bị kéo dãn 2 đầu)

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