Tải bản đầy đủ (.doc) (30 trang)

ĐỒ ÁN CƠ SỞ 4 ĐỀ TÀI: XÂY DỰNG CHƯƠNG TRÌNH GỢI Ý SỐ LIỆU MÀU SẮC BẰNG CÔNG NGHỆ AI. TS. TRẦN THẾ SƠN

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 (4.1 MB, 30 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG VIỆT HÀN

ĐỒ ÁN CƠ SỞ 4
ĐỀ TÀI: XÂY DỰNG CHƯƠNG
TRÌNH GỢI Ý SỐ LIỆU MÀU SẮC
BẰNG CƠNG NGHỆ AI

SINH VIÊN THỰC HIỆN:
LỚP:

VÕ THỊ MINH NGUYỆT
18IT2

GIẢNG VIÊN HƯỚNG DẪN: TS. TRẦN THẾ SƠN

Đà nẵng, tháng 12 năm 2020


MỤC LỤC
MỤC LỤC................................................................................................................ 2
MỞ ĐẦU..................................................................................................................7
LỜI CẢM ƠN..........................................................................................................8
THÔNG TIN KẾT QUẢ NGHIÊN CỨU..............................................................9
DANH MỤC CÁC TỪ VIẾT TẮT.......................................................................11
DANH MỤC CÁC HÌNH VẼ...............................................................................12
DANH MỤC CÁC BẢNG.....................................................................................13
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT.....................................................................14
1.1


Tìm hiểu về các ngơn ngữ lập trình..........................................................14
1.1.1 Ngơn ngữ Python...................................................................................14
1.2 Các thư viện thị giác máy tính..................................................................15
1.3. Computer Vision ̶ Thị giác máy tính(CV).........................................20

CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ BÀI TỐN...........................................21
2.1 u cầu bài tốn..............................................................................................21
2.2 Các u cầu phi chức năng..............................................................................21
2.3 Phân tích thiết kế hệ thống.............................................................................21
2.3.1 Các chức năng của hệ thống................................................................21
2.3.2 Các tác nhân của hệ thống...................................................................21
2.3.3 Biểu đồ UseCase tổng quát..................................................................21
2.7.11 Bảng ví dụ giá trị màu CSV...............................................................23
CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH.........................24
3.1 Thiết kế bài toán.......................................................................................24
3.1.1 Tập dữ liệu............................................................................................24
3.1.2 Cài đặt thư viện thị giác máy tính OpenCV, Pandas và NumPy......25
2


3.2 Xây dựng chương trình..........................................................................25
3.3 Chạy chương trình..................................................................................29
KẾT LUẬN............................................................................................................31
TÀI LIỆU THAM KHẢO.......................................................................................32

3


MỞ ĐẦU
Ngày nay, với sự phát triển mạnh mẽ của khoa học công nghệ, Công nghệ

Thông tin là một trong những ngành có vị thế dẫn đầu và có vai trị rất lớn trong sự
phát triển chung đó. Các ứng dụng của công nghệ thông tin được áp dụng trong mọi
lĩnh vực nghiên cứu khoa học cũng như trong mọi lĩnh vực của đời sống. Là một
phần của Công nghệ Thơng tin, Cơng nghệ AI đang có được sự phát triển mạnh mẽ
và phổ biến rất nhanh bởi những lợi ích mà nó mang lại cho cộng đồng là rất lớn.
Bằng việc lựa chọn và thực hiện đề tài “Xây dựng chương trình gợi ý số liệu
màu sắc”, em muốn tìm hiểu và đưa ra một giải pháp tốt nhằm giải quyết công việc
ghi nhớ con số màu sắc quá nhiều đầy tính trừu tượng của các cơng việc liên quan
đến Photoshop cũng ni Design . Chương trình mang lại cho các nhà lập trình viên
cũng như các designer nhiều lợi ich như: giảm thời gian tìm kiếm số liệu của màu
mình đang cần, khơng phải đau đầu ghi nhớ những con số loằng ngoằng,...v..v.
Nội dung đề tài gồm các chương:
Chương 1 : Cơ sở lý thuyết.
Chương 2 : Phân tích thiết kế hệ thống.
Chương 3 : Thiết kế và xây dựng chương trình

4


LỜI CẢM ƠN
Trước tiên em xin gửi lời cảm ơn chân thành sâu sắc tới các thầy cô giáo trong
trường Đại học Cơng nghệ thơng tin nói chung và các thầy cơ giáo trong khoa Khoa
học cơng nghệ nói riêng đã tận tình giảng dạy, truyền đạt cho em những kiến thức,
kinh nghiệm quý báu trong suốt thời gian bốn năm học vừa qua.
Đặc biệt em xin gửi lời cảm ơn đến thầy giáo Trần Thế Sơn đã tận tình giúp
đỡ, trực tiếp chỉ bảo, huớng dẫn em trong suốt quá trình thực hiện học phần Đồ án.
Trong thời gian làm việc, em không ngừng tiếp thu thêm nhiều kiến thức bổ ích mà
cịn học tập được tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc, hiệu
quả, đây là những điều rất cần thiết cho em trong q trình học tập và cơng tác sau
này.

Sau cùng xin gửi lời cảm ơn chân thành tới gia đình, bạn bè đã động viên,
đóng góp ý kiến và giúp đỡ em trong q trình học tập, nghiên cứu và hồn thành
bài đồ án cơ sở 4 này.
Một lần nữa, em xin chân thành cảm ơn.!

5


THƠNG TIN KẾT QUẢ NGHIÊN CỨU
1.

Thơng tin chung

Tên đề tài

: Xây dựng chương trình gợi ý số liệu màu sắc

Sinh viên thực hiện : Võ Thị Minh Nguyệt
Lớp

: 18IT2

Hệ đào tạo

: Chính quy

Điện thoại

: 0355555377


Email

:

Thời gian thực hiện : Tháng 11-12 năm 2020
2.

Tính cấp thiết của đề tài
Photoshop hiện nay là phần mềm chỉnh sửa hình ảnh chuyên nghiệp, cung
cấp tới người dùng nhiều cơng cụ biên tập hình ảnh. Đặc biệt với những ai
muốn lấy mã màu hình ảnh có thể sử dụng tới cơng cụ Color Picker hoặc
Eyedropper tool.
Tuy nhiên, khơng phải ai cũng có thể sử dụng Photoshop thành thạo, cũng
như biết cách tìm mã màu bằng 2 cơng cụ trên. Vì vậy, chương trình này sẽ
hỗ trợ đắc lực để lấy mã màu từ bất kỳ một hình ảnh nào trên Windows mà
khơng cần phải sử dụng Photoshop.

3.

Mục tiêu
- Xây dựng chương trình có thấy lấy được số liệu mà sắc bằng cách nhấp
chuột vào màu đó và có thể nâng cấp trong tương lai.
- Sử dụng ngơn ngữ lập trình Python và các thư viện thị giác máy tính như
OpenCV và Pandas để xây dựng chương trình gợi ý số liệu màu sắc để hỗ trợ
việc lấy mã màu một cách dễ dàng hơn
- Chương trình đơn giản, dễ sử dụng.
- Nắm bắt được công nghệ AI hiện nay

6



4.

Kết quả chính đạt được
- Xây dựng thành cơng chương trình.
- Tìm hiểu nắm bắt được các kiến thức về cơng nghệ làm nên Trí tuệ nhân
tạo, các thư viện thị giác máy tính
- Ứng dụng , phát triển được công nghệ AI bằng Python.
- Với quy mô vừa và nhỏ, cộng thêm thời gian không cho phép nên đề tài
“Xây dựng chương trình gợi ý số liệu màu sắc” có thể chưa có đầy đủ các
chức năng hồn thiện của một chương trình học máy. Trong quá trình làm cịn
nhều sai sót, do kiến thức có hạn lên chương trình cịn ít nhiều thiếu sót về
việc hiển thị cũng như tối ưu thuật toán, thời gian thực hiện. Trong tương lai
em sẽ cố gắng khắc phục những sai sót này.

7


DANH MỤC CÁC TỪ VIẾT TẮT
STT Từ viết tắt
1

API

2

DOM

3


XHTML

4

XML

Tên đầy đủ
Giải thích
Application Programming
Giao diện lập trình ứng dụng.
Interface
Document Object Model
Các đối tượng thao tác văn bản
Extensible HyperText
Ngôn ngữ Đánh dấu Siêu văn bản
Markup Language

Mở rộng
Ngôn ngữ đánh dấu mở rộng do

eXtensible Markup

W3C đề nghị với mục đích tạo ra

Language

các ngơn ngữ đánh dấu khác
Ngôn ngữ đánh dấu (markup
language) XML và dùng để miêu


5

SVG

Scalable Vector Graphics

tả các hình ảnh đồ họa véc tơ hai
chiều, tĩnh và hoạt hình, thường
dành cho ứng dụng trên các trang
mạng.
Ngơn ngữ mơ hình gồm các ký

6

UML

hiệu đồ họa mà các phương pháp

Unified Modeling

hướng đối tượng sử dụng để thiết

Language

kế các hệ thống thông tin một
cách nhanh chóng.

DANH MỤC CÁC HÌNH VẼ

8



Hình 1: Python................................................................................................13
Hình 2: OpenCV.............................................................................................16
Hình 3: Cấu trúc của OpenCV........................................................................17
Hình 4: Thư viện NumPy................................................................................18
Hình 5: Thị giác máy tính...............................................................................19
Hình 6: Biểu đồ Use case tổng quát................................................................21
Hình 7: Biểu đồ nguyên lý hoạt động của chương trình..................................21
Hình 8: Tệp colors.csv....................................................................................23
Hình 9: Hồn thành cài đặt.............................................................................24
Hình 10: Chạy chương trình bằng PowerShell................................................28
Hình 11: Kết quả khi nhấp đúp chuột vào màu vàng.......................................29
Hình 12: Kết quả khi nhấp đúp chuột vào vùng màu đỏ.................................29

9


DANH MỤC CÁC BẢNG

Bảng 2.1 - Các yêu cầu phi chức năng của ứng dụng
Bảng 2.7 – Bảng ví dụ giá trị màu .csv

10


CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Tìm hiểu về các ngơn ngữ lập trình
1.1.1 Ngơn ngữ Python
Python là một trong những ngơn ngữ lập trình phổ biến nhất trên thế giới. Được tạo

ra vào đầu những năm 1990, nó được sử dụng rộng rãi từ việc tự động hóa các tác
vụ lặp đi lặp lại và viết ứng dụng web đến xây dựng mơ hình học máy và triển khai
mạng nơ-ron. Các nhà nghiên cứu, nhà toán học và nhà khoa học dữ liệu đặc biệt
thích Python vì cú pháp phong phú và dễ hiểu của nó cũng như một loạt các gói mã
nguồn mở có sẵn. Các gói là thư viện mã được chia sẻ, được sử dụng phổ biến, có
sẵn miễn phí cho mọi người sử dụng.
Python có cú pháp đơn giản, dễ học, nhấn mạnh tính dễ đọc. Các ứng dụng được
viết bằng Python có thể chạy trên hầu hết mọi máy tính, bao gồm cả những máy
tính chạy Windows, macOS và các bản phân phối phổ biến của Linux. Hơn nữa, hệ
sinh thái chứa một bộ công cụ phát triển phong phú để viết, gỡ lỗi và xuất bản các
ứng dụng Python.
Chạy mã Python:
Python là một ngôn ngữ được thông dịch giúp giảm chu kỳ chỉnh sửa-kiểm tra-gỡ
lỗi vì khơng u cầu bước biên dịch. Để chạy các ứng dụng Python, bạn cần một
môi trường thời gian chạy / trình biên dịch để thực thi mã.
Hầu hết các môi trường thời gian chạy đều hỗ trợ hai cách để thực thi mã Python:
1.

Chế độ tương tác: Đây là nơi mỗi lệnh bạn nhập được diễn giải và thực thi
ngay lập tức và bạn sẽ thấy kết quả mỗi khi nhấn ENTER. Đây là chế độ mặc
định nếu bạn khơng chuyển tên tệp cho trình thơng dịch.
2. Chế độ tập lệnh: Đây là nơi bạn đặt một tập hợp các câu lệnh Python vào một
tệp văn bản có phần mở rộng .py . Sau đó, bạn chạy trình pythonthơng dịch và
trỏ nó vào tệp. Chương trình được thực thi từng dòng một và kết quả được
hiển thị. Khơng có bước biên dịch như trong sơ đồ sau.

Hình 1: Python

11



Tính năng chính của Python:
Ngơn ngữ lập trình đơn giản, dễ học: Python có cú pháp rất đơn giản, rõ ràng. Nó
dễ đọc và viết hơn rất nhiều khi so sánh với những ngơn ngữ lập trình khác như C+
+, Java, C#. Python làm cho việc lập trình trở nên thú vị, cho phép bạn tập trung
vào những giải pháp chứ khơng phải cú pháp.
Miễn phí, mã nguồn mở: Bạn có thể tự do sử dụng và phân phối Python, thậm chí
là dùng nó cho mục đích thương mại. Vì là mã nguồn mở, bạn khơng những có thể
sử dụng các phần mềm, chương trình được viết trong Python mà cịn có thể thay đổi
mã nguồn của nó. Python có một cộng đồng rộng lớn, khơng ngừng cải thiện nó mỗi
lần cập nhật.
Khả năng di chuyển: Các chương trình Python có thể di chuyển từ nền tảng này
sang nền tảng khác và chạy nó mà khơng có bất kỳ thay đổi nào. Nó chạy liền mạch
trên hầu hết tất cả các nền tảng như Windows, macOS, Linux.
Khả năng mở rộng và có thể nhúng: Giả sử một ứng dụng địi hỏi sự phức tạp rất
lớn, bạn có thể dễ dàng kết hợp các phần code bằng C, C++ và những ngơn ngữ
khác (có thể gọi được từ C) vào code Python. Điều này sẽ cung cấp cho ứng dụng
của bạn những tính năng tốt hơn cũng như khả năng scripting mà những ngơn ngữ
lập trình khác khó có thể làm được.
Ngôn ngữ thông dịch cấp cao: Không giống như C/C++, với Python, bạn khơng
phải lo lắng những nhiệm vụ khó khăn như quản lý bộ nhớ, dọn dẹp những dữ liệu
vơ nghĩa,... Khi chạy code Python, nó sẽ tự động chuyển đổi code sang ngơn ngữ
máy tính có thể hiểu. Bạn không cần lo lắng về bất kỳ hoạt động ở cấp thấp nào.
Thư viện tiêu chuẩn lớn để giải quyết những tác vụ phổ biến: Python có một số
lượng lớn thư viện tiêu chuẩn giúp cho công việc lập trình của bạn trở nên dễ thở
hơn rất nhiều, đơn giản vì khơng phải tự viết tất cả code. Ví dụ: Bạn cần kết nối cơ
sở dữ liệu MySQL trên Web server? Bạn có thể nhập thư viện MySQLdb và sử
dụng nó. Những thư viện này được kiểm tra kỹ lưỡng và được sử dụng bởi hàng
trăm người. Vì vậy, bạn có thể chắc chắn rằng nó sẽ khơng làm hỏng code hay ứng
dụng của mình.

Hướng đối tượng: Mọi thứ trong Python đều là hướng đối tượng. Lập trình hướng
đối tượng (OOP) giúp giải quyết những vấn đề phức tạp một cách trực quan. Với
OOP, bạn có thể phân chia những vấn đề phức tạp thành những tập nhỏ hơn bằng
cách tạo ra các đối tượng.
1.2 Các thư viện thị giác máy tính
1.2.1. Thư viện OpenCV
Project OpenCV được bắt đầu từ Intel năm 1999 bởi Gary Bradsky. OpenCV
viết tắt cho Open Source Computer Vision Library. OpenCV là thư viện nguồn mở
hàng đầu cho Computer Vision và Machine Learning, và hiện có thêm tính năng
tăng tốc GPU cho các hoạt động theo real-time.
12


OpenCV được phát hành theo giấy phép BSD (*), do đó nó miễn phí cho cả
học tập và sử dụng với mục đích thương mại. Nó có trên các giao diện C++, C,
Python và Java và hỗ trợ Windows, Linux, Mac OS, iOS và Android. OpenCV được
thiết kế để hỗ trợ hiệu quả về tính tốn và chun dùng cho các ứng dụng real-time
(thời gian thực). Nếu được viết trên C/C++ tối ưu, thư viện này có thể tận dụng
được bộ xử lý đa lõi (multi-core processing).
Ứng dụng OpenCV:
OpenCV được sử dụng cho đa dạng nhiều mục đích và ứng dụng khác nhau bao
gồm:


Hình ảnh street view



Kiểm tra và giám sát tự động
Robot và xe hơi tự lái

Phân tích hình ảnh y học
Tìm kiếm và phục hồi hình ảnh/video
Phim – cấu trúc 3D từ chuyển động
Nghệ thuật sắp đặt tương tác







Tính năng và các Module phổ biến của OpenCV
Theo tính năng và ứng dụng của OpenCV, có thể chia thư viện này thánh các nhóm
tính năng và module tương ứng như sau:


Xử lý và hiển thị Hình ảnh/ Video/ I/O (core, imgproc, highgui)



Phát hiện các vật thể (objdetect, features2d, nonfree)
Geometry-based monocular hoặc stereo computer vision (calib3d,
stitching, videostab)
Computational photography (photo, video, superres)
Machine learning & clustering (ml, flann)
CUDA acceleration (gpu)







13


Hình 2: OpenCV
OpenCV có cấu trúc module, nghĩa là gói bao gồm một số thư viện liên kết tĩnh
(static libraries) hoặc thư viện liên kết động (shared libraries). Xin phép liệt kê một
số định nghĩa chi tiết các module phổ biến có sẵn [2] như sau:


Core functionality (core) – module nhỏ gọn để xác định cấu trúc dữ liệu
cơ bản, bao gồm mảng đa chiều dày đặc và nhiều chức năng cơ bản được
sử dụng bởi tất cả các module khác.



Image Processing (imgproc) – module xử lý hình ảnh gồm cả lọc hình
ảnh tuyến tính và phi tuyến (linear and non-linear image filtering), phép
biến đổi hình học (chỉnh size, afin và warp phối cảnh, ánh xạ lại dựa trên
bảng chung), chuyển đổi không gian màu, biểu đồ, và nhiều cái khác.
Video Analysis (video) – module phân tích video bao gồm các tính năng
ước tính chuyển động, tách nền, và các thuật toán theo dõi vật thể.
Camera Calibration and 3D Reconstruction (calib3d) – thuật tốn hình
học đa chiều cơ bản, hiệu chuẩn máy ảnh single và stereo (single and
stereo camera calibration), dự đoán kiểu dáng của đối tượng (object pose
estimation), thuật tốn thư tín âm thanh nổi (stereo correspondence
algorithms) và các yếu tố tái tạo 3D.
2D Features Framework (features2d) – phát hiện các đặc tính nổi bật
của bộ nhận diện, bộ truy xuất thông số, thông số đối chọi.

Object Detection (objdetect) – phát hiện các đối tượng và mô phỏng của
các hàm được định nghĩa sẵn – predefined classes (vd: khuôn mặt, mắt,
cốc, con người, xe hơi,…).







14







High-level GUI (highgui) – giao diện dễ dùng để thực hiện việc giao tiếp
UI đơn giản.
Video I/O (videoio) – giao diện dễ dùng để thu và mã hóa video.
GPU – Các thuật toán tăng tốc GPU từ các modun OpenCV khác.
… và một số module hỗ trợ khác, ví dụ như FLANN và Google test
wrapper, Python binding, v.v.

Hình 3: Cấu trúc của OpenCV
1.2.2 Thư viện Pandas
Thư viện pandas trong python là một thư viện mã nguồn mở, hỗ trợ đắc lực
trong thao tác dữ liệu. Đây cũng là bộ công cụ phân tích và xử lý dữ liệu mạnh mẽ
của ngơn ngữ lập trình python. Thư viện này được sử dụng rộng rãi trong cả nghiên

cứu lẫn phát triển các ứng dụng về khoa học dữ liệu. Thư viện này sử dụng một cấu
trúc dữ liệu riêng là Dataframe. Pandas cung cấp rất nhiều chức năng xử lý và làm
việc trên cấu trúc dữ liệu này. Chính sự linh hoạt và hiệu quả đã khiến cho pandas
được sử dụng rộng rãi.
Tại sao dùng thư viện Pandas


DataFrame đem lại sự linh hoạt và hiệu quả trong thao tác dữ liệu và lập
chỉ mục;

15













Là một công cụ cho phép đọc/ ghi dữ liệu giữa bộ nhớ và nhiều định dạng
file: csv, text, excel, sql database, hdf5;
Liên kết dữ liệu thông minh, xử lý được trường hợp dữ liệu bị thiếu. Tự
động đưa dữ liệu lộn xộn về dạng có cấu trúc;
Dễ dàng thay đổi bố cục của dữ liệu;
Tích hợp cơ chế trượt, lập chỉ mục, lấy ra tập con từ tập dữ liệu lớn.

Có thể thêm, xóa các cột dữ liệu;
Tập hợp hoặc thay đổi dữ liệu với group by cho phép bạn thực hiện các
toán tử trên tập dữ liệu;
Hiệu quả cao trong trộn và kết hợp các tập dữ liệu;
Lập chỉ mục theo các chiều của dữ liệu giúp thao tác giữa dữ liệu cao
chiều và dữ liệu thấp chiều;
Tối ưu về hiệu năng;
Pandas được sử dụng rộng rãi trong cả học thuật và thương mại. Bao gồm
thống kê, thương mại, phân tích, quảng cáo,…

1.2.3 Thư viện NumPy
Numpy (Numeric Python): là một thư viện toán học phổ biến và mạnh mẽ
của Python. Cho phép làm việc hiệu quả với ma trận và mảng, đặc biệt là dữ
liệu ma trận và mảng lớn với tốc độ xử lý nhanh hơn nhiều lần khi chỉ sử
dụng “core Python” đơn thuần.

Hình 4: Thư viện NumPy

1.3. Computer Vision ̶ Thị giác máy tính(CV)
CV là một ngành khoa học với mục đích của nó để hiểu hay xử lý các dữ liệu
dạng hình ảnh và video. Computer Vision có rất nhiều các ứng dụng trong đó
đáng kể có thể kể đến như oto tự lái, giám sát giao thông, nhận diện khuôn
16


mặt ... Deep Learning là một trong những xu hướng tiếp cận của trí tuệ nhân
tạo cho bài tốn Computer Vision và nó có thể được phân loại trong nhiều
bài toán như: phân loại ảnh (classification), nhận diện khoanh vùng đối
tượng (object detection), phân vùng đối tượng (segmentation) và lớp các bài
tốn về sinh ảnh (generation).


Hình 5: Thị giác máy tính

17


CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ BÀI TỐN
2.1 u cầu bài tốn
Sử dụng ngơn ngữ lập trình Python và các thư viện thị giác máy tính như OpenCV
và Pandas để xây dựng chương trình gợi ý số liệu màu sắc để hỗ trợ việc lấy mã
màu một cách dễ dàng hơn
2.2 Các yêu cầu phi chức năng
Bảng 2.1 - Các u cầu phi chức năng của chương trình
Mục

Tên u cầu

Mơ tả yêu cầu
Giao diện hệ thống phải dễ sử dụng, trực quan,

1

Giao diện

2

Tốc độ xử lý

Hệ thống phải xử lý nhanh chóng và chính xác.


3

Tương thích

Tương thích với đa phần các hệ điều hành

thân thiện với người dùng.

2.3 Phân tích thiết kế hệ thống
2.3.1 Các chức năng của hệ thống
Hệ thống xây dựng chức năng sẽ hỗ trợ đắc lực để lấy mã màu từ bất kỳ một hình
ảnh nào trên Windows mà không cần phải sử dụng Photoshop. Bằng việc nhấn đúp
chuột vào vị trí màu sắc, hệ thống sẽ tính tốn khoảng cách từ mỗi màu và tìm màu
ngắn nhất.
2.3.2 Các tác nhân của hệ thống
Dựa vào mô tả bài tốn, ta có thể xác định được các tác nhân chính của hệ
thống như sau:
Tác nhân System: Xử lý hình ảnh, tính tốn khoảng cách, so sánh và trả kết
quả lại cho người dùng.
Tác nhân người dùng: Tìm kiếm màu, chọn màu ưa thích từ hình ảnh, đợi kết
quả từ phía hệ thống
2.3.3 Biểu đồ UseCase tổng quát

18


Hình 6: Biểu đồ Use case tổng quát
System: Hệ thống nhận diện và xử lý số liệu thông qua việc tính tốn khoảng
cách bằng một cơng thức cụ thể để đưa ra tên mà và số liệu của màu đó rồi truyền
đến câu trả lời cho người dùng.

Người dùng: Người dùng thực hiện việc nhấn đúp chuột vào vị trí màu sắc
mong muốn trên một bức hình. Thơng tin vị trí sẽ được truyền đến System để xử lý.
2.3.4 Nguyên lý hoạt động của chương trình

Hình 7: Biểu đồ nguyên lý hoạt động của chương trình

19


Khi người dùng chọn màu bất kỳ từ hình ảnh mang màu sắc, hệ thống sẽ tiếp nhận
và xử lý hình ảnh bằng các bước tính tốn cụ thể, sau đó đem so sánh kết quả giá trị
màu sắc đó với bảng màu có sẵn, tìm kiếm giá trị đúng (gần đúng) để trả lại kết quả
cho người dùng.
Kết quả: Thông số màu sắc sẽ hiển thị cho người dùng qua q trình xử lý số
liệu của System.
2.7.11 Bảng ví dụ giá trị màu CSV
Bảng 2.7 – Bảng ví dụ giá trị màu .csv
Tên màu
viết tắt

Tên màu

Giá trị
Hexa

G

R

B


air_force_blue_raf

Air Force Blue (Raf)

#5d8aa8

93

138

168

air_force_blue_usaf

Air Force Blue(Usaf)

#00308f

0

48

143

air_superiority_blue

Air Superiority Blue

#72a0c1


114

160

193

alabama_crimson

Alabama Crimson

#a32638

163

38

56

alice_blue

Alice Blue

#f0f8f

240

248

255


alizarin_crimson

Alizarin Crimson

#e32636

227

38

54

#c46210

196

alloy_orange

Alloy Orange

20

98

16


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH
3.1 Thiết kế bài toán

3.1.1 Tập dữ liệu
Màu sắc được tạo thành từ 3 màu cơ bản; đỏ, xanh lá cây và xanh lam. Trong
máy tính, chúng ta xác định mỗi giá trị màu trong phạm vi từ 0 đến 255. Vậy chúng
ta có thể xác định màu bằng bao nhiêu cách? Câu trả lời là 256 * 256 * 256 =
16,581,375. Có khoảng 16,5 triệu cách khác nhau để biểu diễn một màu sắc. Khi
cần lấy tên màu, bạn cần ánh xạ các giá trị của từng màu với tên tương ứng của
chúng.
Tệp color.csv bao gồm 865 tên màu cùng với các giá trị RGB và hex của chúng.

Hình 8: Tệp colors.csv

21


3.1.2 Cài đặt thư viện thị giác máy tính OpenCV, Pandas và NumPy
Để cài đặt các thư viện thị giác máy tính này. Mở Cmd và chạy lệnh pip

pip install opencv-python numpy pandas

Sau khi chạy lệnh pip. Đợi trong một vài phút để máy thực hiện cài đặt các thư viện

Hình 9: Hồn thành cài đặt
3.2 Xây dựng chương trình
Bước 1: Lấy hình ảnh từ người dùng
Sử dụng thư viện argparse để tạo một trình phân tích cú pháp đối số. Như vậy có
thể trực tiếp đưa ra một đường dẫn hình ảnh từ dấu nhắc lệnh:
import argparse
ap = argparse.ArgumentParser ()
ap.add_argument ('- i', '--image', Requi = True, help = "Image Path")
args = vars (ap.parse_args ())

img_path = args [' image ']
#Reading image with opencv
img = cv2.imread (img_path)

22


Bước 2 Đọc tệp CSV với Pandas
Thư viện Pandas rất hữu ích khi chúng ta cần thực hiện các thao tác khác nhau
trên các tệp dữ liệu như CSV. pd.read_csv () đọc tệp CSV và tải nó vào DataFrame
của Pandas.
#Reading csv file with pandas and giving names to each column
index=["color","color_name","hex","R","G","B"]
csv = pd.read_csv('colors.csv', names=index, header=None)

Bước 3: Set sự kiện gọi chuột trên cửa sổ
Đầu tiên, tạo một cửa sổ trong đó hình ảnh đầu vào sẽ được hiển thị. Sau đó,
chúng tôi thiết lập một hàm gọi lại sẽ được gọi khi sự kiện chuột xảy ra.
cv2.nameWindow ('image')
cv2.setMouseCallback ('image', draw_ functions)

Bước 4: Tạo chức năng vẽ
Nó sẽ tính tốn các giá trị rgb của pixel mà chúng ta nhấp đúp. Các tham số của
hàm có tên sự kiện, (x, y) tọa độ của vị trí chuột, ... Trong hàm, chúng sẽ kiểm tra
nếu sự kiện được nhấp đúp thì nó sẽ tính tốn và đặt các giá trị r, g, b cùng với x, y
vị trí của chuột.
def draw_ functions (event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDBLCLK:
global b, g, r, xpos, ypos, click
click = True


23


xpos = x
ypos = y
b, g, r = img [y, x]
b = int (b)
g = int (g)
r = int (r)

Bước 5: Tính khoảng cách để lấy tên màu
Để có tên màu, hệ thống sẽ tính tốn khoảng cách (d) và cho chúng ta biết khoảng
màu chúng ta chọn và chọn màu có khoảng cách tối thiểu.
Khoảng cách được tính theo công thức
d = abs (Red - ithRedColor) + (Green - ithGreenColor) + (Blue - ithBlueColor)
def getColorName(R,G,B):
minimum = 10000
for i in range(len(csv)):
d = abs(R- int(csv.loc[i,"R"])) + abs(G- int(csv.loc[i,"G"]))+ abs(Bint(csv.loc[i,"B"]))
if(d<=minimum):
minimum = d
cname = csv.loc[i,"color_name"]
return cname

Bước 6: Hiển thị hình ảnh trên cửa sổ
Bất cứ khi nào sự kiện nhấp đúp xảy ra, nó sẽ cập nhật tên màu và các giá trị RGB
trên cửa sổ.

24



Sử dụng hàm cv2.imshow () , chúng tơi vẽ hình ảnh trên cửa sổ. Khi người dùng
nhấp đúp vào cửa sổ, chúng ta sẽ vẽ một hình chữ nhật và lấy tên màu để vẽ văn
bản trên cửa sổ bằng các hàm cv2.rectangle và cv2.putText () .
while(1):
cv2.imshow("image",img)
if (clicked):
#cv2.rectangle(image, startpoint, endpoint, color, thickness) -1 thickness fills
rectangle entirely
cv2.rectangle(img,(20,20), (750,60), (b,g,r), -1)
#Creating text string to display ( Color name and RGB values )
text = getColorName(r,g,b) + ' R='+ str(r) + ' G='+ str(g) + ' B='+ str(b)
#cv2.putText(img,text,start,font(0-7), fontScale, color, thickness, lineType, (optional
bottomLeft bool) )
cv2.putText(img, text,(50,50),2,0.8,(255,255,255),2,cv2.LINE_AA)
#For very light colours we will display text in black colour
if(r+g+b>=600):
cv2.putText(img, text,(50,50),2,0.8,(0,0,0),2,cv2.LINE_AA)
clicked=False
#Break the loop when user hits 'esc' key
if cv2.waitKey(20) & 0xFF ==27:
break
cv2.destroyAllWindows()

Bước 7: Chạy chương trình
25



×