- An toàn và an ninh: Trong lĩnh vực an toàn và an ninh, công nghệ nhận biếtmàu sắc có thể được sử dụng để nhận dạng các vật thể hoặc nguy cơ dựa trêncác màu sắc của chúng, ví dụ như phá
Trang 1ĐẠI HỌC ĐÀ NẴNGTRƯỜNG ĐẠI HỌC SƯ PHẠM
BÀI BÁO CÁONGHIÊN CỨU THỊ GIÁC MÁY TÍNH ĐỂ NHẬN
DIỆN MÀU SẮCChuyên ngành: CÔNG NGHỆ THÔNG TIN
Người thực hiện: Võ Thị Linh
Võ Thị Bích ThiPhạm Thị Thanh NgânPhan Thị Quỳnh Nga
Trang 2Đà Nẵng, năm 2024
Trang 31.2.1 Môi trường thực thi Python 3.12 7
1.3 THƯ VIỆN OPEN CV 8
CHƯƠNG 2: CÁC CÔNG NGHỆ HỖ TRỢ XÂY DỰNG HỆ THỐNG NHẬN DIỆN MÀU SẮC 9
2.1 NGÔN NGỮ PYTHON VÀ THƯ VIỆN OPENCV 9
2.1.1 Thư viện OPEN CV 9
2.1.2 Cách tải và cài đặt phần mềm PyCharm 9
2.1.3 Cách sử dụng phần mềm PyCharm 15
2.1.4 Cách thêm thư viện Open CV 19
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG NHẬN DIỆN MÀU SẮC 21
3.1 NGHIÊN CỨU THUẬT TOÁN K-NEAREST NEIGHBORS (KNN) 213.1.1 Định nghĩa 21
3.1.2 Quy trình làm việc của thuật toán KNN 21
3.1.3 Ví dụ minh họa 21
3.1.4 Cách tính khoảng cách Euclidian 23
3.1.5 Chọn số K phù hợp 23
3.2 QUY TRÌNH NHẬN DIỆN MÀU SẮC 24
3.1.1 Đưa vật cần nhận diện vào webcam 24
3.1.2 Hệ thống nhận diện màu sắc 24
3.3 XÂY DỰNG HỆ THỐNG NHẬN DIỆN MÀU SẮC 25
3.2.1 Cơ sở vật chất và môi trường xây dựng hệ thống 25
3.2.2 Xây dựng hệ thống nhận diện màu sắc 25
3.4 HỆ THỐNG SAU KHI HOÀN CHỈNH 26
KẾT LUẬN 27
Trang 4TÀI LIỆU THAM KHẢO 28
Hình 2.1 Giới thiệu PyCharm 10
Hình 2.2 Phiên bản PyCharm 10
Hình 2.3 File PyCharm đã tải xong 11
Hình 2.4 Giao diện cài đặt 11
Hình 2.5 Chọn thư mục muốn lưu trữ 12
Hình 2.13 Lựa chọn mã nguồn Python 17
Hình 2.14 Đặt tên cho file 18
Hình 2.15 Giao diện PyCharm 18
Hình 2.16 Chọn Terminal để thêm thư viện 19
Hình 2.17 Câu lệnh thêm thư viện OpenCV 19
Trang 5Hình 2.18 Câu lệnh thêm thư viện hỗ trợ 19
Hình 2.19 Giao diện khi thêm thư viện thành công 20
Hình 3.1 Ví dụ minh họa 22
Hình 3.2 Công thức tính khoảng cách Euclidian 23
Hình 3.3 Quy trình nhận diện màu sắc 24
Hình 3.4 Biểu đồ màu RGB 25
3
Trang 6MỞ ĐẦU1 Tính cấp thiết của đề tài
- Ứng dụng trong công nghiệp và thương mại: Công nghệ nhận biết màu sắc
có thể được áp dụng trong nhiều ngành công nghiệp và thương mại, từ sản xuấthàng hóa đến thiết kế đồ họa và quảng cáo Ví dụ, trong sản xuất, việc tự độngphân loại và nhận biết sản phẩm dựa trên màu sắc có thể giúp tăng hiệu suất vàchất lượng sản xuất
- Y tế và y học: Trong lĩnh vực y tế, việc nhận biết màu sắc có thể hỗ trợtrong việc phát hiện các dấu hiệu của các bệnh lý như các biến đổi màu sắc trênda, viêm nhiễm, hoặc các vấn đề về sức khỏe khác
- An toàn và an ninh: Trong lĩnh vực an toàn và an ninh, công nghệ nhận biếtmàu sắc có thể được sử dụng để nhận dạng các vật thể hoặc nguy cơ dựa trêncác màu sắc của chúng, ví dụ như phát hiện vật nổ, vũ khí hoặc nguyên tố đedọa khác
- Hội nhập với công nghệ khác: Công nghệ nhận biết màu sắc có thể hộinhập với các công nghệ khác như thị giác máy tính 3D, trí tuệ nhân tạo vàInternet of Things (IoT) để tạo ra các ứng dụng phong phú và hiệu quả
- Tiện ích trong đời sống hằng ngày: Công nghệ nhận biết màu sắc có thểcung cấp các ứng dụng hữu ích trong đời sống hàng ngày, từ các ứng dụng diđộng giúp người khiếm thị nhận biết màu sắc đến các công cụ hỗ trợ trong việclựa chọn màu sắc cho trang trí, thời trang và trang điểm
Tóm lại, nghiên cứu và phát triển công nghệ nhận biết màu sắc không chỉmang lại lợi ích lớn trong nhiều lĩnh vực khác nhau mà còn đóng góp vào sựtiến bộ và phát triển của xã hội
2 Mục tiêu nghiên cứu
- Nghiên cứu về thị giác máy tính - Nhận diện được màu sắc
3 Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
- Các đồ vật cần được nhận diện màu sắc.- Sử dụng thuật toán K-Nearest Neighbors (KNN)
3.2 Phạm vi nghiên cứu
Trang 7- Nguồn dữ liệu màu sắc được lấy từ trang Danh sách màu – Wikipedia tiếng Việt- Thuật toán K-Nearest Neighbors (KNN).
4 Nội dung nghiên cứu
Nghiên cứu thuật toán K-Nearest Neighbors (KNN).- Tìm hiểu quy trình nhận diện màu sắc
- Tìm hiểu các công cụ hỗ trợ: thư viện OpenCV, ứng dụng PyCharm.- Đánh giá kết quả triển khai
5 Kết quả dự kiến
- Nhận diện được màu sắc.- Cài đặt được OpenCV, PyCharm.- Tổng quan về thị giác máy tính.- Tập báo cáo
CHƯƠNG 1: TỔNG QUAN VỀ THỊ GIÁC MÁY TÍNH
Trình bày tổng quan về thị giác máy tính và thuật toán K-Nearest Neighbors (KNN), triển khai việc nhận diện màu sắc
CHƯƠNG 2: CÁC CÔNG CỤ HỖ TRỢ XÂY DỰNG ỨNG
DỤNG
Trình bày các công cụ PyCharm, thư viện OpenCV Sử dụng thuật toán Nearest Neighbors (KNN)
K-5
Trang 8CHƯƠNG 3: XÂY DỰNG HỆ THỐNG NHẬN DẠNG MÀU
Cuối cùng là HƯỚNG PHÁT TRIỂN của đề tài
CHƯƠNG 1: TỔNG QUAN VỀ THỊ GIÁC MÁY TÍNH
1.1 GIỚI THIỆU
Quốc tế: Các phương pháp như R-CNN, Fast R-CNN, Faster R-CNN, SSD
(Single Shot MultiBox Detector), và YOLO (You Only Look Once) đã đạt đượchiệu suất tốt trong việc nhận dạng và phân loại các vùng khác nhau trong hình ảnh
Trong nước: Trong nghiên cứu thị giác máy tính, cũng có nhiều thành tựu
đáng chú ý từ Việt Nam, bao gồm:- Phát triển ứng dụng nhận diện khuôn mặt và biển số xe: Các nhóm nghiên cứu đã phát triển các thuật toán và công nghệ nhận diện khuôn mặt và biển số xe phục vụ cho nhu cầu an ninh, giao thông và các ứng dụng khác
- Ứng dụng thị giác máy tính trong y tế: Có các nghiên cứu áp dụng thị giác máy tính để nhận diện và phân tích hình ảnh y tế, sử dụng thuật toán lọc trung bình để làm sạch và cải thiện chất lượng hình ảnh y tế, từ các hình ảnh X-quang, MRI đến hình ảnh siêu âm giúp phát hiện và đánh giá bệnh lý đến hỗ trợtrong việc chẩn đoán và điều trị
- Giải pháp cho giao thông thông minh: Các ứng dụng thị giác máy tính được sử dụng để giám sát giao thông, phát hiện vi phạm luật giao thông và cải thiện an toàn giao thông
Trang 9- Ứng dụng trong sản xuất công nghiệp: Các nghiên cứu đã tập trung vào việc áp dụng thị giác máy tính trong quản lý và kiểm soát chất lượng sản phẩm trong quán trình sản xuất công nghiệp.
- Hệ thống giám sát an ninh: Công nghệ thị giác máy tính được áp dụng trong việc phát triển các hệ thống giám sát an ninh cho các tòa nhà, khu vực công cộng và các công trình quan trọng khác
1.2 ỨNG DỤNG PYCHARM
Pycharm là một nền tảng kết hợp được JetBrains phát triển như môi trường phát triển tích hợp (IDE), nhằm mục đích cung cấp tất cả các công cụ cầnthiết và các yếu tố mở rộng bao gồm biên dịch mã, điều hướng nhanh, tô sáng cú pháp, công cụ cơ sở dữ liệu và trình soạn thảo văn bản có lập trình… để tăngnăng suất của các lập trình viên Python Pycharm có thể chạy trên Windows, Linux, hoặc Mac OS Ngoài ra, nó cũng chứa các module và các gói giúp các lập trình viên phát triển phần mềm bằng Python trong thời gian ngắn với ít côngsức hơn Hơn nữa, Pycharm cũng có khả năng tùy chỉnh theo yêu cầu của nhà phát triển Một trong những ưu thế vượt trội của việc sử dụng PyCharm là phần mềm cung cấp API cho các nhà phát triển và cho phép họ viết các plugin của riêng mình để mở rộng các tính năng
Một số ứng dụng lớn như Twitter, Facebook, Amazon sử dụng Pycharm đểlàm IDE Python của họ
1.2.1 Môi trường thực thi Python 3.12
Python là một ngôn ngữ lập trình được Guido van Rossum giới thiệu vào năm 1991 Từ đó, nó đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới, được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau từ phát triển web đến khoa học dữ liệu và trí tuệ nhân tạo
Python được thiết kế với mục tiêu là một ngôn ngữ lập trình dễ đọc, dễ hiểu và dễ sử dụng Nó có cú pháp đơn giản và linh hoạt, giúp cho các lập trình viên có thể viết mã nhanh chóng và dễ dàng duy trì mã nguồn
Mặc dù Python không được xây dựng trên nền tảng của C hoặc C++ nhưng nó cũng mượn một số cú pháp từ các ngôn ngữ này Python thừa hưởng các đặc điểm của một ngôn ngữ lập trình hướng đối tượng từ C++, nhưng cũng cung cấp một loạt các tính năng tiện ích và ngắn gọn giống như C
Ban đầu, Python không được thiết kế cho mục đích lập trình Internet, nhưng do tính linh hoạt và dễ sử dụng, nó đã trở thành một trong những ngôn ngữ phổ
7
Trang 10biến nhất cho việc phát triển web Python được sử dụng trong việc xây dựng cáctrang web động, các ứng dụng web, và các dịch vụ web.
Ngoài ra, Python cũng được sử dụng rộng rãi trong lĩnh vực khoa học dữ liệuvà trí tuệ nhân tạo Các thư viện như NumPy, Pandas và SciPy giúp cho việc xửlý dữ liệu và tính toán khoa học trở nên dễ dàng hơn Cùng với đó, các thư viện như TensorFlow và PyTorch cung cấp một cơ sở mạnh mẽ cho việc phát triển các mô hình trí tuệ nhân tạo Python là một ngôn ngữ lập trình đa năng, dễ sử dụng và mạnh mẽ, đã trở thành một công cụ quan trọng trong nhiều lĩnh vực công nghệ và khoa học
Pycharm là chương trình chạy trên nền Python nên cần có môi trường thực thi Python 3.12 dưới đây là đường link để cài đặt Python 3.12
(https://www.jetbrains.com/pycharm/download/?section=windows)
1.3 THƯ VIỆN OPEN CV
OpenCV (Open Source Computer Vision Library) là một thư viện mã nguồn mở được thiết kế để xử lý hình ảnh và thị giác máy tính Được phát triển bởi Intel vào năm 1999, OpenCV đã trở thành một trong những thư viện phổ biến nhất và mạnh mẽ nhất trong lĩnh vực thị giác máy tính
Dưới đây là một số điểm nổi bật về OpenCV:+ Hỗ trợ đa nền tảng: OpenCV hỗ trợ trên nhiều hệ điều hành như Windows,Linux, macOS và thậm chí cả các nền tảng di động như Android và iOS
+ Ngôn ngữ lập trình: OpenCV được viết bằng ngôn ngữ C++, nhưng có cácliên kết và giao diện cho các ngôn ngữ lập trình khác như Python, Java và MATLAB, giúp cho việc sử dụng OpenCV trở nên linh hoạt và tiện lợi
+ Chức năng mạnh mẽ: OpenCV cung cấp một loạt các chức năng và thuật toán để thực hiện các nhiệm vụ thị giác máy tính như xử lý ảnh, nhận diện biên cạnh, phát hiện đối tượng, nhận diện khuôn mặt, theo dõi chuyển động và nhiềuhơn nữa
+ Cộng đồng lớn và hỗ trợ: OpenCV có một cộng đồng lớn của các nhà pháttriển và người dùng trên toàn thế giới Cộng đồng này cung cấp các tài liệu, ví dụ, và hỗ trợ để giúp người dùng sử dụng OpenCV hiệu quả
Với các tính năng và khả năng mạnh mẽ của mình, OpenCV đã trở thành một công cụ quan trọng trong nhiều ứng dụng thị giác máy tính như xử lý ảnh y tế, nhận diện biển số, giám sát an ninh, ô tô tự lái và nhiều lĩnh vực khác
Trang 11OpenCV được sử dụng rộng rãi trong nhiều lĩnh vực như công nghệ, y tế, an ninh, ô tô tự lái, robotics, xử lý ảnh y khoa và nhiều lĩnh vực khác, là công cụ quan trọng trong việc phát triển các ứng dụng và giải pháp thị giác máy tính.
CHƯƠNG 2: CÁC CÔNG NGHỆ HỖ TRỢ XÂY DỰNG HỆ
THỐNG NHẬN DIỆN MÀU SẮC
2.1 NGÔN NGỮ PYTHON VÀ THƯ VIỆN OPENCV
2.1.1 Thư viện OPEN CV
Thư viện OpenCV là một công cụ mạnh mẽ cho xử lý ảnh và thị giác máy tính trong ngôn ngữ lập trình Python OpenCV cung cấp các chức năng để đọc, ghi, xử lý và hiển thị hình ảnh và video Điều này giúp bạn xây dựng các ứng dụng nhận diện, theo dõi, và xử lý ảnh một cách dễ dàng
2.1.2 Cách tải và cài đặt phần mềm PyCharm
PyCharm là một phần mềm được phát triển bởi JetBrains, cung cấp các côngcụ cần thiết giúp các lập trình viên Python tăng năng suất làm việc Ngoài ra, PyCharm còn được tích hợp nhiều yếu tố mở rộng khác như: biên dịch mã, tô sáng cú pháp, điều hướng project nhanh chóng, công cụ cơ sở dữ liệu và trình soạn thảo văn bản có tích hợp lập trình nhằm mục đích thúc đẩy quá trình phát triển Website
9
Trang 12Hình 2.1 Giới thiệu PyCharm.
Cách tải PyCharm:+ Nhấp vào link để download ứng dụng PyCharm: https://www.jetbrains.com/pycharm/download/?section=windows
+ Chọn phiên bản CommunityCommunity: Là phiên bản miễn phí nên chỉ có thể sử dụng để phát triển Python thuần túy
Hình 2.2 Phiên bản PyCharm.
Trang 13Cách cài đặt PyCharm:+ Sau khi tải về thành công, click vào file vừa tải để tiến hành cài đặt
Hình 2.3 File PyCharm đã tải xong.
+ Tiếp theo, nhấn chọn “Next” để tiếp tục
Hình 2.4 Giao diện cài đặt.
+ Sau đó click chuột vào “Browse” để lựa chọn thư mục muốn lưu trữ và nhấn “Next”
11
Trang 14Hình 2.5 Chọn thư mục muốn lưu trữ.
+ Khi màn hình xuất hiện như hình bên dưới, tích vào các ô PyCharm, Add “Open Folder as Project”, py và Add “bin” folder to the PATH Sau đó nhấn chọn “Next”
Trang 15Hình 2.6 Tùy chọn cài đặt.
+ Tiếp theo, nhấn chọn “Install” để tiếp tục
13
Trang 17+ Nếu muốn khởi động lại ngay có thể tích vào ô “Reboot now” hoặc nếu muốn khởi động sau có tích vào ô “I want to manually reboot later” Cuối cùng,chỉ cần nhấn chọn “Finish” là đã hoàn tất quá trình cài đặt phần mềm
PyCharm
Hình 2.9 Lựa chọn khởi động.
2.1.3 Cách sử dụng phần mềm PyCharm
+ Đầu tiên, nhấn đúp chuột để mở phần mềm Pycharm
Hình 2.10 Giao diện khởi động PyCharm.
15
Trang 18+ Tiếp theo, tại giao diện màn hình chính, bạn vào mục Project sau đó nhấn chọn “New Project” để tạo một Project mới.
Hình 2.11 Tạo project.
+ Sau đó, vào thư mục có chứa Project vừa được tạo và nhấn chọn “Create”
Trang 19Hình 2.12 Tạo project.
+ Tiếp theo, nhấn chọn “Python File” để tạo file sử dụng mã nguồn Python
Hình 2.13 Lựa chọn mã nguồn Python.
17
Trang 20+ Sau đó đặt tên cho file và nhấn “Ok”.
Hình 2.14 Đặt tên cho file.
+ Lúc này, bạn có thể tiến hành viết code
Hình 2.15 Giao diện PyCharm.
Trang 212.1.4 Cách thêm thư viện Open CV
+ Nhấp chuột vào Terminal góc dưới bên trái màn hình
Hình 2.16 Chọn Terminal để thêm thư viện.
+ Viết 2 câu lệnh dưới đây để thêm thư viên OpenCV:
Hình 2.17 Câu lệnh thêm thư viện OpenCV.
+ Viết 3 câu lệnh sau để thêm các thư viện hỗ trợ thêm:
Hình 2.18 Câu lệnh thêm thư viện hỗ trợ.
19
Trang 22+ Sau khi thêm thư viện sẽ được kết quả như hình
Hình 2.19 Giao diện khi thêm thư viện thành công.
Trang 23CHƯƠNG 3: XÂY DỰNG HỆ THỐNG NHẬN DIỆN MÀU
SẮCChương này tiếp tục vận dụng các công nghệ và công cụ nhận diện màu sắc để đề xuất giải pháp xây dựng hệ thống nhận diện màu sắc hỗ trợ giúp nhận biết màu sắc Các phần tiếp theo của Chương này tập trung nghiên đề xuất quy trình nhận diện màu sắc, các công đoạn xây dựng hệ thống và đánh giá kết quả triển khai
3.1 NGHIÊN CỨU THUẬT TOÁN K-NEAREST NEIGHBORS (KNN)
3.1.1 Định nghĩa
K-Nearest Neighbor (KNN) là một trong những thuật toán học có giám sát đơn giản nhất trong Machine Learning Ý tưởng của KNN là tìm ra output của dữ liệu dựa trên thông tin của những dữ liệu training gần nó nhất
3.1.2 Quy trình làm việc của thuật toán KNN
- Bước 1: Xác định tham số K= số láng giềng gần nhất.- Bước 2: Tính khoảng cách đối tượng cần phân lớp với tất cả các đối tượng trong training data
- Bước 3: Sắp xếp khoảng cách theo thứ tự tăng dần và xác định K láng giềng gần nhất với đối tượng cần phân lớp
- Bước 4: Lấy tất cả các lớp của K láng giềng gần nhất.- Bước 5: Dựa vào phần lớn lớp của K để xác định cho đối tượng cần phân lớp
3.1.3 Ví dụ minh họa
Giả sử ta có D là tập các dữ liệu đã được phân loại thành 2 nhãn (+) và (-) được biểu diễn trên trục tọa độ như hình vẽ và một điểm dữ liệu mới A chưa biết nhãn Vậy làm cách nào để chúng ta có thể xác định được nhãn của A là (+)hay (-)?
Có thể thấy cách đơn giản nhất là so sánh tất cả các đặc điểm của dữ liệu A với tất cả tập dữ liệu học đã được gắn nhãn và xem nó giống cái nào nhất, nếu dữ liệu (đặc điểm) của A giống với dữ liệu của điểm mang nhãn (+) thì điểm A mang nhãn (+), nếu dữ liệu A giống với dữ liệu nhãn (-) hơn thì nó mang nhãn (-), trông có vẻ rất đơn giản nhưng đó là những gì mà KNN làm
21
Trang 24Trong trường hợp của KNN, thực tế nó không so sánh dữ liệu mới (không được phân lớp) với tất cả các dữ liệu khác, thực tế nó thực hiện một phép tính toán học để đo khoảng cách giữa dữ liệu mới với tất cả các điểm trong tập dữ liệu học D để thực hiện phân lớp Phép tính khoảng cách giữa 2 điểm có thể là Euclidian, Manhattan, trọng số, Minkowski, …
Hình 3.1 Ví dụ minh họa.
Các bước trong KNN:1 Ta có D là tập các điểm dữ liệu đã được gắn nhãn và A là dữ liệu chưa được phân loại
2 Đo khoảng cách (Euclidian) từ dữ liệu mới A đến tất cả các dữ liệu khác đã được phân loại trong D
3 Chọn K (K là tham số mà bạn định nghĩa) khoảng cách nhỏ nhất.4 Kiểm tra danh sách các lớp có khoảng cách ngắn nhất và đếm số lượng của mỗi lớp xuất hiện
5 Lấy đúng lớp (lớp xuất hiện nhiều lần nhất).6 Lớp của dữ liệu mới là lớp mà bạn đã nhận được ở bước 5