TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

94 491 6
TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤTCHƯƠNG 1: KỸ THUẬT BIẾN ĐỔI ẢNH SỐ CƠ BẢN1.1. Giới thiệu 1.1.1. Kiến thức cơ bản a. Ảnh kĩ thuật số (Digital image) b. Độ phân giải của ảnh (Resolution) c. Điểm ảnh (Pixel) d. Mức xám của ảnh (Grayscale) e. Ảnh màu 1.1.2. Hướng dẫn lập trình OpenCVPython1.2. Lập trình các phép biến đổi cơ bản của ảnh 1.2.1. Các phép xuất nhập ảnh và video a. Đọc hiển thị ảnh và ghi ảnh trong OpenCV b. Hiển thị ảnh bằng matplotlib c. Mở lưu từ camera và phát video 1.2.2. Các phép biến đổi và vẽ hình cơ bản a. Vẽ hình cơ bản b. Các phép biến đổi cơ bản 1.2.3. Các phép toán đại số trên ảnh 1.2.4. Các phép toán logic trên ảnh 1.3. Lập trình các phép toán tiền xử lý ảnh 1.3.1. Lọc ảnh là gì 1.3.2. Nguyên lý hoạt động của lọc ảnh 1.3.3. Lọc chập (Convolution) 1.3.4. Làm mờ ảnh (Blur) 1.3.5. Lập trình ứng dụng các phép lọc ảnh a. Lọc tuyến tính b. Biến đổi Fourier 1.3.6. Các phép nổi biên a. Hàm sử dụng b. Lọc Laplace và Sobel làm nổi biên c. Biến đổi ảnh Pyramids 1.3.7. Các phép biến đổi hình thái học1.4. Bài tập áp dụng CHƯƠNG 2: TRÍCH RÚT ĐẶC TRƯNG2.1. Phân đoạn theo biên ảnh 2.1.1. Giới thiệu phân đoạn ảnh 2.1.2. Một vài ứng dụng cụ thể trong phân vùng ảnh 2.1.3. Thuật toán phân vùng ảnh sử dụng hàm tìm đường đồng mức (Contours) 2.1.4. Bài tập mở rộng2.2. Phân đoạn ảnh theo ngưỡng 2.2.1. Phân vùng theo ngưỡng biên độ a. Dựa vào đặc tính vật lý của ảnh, có nhiều kỹ thuật phân vùng b. Việc chọn ngưỡng rất quan trọng, gồm các bước c. Ví dụ 2.2.2. Phân vùng ảnh bằng cách khoanh vùng với đường bao nhỏ nhất 2.2.3. Bài tập mở rộng2.3. Phân đoạn ảnh theo màu đồng nhất 2.3.1. Giới thiệu 2.3.2. Phân đoạn dùng thuật toán watershed 2.3.3. Phân đoạn loại nền dùng thuật toán grabCut a. Giới thiệu b. GrabCut Foreground c. Hướng dẫn 2.3.4. Thuật toán grabCut 2.3.5. Phát hiện góc (Corner Detection ) a. Tìm góc cạnh dùng thuật toán ShiTomasi 2.3.6. Bài tập mở rộng2.4. Trích chọn đặc trưng ảnh 2.4.1. Trích chọn đặc trưng dùng thuật toán SIFT (ScaleInvariant Feature Transform) a. Các bước thực hiện thuật toán SIFT b. Phát hiện các điểm cực trị ScaleSpace c. Định vị điểm nổi bật d. Xác định hướng cho các điểm nổi bật e. Mô tả các điểm nổi bật 2.4.2. Thuật toán SIFT2.5. Bài tập áp dụng a. Rút trích đặc trưng ảnh b. Tìm đường bao ảnh c. Cắt ảnh loại bỏ nền sử dụng mặt nạCHƯƠNG 3: PHÁT HIỆN ĐỐI TƯỢNG3.1. Hiệu chuẩn camera 3.1.1. Hiệu chuẩn webcam 3.1.2. Thuật toán chuẩn hóa camera3.2. Lập trình ứng dụng tìm xác định đối tượng trên ảnh 3.2.1. Xác định trọng tâm và đường bao của blob trên ảnh a. Blob là gì? b. Hoạt động để phát hiện Blob c. Lọc Blobs theo màu sắc, kích thước và hình dạng 3.2.2. Thuật toán xác định trọng tâm blob trên ảnh 3.2.3. Thuật toán xác định trọng tâm và đường bao blob trên ảnh3.3. Phát hiên đối tượng dùng biến đổi Hough 3.3.1. Phát hiện đường thẳng dùng phương pháp houghline 3.3.2. Khái niệm cơ bản về phương pháp Houghline 3.3.3. Hoạt động của phương pháp Houghline 3.3.4. Thí dụ về biến đổi Hough 3.3.5. Các ứng dụng của biến đổi Hough 3.3.6. Thuật toán biến đổi Hough 3.3.7. Bài tập mở rộng3.4. Khôi phục ảnh 3.4.1. Khôi phục ảnh bằng cách khử nhiễu 3.4.2. Kỹ thuật khôi phục ảnh Inpainting 3.4.3. Khôi phục ảnh HDR (High Dynamic Range)3.5. Bài tập áp dụngCHƯƠNG 4: NHẬN DẠNG ĐỐI TƯỢNG4.1. Nhận dạng sự giống nhau ảnh dùng phương pháp ánh xạ ảnh 4.1.1. Giới thiệu về nhận dạng đối tượng 4.1.2. Ánh xạ ảnh 4.1.3. Nhận dạng theo phương pháp ánh xạ Brute force với mô tả đặc trưng ORB 4.1.4. Ánh xạ theo mô tả đặc trưng SIFT 4.1.5. Bài tập mở rộng4.2. Nhận dạng đối tượng theo đường hình học 4.2.1. Nhận dạng theo đường hình học Epipolar 4.2.2. Xoay ảnh dựa vào đặc trưng cơ bản 4.2.3. Bài tập mở rộng4.3. Nhận dạng đối tượng theo cấu trúc 4.3.1. Nhận diện gương mặt sử dụng Haarcascade trên OpenCVCHƯƠNG 5: PHÁT HIỆN ĐỐI TƯỢNG5.1. Giới thiệu phân tích dữ liệu và nhận dạng mẫu 5.1.1. Nhận dạng mẫu 5.1.2. Thuật toán kNN5.2. Tìm và phát hiện chuyển động của đối tượng5.3. Tìm và phát hiện chuyển động theo hình học lập thể 5.3.2. Thuật toán xác định độ sâu ảnh5.4. Thuật toán khử nhiễu cục bộ để loại bỏ nhiễu trong ảnh 5.4.1. Giới thiệu hàm khử nhiễu cục bộ 5.4.2. Thuật toán loại nhiễu cục bộ

CHƯƠNG 1: KỸ THUẬT BIẾN ĐỔI ẢNH SỐ CƠ BẢN 1.1 Giới thiệu 1.1.1 Kiến thức a Ảnh kĩ thuật số (Digital image) b Độ phân giải ảnh (Resolution) c Điểm ảnh (Pixel) d Mức xám ảnh (Grayscale) e Ảnh màu 1.1.2 Hướng dẫn lập trình OpenCV-Python 1.2 Lập trình phép biến đổi ảnh 1.2.1 Các phép xuất nhập ảnh video a Đọc - hiển thị ảnh ghi ảnh OpenCV b Hiển thị ảnh matplotlib c Mở - lưu từ camera phát video 1.2.2 Các phép biến đổi vẽ hình a Vẽ hình b Các phép biến đổi 1.2.3 Các phép toán đại số ảnh 1.2.4 Các phép toán logic ảnh 1.3 Lập trình phép tốn tiền xử lý ảnh 1.3.1 Lọc ảnh 1.3.2 Nguyên lý hoạt động lọc ảnh 1.3.3 Lọc chập (Convolution) 1.3.4 Làm mờ ảnh (Blur) 1.3.5 Lập trình ứng dụng phép lọc ảnh a Lọc tuyến tính b Biến đổi Fourier 1.3.6 Các phép biên a Hàm sử dụng b Lọc Laplace Sobel làm biên c Biến đổi ảnh Pyramids 1.3.7 Các phép biến đổi hình thái học 1.4 Bài tập áp dụng CHƯƠNG 2: TRÍCH RÚT ĐẶC TRƯNG 2.1 Phân đoạn theo biên ảnh 2.1.1 Giới thiệu phân đoạn ảnh 2.1.2 Một vài ứng dụng cụ thể phân vùng ảnh 2.1.3 Thuật toán phân vùng ảnh sử dụng hàm tìm đường đồng mức (Contours) 2.1.4 Bài tập mở rộng 2.2 Phân đoạn ảnh theo ngưỡng 2.2.1 Phân vùng theo ngưỡng biên độ a Dựa vào đặc tính vật lý ảnh, có nhiều kỹ thuật phân vùng b Việc chọn ngưỡng quan trọng, gồm bước c Ví dụ 2.2.2 Phân vùng ảnh cách khoanh vùng với đường bao nhỏ 2.2.3 Bài tập mở rộng 2.3 Phân đoạn ảnh theo màu đồng 2.3.1 Giới thiệu 2.3.2 Phân đoạn dùng thuật toán watershed 2.3.3 Phân đoạn loại dùng thuật toán grabCut a Giới thiệu b GrabCut Foreground c Hướng dẫn 2.3.4 Thuật tốn grabCut 2.3.5 Phát góc (Corner Detection ) a Tìm góc cạnh dùng thuật tốn Shi-Tomasi 2.3.6 Bài tập mở rộng 2.4 Trích chọn đặc trưng ảnh 2.4.1 Trích chọn đặc trưng dùng thuật tốn SIFT (Scale-Invariant Feature Transform) a Các bước thực thuật toán SIFT b Phát điểm cực trị Scale-Space c Định vị điểm bật d Xác định hướng cho điểm bật e Mô tả điểm bật 2.4.2 Thuật toán SIFT 2.5 Bài tập áp dụng a Rút trích đặc trưng ảnh b Tìm đường bao ảnh c Cắt ảnh loại bỏ sử dụng mặt nạ CHƯƠNG 3: PHÁT HIỆN ĐỐI TƯỢNG 3.1 Hiệu chuẩn camera 3.1.1 Hiệu chuẩn webcam 3.1.2 Thuật tốn chuẩn hóa camera 3.2 Lập trình ứng dụng tìm xác định đối tượng ảnh 3.2.1 Xác định trọng tâm đường bao blob ảnh a Blob gì? b Hoạt động để phát Blob c Lọc Blobs theo màu sắc, kích thước hình dạng 3.2.2 Thuật tốn xác định trọng tâm blob ảnh 3.2.3 Thuật toán xác định trọng tâm đường bao blob ảnh 3.3 Phát hiên đối tượng dùng biến đổi Hough 3.3.1 Phát đường thẳng dùng phương pháp houghline 3.3.2 Khái niệm phương pháp Houghline 3.3.3 Hoạt động phương pháp Houghline 3.3.4 Thí dụ biến đổi Hough 3.3.5 Các ứng dụng biến đổi Hough 3.3.6 Thuật toán biến đổi Hough 3.3.7 Bài tập mở rộng 3.4 Khôi phục ảnh 3.4.1 Khôi phục ảnh cách khử nhiễu 3.4.2 Kỹ thuật khôi phục ảnh Inpainting 3.4.3 Khôi phục ảnh HDR (High Dynamic Range) 3.5 Bài tập áp dụng CHƯƠNG 4: NHẬN DẠNG ĐỐI TƯỢNG 4.1 Nhận dạng giống ảnh dùng phương pháp ánh xạ ảnh 4.1.1 Giới thiệu nhận dạng đối tượng 4.1.2 Ánh xạ ảnh 4.1.3 Nhận dạng theo phương pháp ánh xạ Brute force với mô tả đặc trưng ORB 4.1.4 Ánh xạ theo mô tả đặc trưng SIFT 4.1.5 Bài tập mở rộng 4.2 Nhận dạng đối tượng theo đường hình học 4.2.1 Nhận dạng theo đường hình học Epipolar 4.2.2 Xoay ảnh dựa vào đặc trưng 4.2.3 Bài tập mở rộng 4.3 Nhận dạng đối tượng theo cấu trúc 4.3.1 Nhận diện gương mặt sử dụng Haar-cascade OpenCV CHƯƠNG 5: PHÁT HIỆN ĐỐI TƯỢNG 5.1 Giới thiệu phân tích liệu nhận dạng mẫu 5.1.1 Nhận dạng mẫu 5.1.2 Thuật tốn k-NN 5.2 Tìm phát chuyển động đối tượng 5.3 Tìm phát chuyển động theo hình học lập thể 5.3.2 Thuật toán xác định độ sâu ảnh 5.4 Thuật toán khử nhiễu cục để loại bỏ nhiễu ảnh 5.4.1 Giới thiệu hàm khử nhiễu cục 5.4.2 Thuật toán loại nhiễu cục KỸ THUẬT BIẾN ĐỔI ẢNH SỐ CƠ BẢN 1.1 Giới thiệu 1.1.1 Kiến thức a Ảnh kĩ thuật số (Digital image) Ảnh kĩ thuật số (digital image) dạng biểu diễn ảnh dạng ma trận số chiều Tùy vào độ phân giải ảnh có cố định hay khơng, ảnh kĩ thuật số chia làm loại ảnh vector (độ phân giải không cố định) ảnh raster (hay gọi bitmapped, độ phân giải cố định) Thuật ngữ ảnh kĩ thuật số thường dùng để nói đến ảnh raster b Độ phân giải ảnh (Resolution) Độ phân giải ảnh mức độ chi tiết mà ảnh thể Thuật ngữ dùng cho ảnh raster Độ phân giải cao, ảnh nhiều chi tiết Ví dụ: độ phân giải 640 x 480 c Điểm ảnh (Pixel) Trong ảnh kĩ thuật số, điểm ảnh (pixel) phần tử nhỏ ảnh raster (raster image) Mỗi điểm ảnh mẫu (sample) ảnh Càng nhiều điểm ảnh, ảnh kĩ thuật số biểu diễn xác nội dung ảnh gốc Đặc trưng điểm ảnh gồm thành phần: tọa độ (x,y) cường độ sáng (intensity) d Mức xám ảnh (Grayscale) Mức xám ảnh (greyscale) giá trị số điểm ảnh biểu diễn mức độ ánh sáng (light intensity) điểm ảnh Thơng thường, xử lý ảnh tại, mức xám hay sử dụng mức 256 (có giá trị mức xám từ → 255) e Ảnh màu Để biểu diễn ảnh màu, theo cách biểu diễn RGB, ba ma trận mức xám 256, ứng với ba màu đỏ (R), lục (G), lam(B) sử dụng Màu sắc điểm ảnh định giá trị cường độ (intensity) ba ma trận màu tọa độ 1.1.2 Hướng dẫn lập trình OpenCV-Python Để lập trình ứng dụng OpenCV vào thị giác máy tính ta cần hiểu lệnh, hàm, thư viện… OpenCV, sau chương trình đơn giản dùng ngơn ngữ python sử dụng thư viện OpenCV import cv2 img = cv2.imread('MyPictures/opencv-logo.png', 1) cv2.imshow('example', img) cv2.waitKey(0) cv2.destroyAllWindows() − import cv2: Để sử dụng OpenCV, bước đầu tiên, ta cần phải khai báo thư viện OpenCV dòng lệnh import cv2 − imread: Để đọc ảnh từ file vào, OpenCV hỗ trợ hàm imread với tham số đầu vào đường dẫn đến file chế độ màu ảnh ảnh xám ảnh màu − imshow: Để hiển thị ảnh ngồi hình, ta sử dụng hàm imshow OpenCV hỗ trợ với tham số thứ tên cửa sổ ảnh tham số thứ hai nội dung ảnh − cv2.waitKey(0): Sau hiển thị nội dung ảnh, lệnh cv2.waitKey(0), chương trình chờ người dùng nhấn phím khỏi chương trình − cv2.destroyAllWindows(): Xóa tất cửa sổ không tạo thay đổi code Các cửa sổ bị xóa code hồn thành việc thực thi, có chương trình lớn sau có số dịng code khác chạy, cửa sổ mở Vì vậy, ln ln đặt vào cuối chương trình 1.2 Lập trình phép biến đổi ảnh 1.2.1 Các phép xuất nhập ảnh video a Đọc - hiển thị ảnh ghi ảnh OpenCV • Hàm sử dụng retval=cv.imread(filename[, flags]) retval, mats=cv.imreadmulti(filename[, mats[, flags]]) • Code mẫu: Sinh viên chạy code tìm hiểu câu lệnh import numpy as np import cv2 img = cv2.imread('MyPictures/opencv-logo.png', cv2.IMREAD_GRAYSCALE) cv2.namedWindow('image', cv2.WINDOW_NORMAL) cv2.imshow('image', img) k = cv2.waitKey(0) if k == 27: cv2.destroyAllWindows() elif k == ord('s'): cv2.imwrite('opencv_logo_gray.png', img) cv2.destroyAllWindows() • Bài tập mở rộng − Dựa vào code mẫu khảo sát lại lệnh để đưa kết nhận xét khác biệt + Trong lệnh imread() cv2.IMREAD_GRAYSCALE thay cv2.IMREAD_COLOR, cv2.IMREAD_UNCHANGED Chú ý tìm hiểu cách thay 0, 1, -1 + Trong lệnh namedWindow() cv2.WINDOW_NORMAL thay cv2.WINDOW_AUTOSIZE, cv2.WINDOW_KEEPRATIO − Tìm hiểu thêm câu lệnh sau thực chương trình kết img = cv2.resize(img, (640, 480)) rows,cols,ch=img.shape print('row/col:',rows,'Column/width:',cols,'aisle:',ch) retval2,threshold2=cv2.threshold(grayscaled,125,255, cv2.THRESH_OTSU); cv2.THRESH_BINARY+ Thay hàm cv2.THRESH_BINARY; cv2.THRESH_BINARY_INV cv2.THRESH_TRUNC; cv2.THRESH_TOZERO; cv2.THRESH_OTSU kết hợp hàm với cv2.THRESH_TOZERO_INV, th=cv2.adaptiveThreshold(grayscaled,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 115, 1) Thay hàm cv2.ADAPTIVE_THRESH_MEAN_C → Nhận xét kết thêm thay lệnh hàm b Hiển thị ảnh matplotlib • Hàm sử dụng − Cách thứ plt.imshow(img, cmap = 'gray', interpolation = 'bicubic') plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis plt.show() − Cách thứ hai plt.subplot(231), plt.imshow(img1, 'gray'), plt.title('ORIGINAL') plt.subplot(232), plt.imshow(replicate, 'gray'), plt.title('REPLICATE') plt.subplot(233), plt.imshow(reflect, 'gray'), plt.title('REFLECT') plt.subplot(234), plt.imshow(reflect101, 'gray'), plt.title('REFLECT_101') plt.subplot(235), plt.imshow(wrap, 'gray'), plt.title('WRAP') plt.subplot(236), plt.imshow(constant, 'gray'), plt.title('CONSTANT') plt.show() − Cách thứ ba axes[0].imshow(img) axes[0].set_title('origin') axes[1].imshow(edge_img) axes[1].set_title('result') plt.show() • Code mẫu: Sinh viên chạy code tìm hiểu câu lệnh − Code import matplotlib.pyplot as plt import numpy as np x = np.linspace(-20, 20, 1000) y = x * x plt.plot([-4, -3, -2, -1, 0, 1, 2, 3, 4], [16, 9, 4, 1, 0, 1, 4, 9, 16]) plt.plot(x, y) plt.show() plt.show(x,y) − Code import numpy as np import cv2 from matplotlib import pyplot as plt img = cv2.imread('MyPictures/drawing.png',0) plt.imshow(img, cmap = 'gray', interpolation = 'bicubic') plt.xticks([]), plt.yticks([]) plt.show() • Bài tập mở rộng − Dựa vào code mẫu khảo sát lại lệnh để đưa kết khác biệt + Áp dụng lại với hàm ngưỡng ngưỡng thích nghi mục a để kiểm tra lại + Sử dụng thêm hàm sau M = cv2.getPerspectiveTransform(pts1, pts2) dst = cv2.warpPerspective(img, M, (300, 300)) M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 45, 0.6) res = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC) → Nhận xét kết thêm thay lệnh hàm c Mở - lưu từ camera phát video • Hàm sử dụng − Mở camera cap = cv.VideoCapture(0) − Phát video cap = cv.VideoCapture('vtest.avi') − Lưu video từ camera fourcc = cv.VideoWriter_fourcc(*'XVID') out = cv.VideoWriter('output.avi',fourcc, 20.0, (640,480)) • Mở camera − Code mẫu: Sinh viên chạy code tìm hiểu câu lệnh import numpy as np import cv2 as cv cap = cv.VideoCapture(0) while(True): ret, frame = cap.read() gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY) cv.imshow('frame',gray) if cv.waitKey(1) & 0xFF == ord('q'): break cap.release() cv.destroyAllWindows() − Bài tập mở rộng frame_height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT) frame_width = cap.get(cv2.CAP_PROP_FRAME_WIDTH) frame_height=int(480/frame_width*frame_height) ret = cap.set(cv2.CAP_PROP_FRAME_HEIGHT, frame_height) ret = cap.set(cv2.CAP_PROP_FRAME_WIDTH, 480) − Sinh viên tìm hiểu để thay đổi chương trình cho camera hiển thị ảnh màu với kích thước khung ảnh giá trị khác (320x240) → Nhận xét kết thêm thay lệnh hàm • Lưu video từ camera − Code mẫu: Sinh viên chạy code tìm hiểu câu lệnh import numpy as np import cv2 as cv cap = cv.VideoCapture(0) fourcc = cv.VideoWriter_fourcc(*'XVID') out = cv.VideoWriter('output.avi',fourcc, 20.0, (640,480)) while(cap.isOpened()): ret, frame = cap.read() if ret==True: frame = cv.flip(frame,0) out.write(frame) cv.imshow('frame',frame) if cv.waitKey(1) & 0xFF == ord('q'): break else: break cap.release() out.release() cv.destroyAllWindows() − Bài tập mở rộng + Thay đổi code cho ảnh quay thuận ngược hình + Tìm hiểu cách thay đổi để lưu video phần mở rộng khác *.avi + Tìm hiểu lệnh áp dụng vào code frame = cv2.resize(frame, (width, height)) → Nhận xét kết thêm thay lệnh hàm • Phát video − Code mẫu: Sinh viên chạy code tìm hiểu câu lệnh import numpy as np import cv2 as cv cap = cv.VideoCapture('MyPictures/vtest.avi') while(cap.isOpened()): 4.3 Nhận dạng đối tượng theo cấu trúc 4.3.1 Nhận diện gương mặt sử dụng Haar-cascade OpenCV Nhận diện khuôn mặt kỹ thuật thị giác máy tính giúp chùng ta xác định khuôn mặt người ảnh kỹ thuật số Kỹ thuật sử dụng trực tiết phương pháp phát đối tượng liên quan đến việc phát đối tượng theo ngữ nghĩa lớp định (như người, tịa nhà tơ) ảnh video kỹ thuật số Với đời công nghệ, nhận diện khuôn mặt đạt nhiều tầm quan trọng, đặc biệt lĩnh vực nhiếp ảnh, bảo mật tiếp thị a Phân loại dựa đặc trưng Haar Các đặc trưng Haar đặc trưng ảnh kỹ thuật số sử dụng nhận dạng đối tượng Harr giống họ wavelet Haar sử dụng phát khuôn mặt thời gian thực Paul Viola Michael Jones báo họ có tiêu đề "Phát đối tượng nhanh cách sử dụng tính đơn giản" sử dụng ý tưởng phân loại tính Haar dựa bước sóng Haar Phân loại sử dụng rộng rãi cho ứng dụng phát khuôn mặt ngành cơng nghiệp thị giác máy tính Phân loại Haar sử dụng phương pháp học máy để phát đối tượng trực quan có khả xử lý hình ảnh nhanh chóng đạt tỷ lệ phát cao Điều quy cho ba lý chính: − Phân loại Haar sử dụng khái niệm 'Hình ảnh tích hợp' cho phép đặc trưng sử dụng phép tìm kiếm tính tốn nhanh − Thuật tốn học dựa AdaBoost, chọn số lượng nhỏ đặc trưng quan trọng từ tập liệu lớn tạo phân loại hiệu cao 76 − Các phân loại phức tạp kết hợp để tạo thành ' tầng ' để loại bỏ vùng khơng có hình ảnh, tiêu tốn nhiều tính tốn cho vùng giống b Hoạt động thuật tốn hình ảnh theo bước: − Trích xuất đặc trưng Haar Sau lượng liệu huấn luyện lớn (dưới dạng hình ảnh) đưa vào hệ thống, phân loại bắt đầu trích xuất đặc trưng Haar từ hình ảnh Các đặc trưng Haar trích xuất dạng tích chập, chủ yếu phát xem đặc trưng phù hợp có xuất hình ảnh hay khơng Ví dụ đặc trưng Haar trình bày Hình 4.4: Trích xuất đặc trưng Haar Các đặc trưng Haar giống cửa sổ đặt hình ảnh để tính tốn đặc trưng Đặc trưng thực chất giá trị thu cách trừ tổng số pixel vùng trắng màu đen Quá trình dễ dàng nhận thấy ví dụ Hình 4.5: Kết trích xuất đặc trưng Đối với mục đích trình diễn, giả sử trích xuất hai đặc trưng, có hai cửa sổ Đặc điểm dựa vào điểm vùng mắt tối vùng má vùng mũi liền kề Đặc điểm thứ hai tập trung vào thực tế đôi mắt tối so với sống mũi Do cửa sổ đặc trưng di chuyển qua mắt, tính giá trị Giá trị sau so sánh với số ngưỡng vượt qua kết luận có cạnh số đặc trưng phát 77 − Khái niệm ảnh tích hợp Thuật tốn Viola Jones đề xuất sử dụng kích thước cửa sổ sở 24x24 điều dẫn đến 180.000 tính tính tốn cửa sổ Nếu ta tính toán khác biệt pixel cho tất đặc trưng? Giải pháp đưa cho quy trình tính toán sử dụng khái niệm Integral Image Ảnh tích hợp có nghĩa để tìm tổng tất pixel hình chữ nhật nào, cần bốn giá trị gốc Hình 4.6: Ảnh tích hợp Điều có nghĩa là, để tính tổng số pixel cửa sổ đặc trưng nào, không cần phải tổng hợp chúng riêng lẻ Tất cần tính tốn hình ảnh tích phân giá trị góc Ví dụ làm rõ vấn đề Hình 4.7: Kết tính tốn ảnh tích hợp − Cải thiện độ xác phân loại Adaboost Như trình bày trên, 180.000 giá trị đặc trưng đưa kết cửa sổ 24x24 Tuy nhiên, tất đặc trưng hữu ích để xác định khuôn mặt Để chọn đặc trưng tốt tồn khối, thuật tốn học máy có tên Adaboost sử dụng Về chọn đặc trưng giúp cải thiện độ xác cho việc phân loại Nó thực cách xây dựng phân loại mạnh kết hợp tuyến tính số phân loại yếu Điều làm giảm đáng kể số lượng đặc trưng xuống khoảng 6000 từ khoảng 180.000 − Sử dụng 'Cascade of Classifier' Một cách khác mà Viola Jones đảm bảo thuật toán thực nhanh sử dụng loạt phân loại Phân loại tầng bao gồm giai đoạn giai đoạn bao gồm phân loại mạnh Điều có lợi loại bỏ cần thiết phải áp dụng tất đặc trưng lúc cửa sổ Thay vào chúng nhóm đặc trưng 78 thành cửa sổ phụ riêng biệt thực phân loại giai đoạn xác định xem cửa sổ phụ có phải gương mặt hay khơng Trong trường hợp không phải, cửa sổ phụ bị loại bỏ với đặc trưng cửa sổ Nếu cửa sổ phụ di chuyển qua phân loại, tiếp tục đến giai đoạn nơi áp dụng giai đoạn thứ hai đặc trưng Q trình mơ tả qua sơ đồ Hình 4.8: Cấu trúc tầng cho phân loại Haar Code mẫu: Sinh viên chạy code tìm hiểu câu lệnh import numpy as np import cv2 as cv face_cascade = cv.CascadeClassifier(Mydata/haarcascade_frontalface_default.xml') img = cv.imread('/MyPictures/lena.jpg') gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 5) for (x,y,w,h) in faces: cv.rectangle(img,(x,y),(x+w,y+h),(255,0,0),4) roi_gray = gray[y:y+h, x:x+w] roi_color = img[y:y+h, x:x+w] cv.imshow('img',img) cv.waitKey(0) cv.destroyAllWindows() 4.3.2 Bài tập mở rộng − Viết chương trình sử dụng kỹ thuật nhận diện nhiều khuôn mặt đôi mắt dựa phân loại đặc trưng Haar OpenCV có kết gợi ý 79 4.4 Bài tập áp dụng − Viết chương trình sử dụng kỹ thuật nhận diện nhiều khn mặt dựa phân loại đặc trưng Haar (haarcascade_frontalface_default.xml) OpenCV từ camera − Viết chương trình sử dụng kỹ thuật nhận diện đôi mắt theo thời gian thực dựa phân loại đặc trưng Haar camera (mallick_haarcascade_frontalface_default.xml) OpenCV từ − Viết chương trình sử dụng kỹ thuật đặt mặt nạ lên gương mặt người theo thời gian thực dựa phân loại đặc trưng Haar (mallick_haarcascade_frontalface_default.xml) OpenCV từ camera − Viết chương trình sử dụng kỹ thuật phát gương mặt theo thời gian thực dựa phân loại đặc trưng Haar (mallick_haarcascade_frontalface_default.xml) OpenCV in số gương mặt phát hình từ camera 80 PHÁT HIỆN ĐỐI TƯỢNG 5.1 Giới thiệu phân tích liệu nhận dạng mẫu 5.1.1 Nhận dạng mẫu Trong nhận dạng mẫu , thuật toán lân cận k - gần ( k -NN ) phương pháp không tham số sử dụng để phân loại hồi quy Trong hai trường hợp, đầu vào ví dụ gồm tập liệu huấn luyện k gần không gian đặc trưng Đầu phụ thuộc vào việc k -NN sử dụng để phân loại hay hồi quy: Trong phân loại k-NN, đầu mối quan hệ lớp Một đối tượng phân loại theo chọn lựa đa số lân cận, với đối tượng gán cho lớp phổ biến số k lân cận gần ( k số nguyên dương, thường nhỏ) Nếu k = 1, đối tượng gán cho lớp lận cận gần Trong hồi quy k-NN , đầu giá trị thuộc tính đối tượng Giá trị giá trị trung bình giá trị k lân cận gần k -NN thuật tốn học có nhớ, học theo cách khái quát liệu huấn luyện, hàm gần cục tất tính tốn trì phân loại Thuật toán k -NN thuật toán đơn giản tất thuật toán học máy Trong hai loại k -NN phân loại hồi quy kỹ thuật hữu ích sử dụng để gán trọng số cho phân bố lân cận, lân cận gần góp phần nhiều vào mức trung bình so với lân cận xa Ví dụ, sơ đồ trọng số phổ biến bao gồm lân cận có trọng số 1/d , d khoảng cách đến hàng xóm Các lân cận lấy từ tập hợp đối tượng mà lớp (đối với phân loại k -NN) giá trị thuộc tính đối tượng (đối với hồi quy k -NN) biết đến Điều coi tập huấn luyện cho thuật tốn, khơng u cầu bước huấn luyện rõ ràng Một điểm đặc biệt thuật toán k -NN nhạy với cấu trúc cục liệu 5.1.2 Thuật toán k-NN − Code mẫu: Sinh viên chạy code tìm hiểu câu lệnh để nội suy hoạt động thuật toán import cv2 81 import numpy as np import matplotlib.pyplot as plt trainData = np.random.randint(0, 100, (25, 2)).astype(np.float32) responses = np.random.randint(0, 2, (25, 1)).astype(np.float32) red = trainData[responses.ravel() == 0] plt.scatter(red[:, 0], red[:, 1], 80, 'r', '^') blue = trainData[responses.ravel() == 1] plt.scatter(blue[:, 0], blue[:, 1], 80, 'b', 's') plt.show() plt.scatter(newcomer[:, 0], newcomer[:, 1], 80, 'g', 'o') knn = cv2.ml.KNearest_create() knn.train(trainData, cv2.ml.ROW_SAMPLE, responses) ret, results, neighbours, dist = knn.findNearest(newcomer, 3) print("result: ", results, "\n") print("neighbours: ", neighbours, "\n") print("distance: ", dist) plt.show() newcomers = np.random.randint(0, 100, (10, 2)).astype(np.float32) ret, results, neighbours, dist = knn.findNearest(newcomer, 3) 5.1.3 Bài tập mở rộng Viết chương trình sử dụng thuật toán k -NN in kết kết nhóm liệu khoảng cách gần có kết gợi ý 5.2 Tìm phát chuyển động đối tượng 5.2.1 Chuyển động 82 Motion thuộc tính quan trọng video Thơng tin chuyển động sinh kỹ thuật ghép khối luồng ánh sáng Các đặc trưng chuyển động mô men trường chuyển động, biểu đồ chuyển động tham số chuyển động tồn cục trích chọn từ vectơ chuyển động Các đặc trưng mức cao phản ánh di chuyển camera quét camera (pan), nghiêng (tilt), phóng to (zoom out), thu nhỏ (zoom in) trích chọn 5.2.2 Phát đối tượng chuyển động Đó trình đưa vết đối tượng chuyển động từ khung hình video Quá trình thực chất trình xử lý chuỗi ảnh liên tiếp đoạn video để phát đối tượng chuyển động đoạn hình ảnh theo mơ hình Hình 5.1: Tổng quan khối xử lý toán phát đối tượng 5.2.3 Thuật toán Camshift meanshift − Code mẫu thuật toán camshift: Sinh viên chạy code tìm hiểu câu lệnh import numpy as np import cv2 cap = cv2.VideoCapture('Myvideo/slow.flv') ret, frame = cap.read() r, h, c, w = 250, 90, 400, 125 track_window = (c, r, w, h) roi = frame[r:r + h, c:c + w] hsv_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV) mask = cv2.inRange(hsv_roi, np.array((0., 60., 32.)), np.array((180., 255., 255.))) roi_hist = cv2.calcHist([hsv_roi], [0], mask, [180], [0, 180]) cv2.normalize(roi_hist, roi_hist, 0, 255, cv2.NORM_MINMAX) 83 term_crit = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1) while True: ret, frame = cap.read() if ret is True: hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) dst = cv2.calcBackProject([hsv], [0], roi_hist, [0, 180], 1) ret, track_window = cv2.CamShift(dst, track_window, term_crit) pts = cv2.boxPoints(ret) pts = np.int0(pts) print('len pts:', len(pts),pts) img2 = cv2.polylines(frame, [pts], True, (255, 0, 0), 2) cv2.imshow('img2', img2) k = cv2.waitKey(1) if k == 27: break else: break cv2.destroyAllWindows() cap.release() − Code mẫu thuật toán meanshift: Sinh viên chạy code tìm hiểu câu lệnh import numpy as np import cv2 cap = cv2.VideoCapture('Myvideo/slow.flv') ret, frame = cap.read() r, h, c, w = 250, 90, 400, 125 track_window = (c, r, w, h) roi = frame[r:r + h, c:c + w] hsv_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV) mask = cv2.inRange(hsv_roi, np.array((0., 60., 32.)), np.array((180., 255., 255.))) roi_hist = cv2.calcHist([hsv_roi], [0], mask, [180], [0, 180]) cv2.normalize(roi_hist, roi_hist, 0, 255, cv2.NORM_MINMAX) term_crit = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1) while True: ret, frame = cap.read() if ret is True: hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) dst = cv2.calcBackProject([hsv], [0], roi_hist, [0, 180], 1) 84 ret, track_window = cv2.meanShift(dst, track_window, term_crit) x, y, w, h = track_window print(track_window) img2 = cv2.rectangle(frame, (x, y), (x + w, y + h), 255, 2) cv2.imshow('img2', img2) k = cv2.waitKey(60) if k == 27: break else: break cv2.destroyAllWindows() cap.release() 5.2.4 Bài tập mở rộng Viết chương trình sử dụng thuật toán Lucas – Kanade khảo sát luồng quang học chuyển động ảnh video có kết gợi ý 5.3 Tìm phát chuyển động theo hình học lập thể 5.3.1 Khái niệm Trong phần khảo sát trước, thấy khái niệm ràng buộc epipolar thuật ngữ liên quan khác Chúng ta thấy có hai ảnh cảnh, nhận thơng tin độ sâu ảnh cách trực quan Dưới hình ảnh số cơng thức tính tốn đơn giản chứng minh cảm nhận 85 Hình 5.2: Ảnh tương đương để tính khoảng cách Các hình tam giác hình vẽ tương đương Ta viết phương trình tương đương chúng cho kết sau: 𝑑𝑖𝑠𝑝𝑎𝑟𝑖𝑡𝑦 = 𝑥 − 𝑥 , = 𝐵𝑓 𝑍 x x’ khoảng cách điểm mặt phẳng ảnh tương ứng với điểm cảnh 3D tâm camera chúng B khoảng cách hai camera (đã biết trước) f độ dài tiêu cự máy ảnh (đã biết) Vì phương trình cho biết độ sâu điểm cảnh tỷ lệ nghịch với sai lệch khoảng cách điểm ảnh tương ứng tâm camera Vì lấy độ sâu tất pixel hình ảnh Khi ta tìm thấy kết tương ứng hai ảnh Ta phải làm để hạn chế epipolar nhằm làm cho hoạt động nhanh xác Một tìm thấy kết trùng khớp cách tìm chênh lệch 5.3.2 Thuật toán xác định độ sâu ảnh − Code mẫu: Sinh viên chạy code tìm hiểu câu lệnh import numpy as np import cv2 from matplotlib import pyplot as plt imgL = cv2.imread('MyPictures/tsukuba_l.png', 0) imgR = cv2.imread('MyPictures/tsukuba_r.png', 0) stereo = cv2.StereoBM_create(numDisparities=16, blockSize=15) disparity = stereo.compute(imgL, imgR) plt.imshow(disparity, 'gray') plt.show() 86 5.3.3 Bài tập mở rộng − Viết chương trình xác định độ sâu ảnh dùng thuật tốn SGBM (Semi-Global Block Matching algorithm) có kết gợi ý 5.4 Thuật toán khử nhiễu cục để loại bỏ nhiễu ảnh 5.4.1 Giới thiệu hàm khử nhiễu cục a OpenCV cung cấp bốn hàm kỹ thuật − cv.fastNlMeansDenoising (): hoạt động với hình ảnh thang độ xám − cv.fastNlMeansDenoisingColored (): hoạt động với hình ảnh màu − cv.fastNlMeansDenoisingMulti (): hoạt động với chuỗi hình ảnh chụp khoảng thời gian ngắn (ảnh thang độ xám) 87 − cv.fastNlMeansDenoisingColoredMulti (): giống trên, hình ảnh màu b Các đối số hàm − h: tham số định cường độ lọc Giá trị h cao loại bỏ nhiễu tốt hơn, loại bỏ chi tiết hình ảnh (khuyên dùng 10) − hForColorComponents: Chỉ dành cho hình ảnh màu (thường giống h) − templateWindowSize: nên số lẻ (khuyên dùng 7) − searchWindowSize: nên số lẻ (khuyên dùng 21) 5.4.2 Thuật toán loại nhiễu cục Code mẫu: Sinh viên chạy code tìm hiểu câu lệnh import numpy as np import cv2 from matplotlib import pyplot as plt img = cv2.imread('MyPictures/die.png') img = cv2.cvtColor(img, code=cv2.COLOR_BGR2RGB) dst = cv2.fastNlMeansDenoisingColored(img, None, 10, 10, 7, 21) dst2 = cv2.cvtColor(dst,code=cv2.COLOR_BGR2RGB) plt.subplot(121), plt.imshow(img) plt.subplot(122), plt.imshow(dst2) plt.show() 5.4.3 Bài tập mở rộng Viết chương trình áp dụng hàm cv2.fastNlMeansDenoisingMulti() nhằm khử nhiễu cục để loại bỏ nhiễu ảnh video có kết gợi ý 88 5.5 Bài tập áp dụng a Viết chương trình ứng dụng thuật tốn học máy − Viết chương trình tạo file nhận dạng chữ Tiếng Anh lưu tên knn_data_alphabet.npz dùng thuật toán K-NN với tập liệu huấn luyện nhận dạng chữ letterrecognition.data OCR (Optical Character Recognition) cho trước có kết gợi ý − Viết chương trình nhận dạng chữ dạng ảnh số viết tay digits.png với tập liệu nhận dạng vừa tạo (knn_data_alphabet.npz) OCR (Optical Character Recognition) cho trước có kết gợi ý − Viết chương trình nhận dạng chữ cho ảnh số chữ viết tay digits.png với tập liệu nhận (svm_data.dat) OCR (Optical Character Recognition) dùng thuật toán SVM − Viết chương trình ứng dụng thuật tốn kết nhóm K-means cho liệu có đặc trưng − Viết chương trình ứng dụng thuật tốn kết nhóm K-means cho liệu có nhiều đặc trưng − Viết chương trình xác định độ sâu ảnh dùng hàm cv2.StereoSGBM_create() − Viết chương trình lượng tử hóa ảnh màu khơng tách màu − Viết chương trình lượng tử hóa ảnh màu có tách màu − Viết chương trình sử dụng hàm cv2.calcOpticalFlowFarneback() khảo sát mật độ luồng quang học chuyển động ảnh video 89 − Viết chương trình sử dụng hàm cv2.bgsegm.createBackgroundSubtractorMOG() loại trừ ảnh video − Viết chương trình sử dụng hàm cv2.bgsegm.createBackgroundSubtractorMOG2() loại trừ ảnh camera − Viết chương trình sử dụng hàm cv2.bgsegm.createBackgroundSubtractorGMG() loại trừ ảnh camera − Viết chương trình sử dụng hàm cv2.createBackgroundSubtractorKNN() loại trừ ảnh camera − Viết chương trình tạo ảnh HDR (High dynamic range) từ nhiều ảnh số có độ sáng cao để có kết gợi ý Giải thích: High dynamic range imaging (HDRI or HDR) kỹ thuật để chụp ảnh chụp ảnh tái tạo dải động ánh sáng lớn so với ảnh chụp ảnh kỹ thuật số chuẩn Mặc dù mắt người điều chỉnh điều kiện ánh sáng khác nhau, hầu hết thiết bị hình ảnh sử dụng bit cho kênh, chúng bị giới hạn mức 256 Khi quay cảnh giới thực, vùng sáng bị sáng mức vùng tối bị thiếu sáng, khơng thể lấy tất chi tiết với lần thay đổi độ sáng Ảnh HDR sử dụng với ảnh sử dụng nhiều bit (thường 32 bit) kênh nên cho phép dải động rộng − Viết chương trình loại bỏ vết vẽ ảnh sử dụng ảnh mặt nạ dùng thuật tốn cv2.INPAINT_TELEA , cv2.INPAINT_NS có kết gợi ý Chú ý: cv2.INPAINT_TELEA: dựa thuật toán biến đổi nhanh cv2.INPAINT_NS: Dựa biến đổi động sử dụng phương trình vi phân phần 90 ... mờ ảnh, làm nét ảnh hay làm sắc nét cạnh ảnh số phép xử lý ảnh phổ biến Lọc ảnh 1.3.2 Nguyên lý hoạt động lọc ảnh Lọc phép toán thực biến đổi điểm ảnh dựa thông tin điểm ảnh xung quanh điểm ảnh. .. với ảnh màu 1.3 Lập trình phép toán tiền xử lý ảnh 1.3.1 Lọc ảnh Lọc ảnh kĩ thuật chỉnh sửa làm rõ ảnh Việc loại bỏ điểm lốm đốm ảnh cũ, hay làm nét ảnh bị nhịe, số ví dụ ứng dụng việc lọc ảnh. .. Điểm ảnh (Pixel) Trong ảnh kĩ thuật số, điểm ảnh (pixel) phần tử nhỏ ảnh raster (raster image) Mỗi điểm ảnh mẫu (sample) ảnh Càng nhiều điểm ảnh, ảnh kĩ thuật số biểu diễn xác nội dung ảnh gốc

Ngày đăng: 31/12/2021, 09:11

Hình ảnh liên quan

• Các hàm vẽ hình cơ bản - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

c.

hàm vẽ hình cơ bản Xem tại trang 12 của tài liệu.
− Ứng dụng của thuật toán GrabCut trong việc tách nền các hình ảnh. - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

ng.

dụng của thuật toán GrabCut trong việc tách nền các hình ảnh Xem tại trang 39 của tài liệu.
Hình 2.3: Thuật toán GrabCut Foreground - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

Hình 2.3.

Thuật toán GrabCut Foreground Xem tại trang 41 của tài liệu.
2.3.4. Thuật toán grabCut - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

2.3.4..

Thuật toán grabCut Xem tại trang 41 của tài liệu.
− img - một hình ảnh đến của kiểu dữ liệu float32. - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

img.

một hình ảnh đến của kiểu dữ liệu float32 Xem tại trang 44 của tài liệu.
Hình 2.6: Quá trình tính không gian đo (L) và hàm sai khác D - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

Hình 2.6.

Quá trình tính không gian đo (L) và hàm sai khác D Xem tại trang 48 của tài liệu.
Hình 2.8: Loại bỏ những điểm tương phản kém - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

Hình 2.8.

Loại bỏ những điểm tương phản kém Xem tại trang 50 của tài liệu.
Hình 2.9: Mô tả tạo bộ mô tả cục bộ - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

Hình 2.9.

Mô tả tạo bộ mô tả cục bộ Xem tại trang 52 của tài liệu.
Blob là một nhóm các pixel được kết nối trong một hình ảnh có chung một thuộc tính (Ví dụ: giá trị thang độ xám) - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

lob.

là một nhóm các pixel được kết nối trong một hình ảnh có chung một thuộc tính (Ví dụ: giá trị thang độ xám) Xem tại trang 57 của tài liệu.
tròn, giá trị này là 1, đối với hình elip nằm trong khoảng từ đế n1 và đối với đường  thẳng  là  0 - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

tr.

òn, giá trị này là 1, đối với hình elip nằm trong khoảng từ đế n1 và đối với đường thẳng là 0 Xem tại trang 59 của tài liệu.
+ Inertia Ratio: Để đo lường hình dạng kéo dài như thế nào. Ví dụ: đối với hình - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

nertia.

Ratio: Để đo lường hình dạng kéo dài như thế nào. Ví dụ: đối với hình Xem tại trang 59 của tài liệu.
− Viết chương trình tìm hình như kết quả gợi ý (chú ý kết quả được là các đường bao và tên của 5 hình dạng đơn giản)  - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

i.

ết chương trình tìm hình như kết quả gợi ý (chú ý kết quả được là các đường bao và tên của 5 hình dạng đơn giản) Xem tại trang 60 của tài liệu.
3.2.4. Bài tập mở rộng - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

3.2.4..

Bài tập mở rộng Xem tại trang 60 của tài liệu.
Hình 3.4: Biến đổi Houghline - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

Hình 3.4.

Biến đổi Houghline Xem tại trang 61 của tài liệu.
Hình 3.5: Kết quả của ví dụ biến đổi Hough - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

Hình 3.5.

Kết quả của ví dụ biến đổi Hough Xem tại trang 62 của tài liệu.
Hình 3.7: Kết quả của ví dụ nhiễu sử dụng inpainting - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

Hình 3.7.

Kết quả của ví dụ nhiễu sử dụng inpainting Xem tại trang 66 của tài liệu.
d. Bài tập mở rộng - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

d..

Bài tập mở rộng Xem tại trang 66 của tài liệu.
− Viết chương trình tìm đường tròn từ hình ảnh trên camera sử dụng biến đổi Hough theo thời gian thực sử dụng hàm HoughCircles - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

i.

ết chương trình tìm đường tròn từ hình ảnh trên camera sử dụng biến đổi Hough theo thời gian thực sử dụng hàm HoughCircles Xem tại trang 68 của tài liệu.
c. Bài tập mở rộng - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

c..

Bài tập mở rộng Xem tại trang 72 của tài liệu.
4.2. Nhận dạng đối tượng theo đường hình học 4.2.1.  Nhận dạng theo đường hình học Epipolar  - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

4.2..

Nhận dạng đối tượng theo đường hình học 4.2.1. Nhận dạng theo đường hình học Epipolar Xem tại trang 74 của tài liệu.
4.2.2. Xoay ảnh dựa vào đặc trưng cơ bản - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

4.2.2..

Xoay ảnh dựa vào đặc trưng cơ bản Xem tại trang 76 của tài liệu.
− Phân loại Haar sử dụng khái niệm 'Hình ảnh tích hợp' cho phép các đặc trưng được sử dụng bởi các phép tìm kiếm và tính toán rất nhanh - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

h.

ân loại Haar sử dụng khái niệm 'Hình ảnh tích hợp' cho phép các đặc trưng được sử dụng bởi các phép tìm kiếm và tính toán rất nhanh Xem tại trang 80 của tài liệu.
b. Hoạt động thuật toán trên hình ảnh theo các bước: - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

b..

Hoạt động thuật toán trên hình ảnh theo các bước: Xem tại trang 81 của tài liệu.
Hình 4.8: Cấu trúc tầng cho phân loại Haar. - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

Hình 4.8.

Cấu trúc tầng cho phân loại Haar Xem tại trang 83 của tài liệu.
5.2.4. Bài tập mở rộng - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

5.2.4..

Bài tập mở rộng Xem tại trang 89 của tài liệu.
5.3. Tìm và phát hiện chuyển động theo hình học lập thể - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

5.3..

Tìm và phát hiện chuyển động theo hình học lập thể Xem tại trang 89 của tài liệu.
Hình 5.2: Ảnh tương đương để tính khoảng cách - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

Hình 5.2.

Ảnh tương đương để tính khoảng cách Xem tại trang 90 của tài liệu.
− cv.fastNlMeansDenoising (): hoạt động với một hình ảnh thang độ xám duy nhất − cv.fastNlMeansDenoisingColored (): hoạt động với hình ảnh màu - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

cv.fast.

NlMeansDenoising (): hoạt động với một hình ảnh thang độ xám duy nhất − cv.fastNlMeansDenoisingColored (): hoạt động với hình ảnh màu Xem tại trang 91 của tài liệu.
− cv.fastNlMeansDenoisingMulti (): hoạt động với chuỗi hình ảnh được chụp trong khoảng thời gian ngắn (ảnh thang độ xám)  - TÀI LIỆU XỬ LÝ ẢNH (OPENCVPYTHON) ĐẦY ĐỦ NHẤT

cv.fast.

NlMeansDenoisingMulti (): hoạt động với chuỗi hình ảnh được chụp trong khoảng thời gian ngắn (ảnh thang độ xám) Xem tại trang 91 của tài liệu.

Tài liệu cùng người dùng

Tài liệu liên quan