Đối tượng chính của OpenCV đó là các ứng dụng theo thời gian thực real-time applications.Ưu điểm OpenCV đó là nó cung cấp hơn 2.500 thuật toán cổ điển và hiện đại, tất cảđều được tối ưu
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
BÁO CÁO MÔN HỌC Tìm hiểu về OpenCV và các ứng dụng của OpenCV Giáo Viên Hướng Dẫn: Cô Bành Thị Quỳnh Mai
Thành Viên Bao Gồm: - Đoàn Hồng Phúc – 20194647
- Nguyễn Tuấn Thụy – 2019
- Tạ Huy Tuấn – 2019
- Hứa Việt Hoàng – 2019
- Nguyễn Đình Xuân Nghiêm – 2019
Hệ điều hành và quản trị mạng Linux theo tiêu chuẩn kĩ thuật ITSS – 135254
Trường Công nghệ thông tin và Truyền thông
HÀ NỘI, 2/2023
Trang 2MỤC LỤC
PHẦN 1: GIỚI THIỆU VỀ OPENCV ……… 1
PHẦN 2: LỊCH SỬ RA ĐỜI CỦA OPENCV ……… 2
PHẦN 3: NHỮNG CẤU TRÚC MODULE CỦA OPENCV ……… 3
PHẦN 4: ỨNG DỤNG CỦA OPENCV ……… 4
PHẦN 5: TRIỂN KHAI MỘT SỐ ỨNG DỤNG CỦA OPENCV ………… 8
Trang 3PHẦN 1: GIỜI THIỆU VỀ OPEN CV
OpenCV là dạng viết tắt của cụm từ “Open Source Computer Vision Library” một thư viện nguồn mở dành cho Machine Learning và Computer Vision OpenCV được tạo ra để phân tích và học máy theo thời gian thực cũng như xử lý hình ảnh, video Hiện bộ công cụ OpenCV còn được bổ sung tính năng tăng tốc GPU theo real-time Đối tượng chính của OpenCV đó là các ứng dụng theo thời gian thực (real-time applications)
Ưu điểm OpenCV đó là nó cung cấp hơn 2.500 thuật toán cổ điển và hiện đại, tất cả đều được tối ưu hóa cho học máy và thị giác máy tính Thư viện nguồn mở này có giấy phép BSD, vì vậy nó được phát hành miễn phí dành cho cả mục đích học tập
và thương mại
OpenCV tương thích với nhiều nền tảng như Windows, macOS, Linux, Android, iOS và các ngôn ngữ lập trình khác nhau như Java, Python, C hay C++ Thư viện này có khả năng tận dụng tối đa khả năng sẵn có của phần cứng, từ đó đảm bảo các ứng dụng máy tính đạt được hiệu suất cao nhất
Trang 4PHẦN 2: LỊCH SỬ RA ĐỜI CỦA OPENCV
OpenCV ra đời vào năm 1999, do Gary Bradski đến từ Intel sáng tạo nên Sau đó đến năm 2000 thì phiên bản đầu tiên của OpenCV được phát hành Năm
2005, người ta đã ứng dụng OpenCV trong chiếc xe Stanley – chiếc xe giành giải
vô địch cuộc thi DARPA Grand Challenge Từ đó tới nay, OpenCV đã ngày một phát triển và được ứng dụng trong nhiều lĩnh vực của cuộc sống
Cùng với cuộc chạy đua của các công ty công nghệ trong việc sử dụng computer vision, OpenCV đã xây dựng được một cộng đồng người dùng vô cùng hùng hậu đến từ khắp nơi trên thế giới Nhu cầu sử dụng OpenCV đang gia tăng chóng mặt
và được đa dạng hóa từ interactive art cho tới khai thác web map, khai thác mỏ, robotic cao cấp…
Trang 5PHẦN 3: NHỮNG CẤU TRÚC MODULE CỦA OPENCV
Cấu trúc module là gói có chứa các static libraries (thư viện liên kết tĩnh) hoặc shared libraries (thư viện liên kết động) Sau đây là một số module có trong OpenCV:
Core functionality (core): Đây là module nhỏ gọn cho phép xác định các cấu trúc dữ liệu cơ bản Trong đó bao gồm những tính năng cơ bản mà tất
cả các module khác đều cần đến
Image Processing (imgproc): Imgproc là module xử lý hình ảnh của OpenCV Trong đó có chuyển đổi không gian màu, phép biến đổi hình học, lọc hình ảnh tuyến tính và phi tuyến, biểu đồ…
Video Analysis (video): Trong module phân tích video, bạn có thể tìm thấy các thuật toán như tách nền, tính toán chuyển động, theo dõi vật thể…
Camera Calibration and 3D Reconstruction (calib3d): Module này bao gồm các thuật toán liên như tái tạo 3D, dự đoán kiểu dáng, hình học đa chiều cơ bản, thư tín âm thanh nổi…
Object Detection (objdetect): Module này cho phép nhận dạng đối tượng
và mô phỏng các predefined classes (hàm được định nghĩa sẵn)… 2D Features Framework (features2d): Đây là module chứa các thuật toán phát hiện các đặc trưng của bộ nhận diện, thông số đối chọi, bộ truy xuất thông số…
…
Trang 6PHẦN 4: ỨNG DỤNG CỦA OPENCV 4.1 Xử lý hình ảnh
OpenCV cung cấp hầu hết các công cụ xử lý hình ảnh cơ bản để hỗ trợ bạn trong quá trình viết thuật toán cho computer vision Một số chức năng xử lý hình ảnh của OpenCV gồm phân tích hình dạng, chuyển đổi màu sắc, biến đổi hình học, lọc hình ảnh…
Ảnh lúc ban đầu:
Ảnh lúc sau: (sử dụng OpenCV)
- Chuyển về ảnh từ màu rgb sang gray: thường là 1 trong những bước đầu tiên trong xủ lý hình ảnh
Trang 74.2 Xây dựng GUI
OpenCV được tích hợp module có tên highgui cho phép xử lý mọi hoạt động của giao diện người dùng (GUI) Module highgui giúp bạn kiểm tra hình ảnh/video bằng cách tạo một cửa sổ hiển thị để bạn có thể căn chỉnh ảnh hoặc video sao cho phù hợp trước khi chuyển sang bước tiếp theo
4.3 Phân tích video
Thư viện mở OpenCV còn cung cấp tính năng phân tích video, giúp bạn xử
lý các tác vụ như tạo mô hình theo dõi video, giám sát các đối tượng khác nhau trong video, phân tích chuyển động của các khung hình liên tiếp…
Bên cạnh đó, bạn còn có thể sử dụng OpenCV để xử lý sự ổn định của video – một yếu tố cực kỳ quan trọng Trên thực tế, mọi thiết bị hiện đại trước khi trình chiếu tới người dùng đều phải trải qua các kỹ thuật xử lý video
4.4 Tái tạo 3D
Đối với computer vision, tái tạo 3D đóng vai trò cực kỳ thiết yếu OpenCV cung cấp cho các bạn thuật toán cần thiết kế tìm ra mối liên hệ giữa đối tượng này với đối tượng khác trong tập hợp hình 2D Từ đó tính toán vị trí và tái tạo lại cảnh 3D từ các hình ảnh 2D đó
4.5 Phát hiện đối tượng
Phát hiện đối tượng tức là tìm ra vị trí của một đối tượng nào đó xuất hiện trong hình ảnh nhất định Tuy nhiên phát hiện đối tượng chỉ cho biết vị trí chứ không thể phân loại đối tượng Trong nhiều hệ thống computer vision, tính năng phát hiện vị trí đối tượng đóng vai trò then chốt
Giả sử như bạn đang muốn xây dựng phần mềm nhận diện áo Phần mềm này sẽ chỉ ra vị trí cụ thể của chiếc áo từ một hình ảnh nhất định được cung cấp Tuy nhiên phần mềm đó có thể sẽ không chỉ ra được những điểm đặc trưng của chiếc áo như kích cỡ, màu sắc, kiểu dáng (trừ khi được thiết lập)
Trang 84.6 Nhận dạng khuôn mặt
Nhận dạng khuôn mặt được hiểu đơn giản là việc phát hiện ra khuôn mặt của
ai đó từ một hình ảnh cụ thể Nếu muốn phát triển hệ thống sinh trắc học thực tế cho phép phát hiện khuôn mặt trước ống kính máy ảnh, bạn cần đến tính năng nhận diện đặc điểm để dò tìm vị trí khuôn mặt Sau đó dựa trên các đặc điểm đã thu nhập được, bạn có thể tạo nên phần mềm cho phép nhận diện khuôn mặt và phát hiện đối tượng chính xác
Trang 94.7 Học máy
OpenCV được tích hợp 1 loại module cung cấp đa dạng các thuật toán học máy (machine learning) Trong đó có Neural Networks, Decision Trees, Support Vector Machines, K-Nearest Neighbors, Bayes Classifier…
Các thuật toán machine learning ngày nay đang được ứng dụng phổ biến để phát triển và hoàn thiện những hệ thống tìm kiếm trực quan, nhận diện khuôn mặt, phân loại hình ảnh, nhận dạng đối tượng…
4.8 Phân tích hình dạng
Trong computer vision, khái niệm hình dạng rất quan trọng và được đề cao OpenCV có khả năng phát hiện ra nhiều hình dạng khác nhau có trong một hình ảnh nhất định Bước này có ý nghĩa then chốt trong nhiều thuật toán Bạn có thể sử dụng các thuật toán có trong module của OpenCV để trích xuất nhiều hình dạng khác nhau, tính toán sự biến đổi hình dạng và điểm tương đồng giữa hình dạng của các đối tượng
4.9 Nhận dạng văn bản
OpenCV còn được tích hợp một loại module khác cung cấp các thuật toán nhằm phát hiện, nhận dạng và xử lý văn bản Nhận dạng văn bản tức là việc phát hiện ra nội dung dưới dạng văn bản trong một số ngữ cảnh Bao gồm quét dữ liệu
để số hóa, nhận dạng biển chỉ đường, nhận diện bảng tên…
4.10 Nhiếp ảnh điện toán
Việc áp dụng các kỹ thuật xử lý hình ảnh hiện đại nhằm nâng cao chất lượng hình ảnh được gọi chung là nhiếp ảnh điện toán Nhờ có nhiếp ảnh điện toán mà bạn có thể thao tác và xử lý các dữ liệu hình ảnh ngay trên phần mềm, từ đó giảm nhẹ vai trò của các phương pháp chụp ảnh và các quy trình quang học
Trang 10PHẦN 5: TRIỂN KHAI MỘT SỐ ỨNG DỤNG CỦA OPENCV 5.1 Ứng dụng nhận dạng vật thể
Bài toán: Đếm xem có bao nhiêu đồng xu trong 1 bức ảnh
Đầu vào:
Sau khi xử lý:
Trang 11Các bước thực hiện:
1 Đọc ảnh
2 Sử dụng cvtColor đổi ảnh thành màu xám
3 Sử dụng GaussianBlur để làm mờ ảnh
4 Canny để vẽ đường viền rồi tính số đồng xu
5.2 Ứng dụng nhận diện khuôn mặt
Bài toán: Nhận diện khuôn mặt người
Đầu vào: (Ảnh)
Đầu ra:
Trang 12Các bước tiến hành:
1 Đọc ảnh
2 Sử dụng cvtColor đổi ảnh thành màu xám
3 Sử dụng bộ lọc haarcascade và CV2.CascadeClassificer để quét qua ảnh từ
độ tìm ra tọa độ của các khuôn mặt
4 Sử dụng CV2.rectangle để vẽ hình chữ nhật tại các tạo độ được tìm ra
5.3 Ứng dụng xử lý video
Bài toán: Đếm số xe xuất hiện trong 1 đoạn video
Trang 13Đầu vào: (Video)
Bước 1: Nhận điện xe ô tô
Bước 2: tăng Car Counter lên 1
Trang 14Các bước tiến hành:
1 Đọc video, chuyển về màu xám làm mở video
2 Sử dụng createBackgroundSubtractorKNN để tách nền
3 Xóa bóng của vật thể
4 Vẽ countours rồi tracking bằng cách so sánh tâm trước và sau
5.4 Xóa background
Bài toán: Xóa phong 1 bức ảnh cho sẵn
Trang 15Ảnh ban đầu:
Các bước tiến hành:
1 Đọc file ảnh
2 Tạo ngưỡng để sách định màu cần xóa phong
3 Tạo mask để tiến hành lộc ảnh
4 Sử dụng lệnh cv2.bitwise_and và mask vừa tạo để tiến hành lọc ảnh
Mask:
Trang 16Kết quả xử lý:
5.5 Nhận dạng chữ từ một bước ảnh cho trước.
Trang 17Bài toán: Đầu vào là ảnh chứa 1 đoạn text tiến hành xử lý để trích xuất đoạn text ra file txt
Đầu ra:
this is SAMLE TEXT
Text is at different regions