Tải bản đầy đủ (.pdf) (18 trang)

báo cáo môn học tìm hiểu về opencv và các ứng dụng của opencv

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (7.11 MB, 18 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC BÁCH KHOA HÀ NỘI</b>

<b>BÁO CÁO MƠN HỌC</b>

<b>Tìm hiểu về OpenCV và các ứng dụng của OpenCV</b>

<b>Giáo Viên Hướng Dẫn: Cô Bành Thị Quỳnh Mai </b>

<b>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</b>

<b>- Nguyễn Đình Xuân Nghiêm – 2019</b>

<b>Hệ điều hành và quản trị mạng Linux theo tiêu chuẩn kĩ thuật ITSS – 135254Trường Công nghệ thông tin và Truyền thông</b>

<b>HÀ NỘI, 2/2023</b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>MỤC LỤC</b>

<b>PHẦN 1: GIỚI THIỆU VỀ OPENCV ……… 1</b>

<b>PHẦN 2: LỊCH SỬ RA ĐỜI CỦA OPENCV ……… 2</b>

<b>PHẦN 3: NHỮNG CẤU TRÚC MODULE CỦA OPENCV ……… 3</b>

<b>PHẦN 4: ỨNG DỤNG CỦA OPENCV ……….. 4</b>

<b>PHẦN 5: TRIỂN KHAI MỘT SỐ ỨNG DỤNG CỦA OPENCV ………….... 8</b>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>PHẦN 1: GIỜI THIỆU VỀ OPEN CV</b>

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.

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>PHẦN 2: LỊCH SỬ RA ĐỜI CỦA OPENCV</b>

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…

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>PHẦN 3: NHỮNG CẤU TRÚC MODULE CỦA OPENCV</b>

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ấtcả 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 tốn như tách nền, tính tố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ố…

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>PHẦN 4: ỨNG DỤNG CỦA OPENCV4.1 Xử lý hình ảnh</b>

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 q trình viết thuật tố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.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>4.2 Xây dựng GUI</b>

OpenCV được tích hợp module có tên highgui cho phép xử lý mọi hoạt độngcủa giao diện người dùng (GUI). Module highgui giúp bạn kiểm tra hình ảnh/videobằ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.

<b>4.3 Phân tích video</b>

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.

<b>4.4 Tái tạo 3D</b>

Đố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 tốn vị trí và tái tạo lại cảnh 3D từ các hình ảnh 2D đó.

<b>4.5 Phát hiện đối tượng </b>

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).

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b>4.6 Nhận dạng khuôn mặt</b>

Nhận dạng khuôn mặt được hiểu đơn giản là việc phát hiện ra khn mặt củaai đó 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 khn mặt trước ống kính máy ảnh, bạn cần đến tính năng nhậndiện đặc điểm để dị tìm vị trí khn 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.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>4.7 Học máy</b>

OpenCV được tích hợp 1 loại module cung cấp đa dạng các thuật tố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 khn mặt, phânloại hình ảnh, nhận dạng đối tượng…

<b>4.8 Phân tích hình dạng</b>

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 tốn. Bạn có thể sửdụng các thuật tốn có trong module của OpenCV để trích xuất nhiều hình dạng khác nhau, tính tốn sự biến đổi hình dạng và điểm tương đồng giữa hình dạng củacác đối tượng.

<b>4.9 Nhận dạng văn bản</b>

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…

<b>4.10 Nhiếp ảnh điện toán</b>

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ượnghình ảnh được gọi chung là nhiếp ảnh điện tốn. Nhờ có nhiếp ảnh điện tố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.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

<b>PHẦN 5: TRIỂN KHAI MỘT SỐ ỨNG DỤNG CỦA OPENCV5.1 Ứng dụng nhận dạng vật thể </b>

Bài tốn: Đếm xem có bao nhiêu đồng xu trong 1 bức ảnh.Đầu vào:

Sau khi xử lý:

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

Các bước thực hiện:1. Đọc ảnh

2. Sử dụng cvtColor đổi ảnh thành màu xám3. Sử dụng GaussianBlur để làm mờ ảnh4. Canny để vẽ đường viền rồi tính số đồng xu

<b>5.2 Ứng dụng nhận diện khn mặt </b>

Bài tốn: Nhận diện khn mặt người Đầu vào: (Ảnh)

Đầu ra:

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

Cá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 khn mặt.

4. Sử dụng CV2.rectangle để vẽ hình chữ nhật tại các tạo độ được tìm ra.

<b>5.3 Ứng dụng xử lý video</b>

Bài toán: Đếm số xe xuất hiện trong 1 đoạn video.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Đầu vào: (Video)

Bước 1: Nhận điện xe ô tô

Bước 2: tăng Car Counter lên 1

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

Cá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

<b>5.4 Xóa background</b>

Bài tốn: Xóa phong 1 bức ảnh cho sẵn.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="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 phong3. 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:

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

Kết quả xử lý:

<b>5.5 Nhận dạng chữ từ một bước ảnh cho trước.</b>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Bà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 rafile txt.

Đầu ra:

this is SAMLE TEXTText is at different regions

</div>

×