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á nh
Trang 1ĐẠ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
TRÌNH GỢI Ý SỐ LIỆU MÀU SẮC
Trang 2MỤ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 TOÁN 21
2.1 Yêu cầu bài toán 21
2.2 Các yê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
Trang 33.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
Trang 4MỞ ĐẦ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ọilĩ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ộtphầ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êncũ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àumì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
Trang 5LỜ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 trongtrường Đại học Công nghệ thông tin nói chung và các thầy cô giáo trong khoa Khoahọ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ệuquả, đây là những điều rất cần thiết cho em trong quá trình học tập và công tác saunà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 quá trình học tập, nghiên cứu và hoàn thànhbài đồ án cơ sở 4 này
Một lần nữa, em xin chân thành cảm ơn.!
Trang 6THÔ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
Hệ đào tạo : Chính quy
Điện thoại : 0355555377
Email : vtmnguyet.18it2@sict.udn.vn
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, cungcấ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 aimuốn lấy mã màu hình ảnh có thể sử dụng tới công cụ Color Picker hoặcEyedropper tool
Tuy nhiên, không phải ai cũng có thể sử dụng Photoshop thành thạo, cũngnhư 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
- Chương trình đơn giản, dễ sử dụng
- Nắm bắt được công nghệ AI hiện nay
Trang 74 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ântạ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 hoà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
Trang 8DANH MỤC CÁC TỪ VIẾT TẮT
1 API Application Programming
Interface Giao diện lập trình ứng dụng.
2 DOM Document Object Model Các đối tượng thao tác văn bản
5 SVG Scalable Vector Graphics
Ngôn ngữ đánh dấu (markuplanguage) XML và dùng để miêu
tả các hình ảnh đồ họa véc tơ haichiều, tĩnh và hoạt hình, thườngdành cho ứng dụng trên các trangmạng
6 UML Unified Modeling
Language
Ngôn ngữ mô hình gồm các kýhiệu đồ họa mà các phương pháphướng đối tượng sử dụng để thiết
kế các hệ thống thông tin mộtcách nhanh chóng
DANH MỤC CÁC HÌNH VẼ
Trang 9Hì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: Hoà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
Trang 10DANH 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
Trang 11CHƯƠNG 1: CƠ SỞ LÝ THUYẾT1.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 yê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
Trang 12Tí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 trungvà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ỗilầ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ạchtrê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ụngcủ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àngtră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 ứngdụ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ớiOOP, 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ằngcá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 OpenCVviế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ăngtăng tốc GPU cho các hoạt động theo real-time
Trang 13OpenCV đượ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 toán và chuyên 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 baogồ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ómtí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)
Trang 14Hì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épbiến đổi hình học (chỉnh size, afin và warp phối cảnh, ánh xạ lại dựa trênbả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 toán hình
học đa chiều cơ bản, hiệu chuẩn máy ảnh single và stereo (single andstereo camera calibration), dự đoán kiểu dáng của đối tượng (object poseestimation), thuật toán thư tín âm thanh nổi (stereo correspondencealgorithms) 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,…)
Trang 15 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 testwrapper, 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ựctrong 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êncứ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ấutrúc dữ liệu riêng là Dataframe Pandas cung cấp rất nhiều chức năng xử lý và làmviệ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;
Trang 16 Là một công cụ cho phép đọc/ ghi dữ liệu giữa bộ nhớ và nhiều định dạngfile: 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ệudạ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
Trang 17mặt Deep Learning là một trong những xu hướng tiếp cận của trí tuệ nhântạo cho bài toán Computer Vision và nó có thể được phân loại trong nhiềubài toán như: phân loại ảnh (classification), nhận diện khoanh vùng đốitượng (object detection), phân vùng đối tượng (segmentation) và lớp các bàitoán về sinh ảnh (generation).
Hình 5: Thị giác máy tính