Nhờ sự hướng dẫn của thầy, chúng em đã tích lũy được nhiều kiến thức bổ ích và hoàn thành bài tập lớn với đề tài "Xây dựng phần mềm chỉnh sửa ảnh cơ bản bằng Python".. Chính vì thế, chún
Trang 1BÁO CÁO BÀI TẬP LỚN
ĐỀ TÀI: XÂY DỰNG PHẦN MỀM CHỈNH SỬA ẢNH
Giảng viên hướng dẫn: TS Vũ Hữu Tiến
Môn học: Xử lý và truyền thông đa phương tiện
Nhóm sinh viên: 02
Trang 2LỜI CẢM ƠN
Trong thời gian 3 tháng học tập tại trường, nhóm chúng em xin gửi lời cảm ơn sâu sắc đến thầy giáo Vũ Hữu Tiến đã quan tâm, giảng dạy và hướng dẫn tận tình, đầy tâm huyết trong suốt quá trình học tập môn Xử lý và truyền thông đa phương tiện Nhờ
sự hướng dẫn của thầy, chúng em đã tích lũy được nhiều kiến thức bổ ích và hoàn thành bài tập lớn với đề tài "Xây dựng phần mềm chỉnh sửa ảnh cơ bản bằng Python"
Tuy nhiên, do kiến thức về lập trình còn hạn chế, bài tập của chúng em không tránh khỏi những thiếu sót Chúng em mong thầy xem xét và góp ý để bài báo cáo được hoàn thiện hơn
Cuối cùng, nhóm chúng em xin kính chúc thầy sức khỏe dồi dào, hạnh phúc và thành công trong sự nghiệp trồng người Chúc thầy luôn truyền lửa đam mê và tiếp tục dìu dắt nhiều thế hệ học trò đến bến bờ tri thức
Chúng em xin trân trọng cảm ơn!
Nhóm sinh viên thực hiện,
[Nhóm 2]
Trang 3MỤC LỤC
LỜI CẢM ƠN 2
MỤC LỤC 3
DANH MỤC CÁC HÌNH VẼ 5
MỞ ĐẦU 8
1 Đặt vấn đề 8
2 Mục tiêu chọn đề tài 8
3 Bố cục đề tài 9
CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI 10
1.1 Giới thiệu về Xử lý ảnh 10
1.1.1 Tổng quan về xử lý ảnh 10
1.1.2 Các giai đoạn chính về xử lý ảnh 10
1.1.3 Những khái niệm cơ bản trong Xử lý ảnh 11
1.2 Công nghệ sử dụng 16
1.2.1 Python 16
1.2.2 Tkinter 17
1.2.3 CustomTkinter 19
1.2.4 Thư viện xử lí ảnh PIL 19
1.2.5 Visual Studio Code 20
1.3 Tổng quan chức năng 20
1.4 Kết luận chương 1 21
CHƯƠNG 2: MÔ TẢ VỀ SẢN PHẨM 22
2.1 Xác định yêu cầu 22
2.2 Ý tưởng thiết kế giao diện 22
2.3 Thiết kế giao diện 22
2.3.1 Giao diện mở ảnh 22
2.3.2 Giao diện chính 23
Trang 42.4 Phát triển phần mềm 24
2.4.1 Cài đặt công nghệ sử dụng 24
2.4.2 Đọc ảnh 25
2.4.3 Hiển thị ảnh 25
2.4.4 Quản lý và khai báo tham số 26
2.4.5 Các chức năng xử lí ảnh 27
2.5 Kết luận chương 2 31
CHƯƠNG 3: CÀI ĐẶT PHẦN MỀM, THỬ NGHIỆM VÀ ĐÁNH GIÁ 32
3.1 Hướng dẫn cài đặt phần mềm 32
3.2 Kết quả 33
3.3 Đánh giá 39
3.3.1 Thông tin chung 39
3.3.2 Khảo sát trải nghiệm người dùng đối với phần mềm 40
3.4 Kết luận chương 3 43
KẾT LUẬN 44
A Kết quả đạt được 44
B Đánh giá hạn chế 44
C Định hướng phát triển trong tương lai 44
DANH MỤC TÀI LIỆU THAM KHẢO 45
Trang 5DANH MỤC CÁC HÌNH VẼ
Hình 1 1: Mô hình tổng quát của một hệ thống xử lý ảnh 10
Hình 1 2: So sánh giữa ảnh thật và ảnh kỹ thuật số 11
Hình 1 3: So sánh chất lượng của ảnh có độ phân giải thấp và cao 12
Hình 1 4: Ví dụ về ảnh nhị phân 13
Hình 1 5: Ví dụ về ảnh xám 13
Hình 1 6: Ví dụ về một ma trận biểu diễn ảnh xám 13
Hình 1 7: Ví dụ về ảnh màu 14
Hình 1 8: Ví dụ về một ma trận biểu diễn ảnh màu 14
Hình 1 9: Ví dụ về ma trận sau khi tách thành 3 channel 14
Hình 1 10: Công thức tích chập giữa hàm ảnh f(x,y) và bộ lọc k(x,y) 15
Hình 1 11: Logo của Python 16
Hình 1 12: Ví dụ về một đoạn code Python 16
Hình 1 13: Ví dụ về một đoạn code C++ 17
Hình 1 14: Logo của Tkinter 18
Hình 1 15: Cú pháp Tkinter để tạo một giao diện 18
Hình 1 16: Giao diện đơn giản được tạo bằng Tkinter 18
Hình 1 17: Logo của Visual Studio Code 20
Hình 2 1: Giao diện mở ảnh 22
Hình 2 2: Giao diện chính 23
Hình 2 3: Giao diện của Menu Position 23
Hình 2 4: Giao diện của Menu Color 24
Hình 2 5: Giao diện của Menu Effect 24
Hình 2 6: Giao diện của Menu Export 24
Hình 2 7: Đoạn code thực hiện chức năng đọc ảnh 25
Hình 2 8: Đoạn code thực hiện chức năng mở ảnh 25
Hình 2 9: Đoạn code thực hiện chức năng hiển thị ảnh 26
Hình 2 10: Đoạn code khai báo các tham số 27
Hình 2 11: Ma trận biến đổi cho phép xoay 28
Trang 6Hình 2 12: Đoạn code thực hiện chức năng xoay và thu phóng ảnh 28
Hình 2 13: Đoạn code thực hiện chức năng lật ảnh 28
Hình 2 14: Đoạn code thực hiện chức năng điều chỉnh độ sáng 29
Hình 2 15: Đoạn code thực hiện chức năng điều chỉnh độ rực màu 29
Hình 2 16: Đoạn code thực hiện chức năng chuyển thành ảnh đen trắng và đảo màu 30
Hình 2 17: Đoạn code của chức năng làm mờ ảnh, điều chỉnh độ tương phản và độ sắc nét 30
Hình 2 18: Ma trận sử dụng cho hiệu ứng Emboss trong PIL 30
Hình 2 19: Ma trận sử dụng cho hiệu ứng Find edges trong PIL 31
Hình 2 20: Ma trận sử dụng cho hiệu ứng Edge enhance trong PIL 31
Hình 2 21: Ma trận sử dụng cho hiệu ứng Contour trong PIL 31
Hình 3 1: Mã QR truy cập đường link tải phần mềm 32
Hình 3 2: Hướng dẫn tải phần mềm 32
Hình 3 3: Hướng dẫn giải nén file 32
Hình 3 4: Hướng dẫn mở phần mềm 1 33
Hình 3 5: Hướng dẫn mở phần mềm 2 33
Hình 3 6: Ảnh gốc sử dụng để thử phần mềm 34
Hình 3 7: Kết quả của ảnh sau khi xoay 34
Hình 3 8: Kết quả của ảnh sau khi phóng to 34
Hình 3 9: Kết quả của ảnh sau khi lật theo chiều X 35
Hình 3 10: Kết quả của ảnh sau khi lật theo chiều Y 35
Hình 3 11: Kết quả của ảnh sau khi tăng độ sáng 35
Hình 3 12: Kết quả của ảnh sau khi tăng độ rực màu 36
Hình 3 13: Kết quả của ảnh sau khi chuyển thành ảnh đen trắng 36
Hình 3 14: Kết quả của ảnh sau khi đảo ngược màu 36
Hình 3 15: Kết quả của ảnh sau khi làm mờ ảnh 37
Hình 3 16: Kết quả của ảnh sau khi tăng độ tương phản 37
Hình 3 17: Kết quả của ảnh sau khi tăng độ sắc nét 37
Hình 3 18: Kết quả của ảnh sau khi sử dụng hiệu ứng Emboss 38
Trang 7Hình 3 19: Kết quả của ảnh sau khi sử dụng hiệu ứng Find edges 38
Hình 3 20: Kết quả của ảnh sau khi sử dụng hiệu ứng Contour 38
Hình 3 21: Kết quả của ảnh sau khi sử dụng hiệu ứng Edge enhance 39
Hình 3 22: Mã QR của đường link truy cập khảo sát 39
Hình 3 23: Kết quả khảo sát về độ tuổi của người tham gia 39
Hình 3 24: Kết quả khảo sát về giới tính của người tham gia 40
Hình 3 25: Kết quả khảo sát về số thời gian người tham gia đã sử dụng phần mềm chỉnh sửa ảnh 40
Hình 3 26: Kết quả khảo sát về mức độ hài lòng sau khi trải nghiệm phần mềm 41
Hình 3 27: Kết quả khảo sát về mức độ hài lòng về mức độ sử dụng tài nguyên hệ thống của phần mềm 41
Hình 3 28: Kết quả khảo sát về mức độ hài lòng về tốc độ xử lý của phần mềm 41
Hình 3 29: Kết quả khảo sát về mức độ hài lòng về độ ổn định của phần mềm 42
Hình 3 30: Kết quả khảo sát về mức độ hài lòng về giao diện của phần mềm 42 Hình 3 31: Kết quả khảo sát về tính năng được sử dụng nhiều nhất 42
Hình 3 32: Kết quả khảo sát về mức độ hài lòng về tính hữu dụng của phần mềm 43
Hình 3 33: Kết quả khảo sát về tỉ lệ người dùng sẽ chia sẻ phần mềm cho mọi người xung quanh 43
Trang 8MỞ ĐẦU
1 Đặt vấn đề
Ngày nay, với sự phát triển bùng nổ công nghệ, các thiết bị camera kỹ thuật số
và smartphone ngày càng phổ biến với khả năng chụp ảnh chất lượng cao Cùng với đó, mạng xã hội và các nền tảng trực tuyến càng ngày càng phát triển Từ đó, tạo điều kiện cho mọi người chia sẻ hình ảnh một cách dễ dàng
Qua khảo sát và nghiên cứu thực tế, nhu cầu về việc chụp ảnh, ghi lại những khoảnh khắc, tạo ra những đoạn phim chất lượng, màu sắc đẹp, độ phân giải cao Minh chứng rõ ràng nhất là Apple đã liên tục trau dồi, phát triển camera chụp ảnh để tạo ra những bức ảnh đẹp nhất, chân thực nhất Bên cạnh một thiết bị chụp ảnh tốt, không thể thiếu những phần mềm chỉnh sửa ảnh chất lượng, nó là cách tay đắc lực cho các nhiếp ảnh gia hay kể cả những bạn trẻ thích chụp ảnh Theo khảo sát, trung bình một chiếc điện thoại đều có ít nhất 1-2 app chỉnh sửa ảnh và con số này là 2-3 đối với các bạn nữ Hiện nay, có rất nhiều phần mềm chỉnh sửa ảnh nổi tiếng mà chúng ta có thể bắt gặp những thương hiệu, logo qua những tấm ảnh được đăng tải trên mạng xã hội hằng ngày Khi chúng ta nghĩ đến việc chỉnh sửa ảnh, có lẽ Adobe Photoshop sẽ xuất hiện đầu tiên trong đầu chúng ta Đây là một phần mềm chỉnh sửa ảnh tối ưu, chuyên nghiệp và thông dụng nhất hiện nay Tuy nhiên, đối với các người dùng phổ thông thì Adobe Photoshop quá phức tạp và đòi hỏi kỹ năng cao Ngoài ra, Adobe Photoshop là một phần mềm mất phí (với 29.99 USD mỗi tháng), không phù hợp với nhiều người
Chính vì thế, chúng em đã thực hiện đề tài “Xây dựng phần mềm chỉnh sửa cơ bản với Python” nhằm giúp người dùng dễ dàng chỉnh sửa ảnh theo ý muốn, tiết kiệm thời gian và chi phí so với việc sử dụng các phần mềm chỉnh sửa ảnh thu phí
2 Mục tiêu chọn đề tài
Đề tài “Phần mềm chỉnh sửa ảnh cơ bản với Python” được xây dựng với mục đích cung cấp cho người dùng một công cụ chỉnh sửa ảnh đơn giản, dễ sử dụng và miễn phí Đối tượng hướng đến là người dùng phổ thông nên mục tiêu của đề tài là tạo ra phần mềm chỉnh sửa ảnh cơ bản bao gồm các chức năng như:
+ Cắt, xoay, chỉnh kích thước ảnh
+ Điều chỉnh độ sáng, độ tương phản
+ Thêm các hiệu ứng cho ảnh
Ngoài ra, đề tài còn góp phần nâng cao một số kỹ thuật thao tác với ảnh, lập trình giao diện GUI (Graphic User Interface) bằng Tkinter bằng Python và giúp chúng em hiểu được một số thuật toán về xử lý ảnh
Trang 93 Bố cục đề tài
Đề tài “ Xây dựng phần mềm chỉnh sửa ảnh cơ bản với Python” gồm 3 chương:
Chương 1: Tổng quan đề tài Chương 2: Mô tả về sản phẩm của đề tài Chương 3: Cài đặt phần mềm, thử nghiệm và đánh giá
Trang 10CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI
lý ảnh đã được ứng dụng và phát triển trong rất nhiều lĩnh vực quan trọng như:
+ Trong lĩnh vực an ninh bảo mật: Nhận diện khuôn mặt người, nhận diện vân tay, mẫu mắt, hình ảnh người và các thiết bị khác
+ Trong lĩnh vực quân sự: Xử lý và nhận diện các trang thiết bị quân sự, phục vụ trinh thám, giám sát các mục tiêu quan trọng
+ Trong lĩnh vực giải trí: Phục vụ quá trình làm phim và tạo ra các trò chơi điện
tử, xử lý đồ họa
+ Trong lĩnh vực y tế: Xử lý ảnh chụp X-quang, MRI, xử lý ảnh y sinh,… + Trong lĩnh vực AI: nhận dạng và xử lý ảnh của robot, giao tiếp giữa robot với con người, xử lý đồ họa
1.1.2 Các giai đoạn chính về xử lý ảnh
Mô hình tổng quát của một hệ thống xử lý ảnh như sau:
Hình 1 1: Mô hình tổng quát của một hệ thống xử lý ảnh
1.1.2.1 Thu nhận ảnh
Ảnh có thể thu nhận qua camera Thông thường ảnh thu nhận qua camera là tín hiệu tương tự, nhưng cũng có thể là tín hiệu số hoá Ảnh cũng có thể thu nhận từ vệ tinh qua bộ cảm ứng (sensor), hay ảnh, tranh được quét trên scanner
Trang 11tử của ảnh số tại tọa độ (x,y) với độ xám hoặc màu nhất định Khoảng cách giữa các pixel được thiết lập sao cho mắt người nhìn bình thường không phân biệt được ranh giới giữa chúng
Hình 1 2: So sánh giữa ảnh thật và ảnh kỹ thuật số
Trang 121.1.3.2 Độ phân giải của hình ảnh
Độ phân giải bức ảnh (Image Resolution) chỉ lượng thông tin được chứa đựng trong một tập tin ảnh hiển thị trên màn hình Hay nói cách khác đó số pixel trong một hình ảnh số
Đơn vị đo độ phân giải là pixel, megapixel:
Các thang giá trị mức xám thông thường là: 16, 32, 64, 128, 256 Mức 256 là mức phổ biến nhất
1.1.3.4 Độ sâu màu của ảnh số
Độ sâu màu của ảnh số là đại lượng mô tả khả năng biểu diễn các màu sắc trong ảnh số khi thể hiện trên các thiết bị màn hình hoặc in ấn Đó chính là thông số thể hiện
số lượng các bit được sử dụng để biểu thị màu sắc của mỗi pixel
Từ đó ta phân hình ảnh thành 3 loại:
+ Ảnh nhị phân + Ảnh xám + Ảnh màu
Trang 131.1.3.5 Ảnh nhị phân
Ảnh nhị phân là ảnh đen trắng, mỗi pixel chỉ có 1 giá trị 0 hoặc 255, dùng 1 bit
để biểu diễn một pixel
Khi biểu diễn ảnh nhị phân hay ảnh xám, ta chỉ cần một ma trận m x n, mỗi phần
tử của ma trận là giá trị xám của một pixel
Hình 1 6: Ví dụ về một ma trận biểu diễn ảnh xám
Trang 141.1.3.7 Ảnh màu
Ảnh màu là ảnh thông thường ta hay nhìn thấy nhất, ở đây ta sẽ xét ảnh theo mô hình RGB: đỏ, xanh lục và xanh lam được tổ hợp với nhau theo nhiều phương thức khác nhau để tạo thành nhiều màu khác nhau Mỗi pixel của ảnh màu có 3 giá trị xám tương ứng là giá trị của màu đỏ (R), giá trị của màu xanh lục (G) và giá trị của màu xanh lam (B), mỗi giá trị là số nguyên nằm trong đoạn [0,255] Ta dùng 24 bit để biểu diễn một pixel
Hình 1 7: Ví dụ về ảnh màu
Khi biểu diễn một ảnh màu, sẽ có dạng nhau sau:
Hình 1 8: Ví dụ về một ma trận biểu diễn ảnh màu
Để tiện lưu trữ và xử lý không thể lưu trong 1 ma trận như thế kia mà sẽ tách mỗi giá trị trong mỗi pixel ra một ma trận riêng
Hình 1 9: Ví dụ về ma trận sau khi tách thành 3 channel
Trang 15Mỗi ma trận được tách ra sẽ được gọi là một channel Vì vậy, ảnh màu sẽ có 3 channel: Channel đỏ, Channel xanh lục, Channel xanh lam
1.1.3.8 Chuyển hệ màu của ảnh
Mỗi pixel trong ảnh màu được biểu diễn bằng 3 giá trị (R,G,B) còn trong ảnh xám chỉ cần 1 giá trị x để biểu diễn
Khi chuyển từ ảnh màu sang ảnh xám ta có thể dùng công thức sau:
x = r * 0.299 + g*0.587 + b*0.114
1.1.3.9 Tích chập (Convolution)
Convolution là kỹ thuật quan trọng trong Xử Lý Ảnh, được sử dụng chính yếu trong các phép toán trên ảnh như: đạo hàm ảnh, làm trơn ảnh, trích xuất biên cạnh trong ảnh
Theo toán học, tích chập là phép toán tuyến tính, cho ra kết quả là một hàm bằng việc tính toán dựa trên hai hàm đã có (f và g)
Ví dụ: đối với phép lọc ảnh, phép tích chập giữa ma trận lọc và ảnh, cho ra kết quả ảnh đã được xoá nhiễu (làm mờ)
Công thức tích chập giữa hàm ảnh f(x, y) và bộ lọc k(x, y) (kích thước mxn):
Hình 1 10: Công thức tích chập giữa hàm ảnh f(x,y) và bộ lọc k(x,y)
Thành phần không thể thiếu của phép tích chập là ma trận kernel (bộ lọc) Điểm neo (anchor point) của kernel sẽ quyết định vùng ma trận tương ứng trên ảnh để tích chập, thông thường anchor point được chọn là tâm của kernel Giá trị mỗi phần tử trên kernel được xem như là hệ số tổ hợp với lần lượt từng giá trị độ xám của điểm ảnh trong vùng tương ứng với kernel
Phép tích chập được hình dung thực hiện bằng việc dịch chuyển ma trận kernel lần lượt qua tất cả các điểm ảnh trong ảnh, bắt đầu từ góc bên trái trên của ảnh và đặt anchor point tương ứng tại điểm ảnh đang xét Ở mỗi lần dịch chuyển, thực hiện tính toán kết quả mới cho điểm ảnh đang xét bằng công thức tích chập
Trang 161.2 Công nghệ sử dụng
1.2.1 Python
Python là một ngôn ngữ lập trình thông dịch do Guido van Rossum tạo ra năm
1990, nó được xem là ngôn ngữ lập trình có hình thức rất đẹp, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình Cấu trúc của Python còn cho phép người sử dụng viết
mã lệnh với số lần gõ phím tối thiểu, như nhận định của chính Guido van Rossum trong một bài phỏng vấn ông Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ
tự động; do vậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý Python có thể được dụng trong rất nhiều lĩnh vực như phát triển phần mềm, phát triển web, phân tích dữ liệu, xử lý ảnh,… và nó hoàn toàn có thể chạy trên nhiều
hệ điều hành khác nhau như: Unix, MS-DOS, Window, MacOS,…
Hình 1 11: Logo của Python
Ưu điểm của Python:
+ Cú pháp đơn giản: Python là một ngôn ngữ lập trình phổ biến, có cộng đồng dùng và nguồn tài liệu phong phú Cú pháp Python đơn giản, dễ hiểu, giúp người mới bắt đầu dễ dàng tiếp cận và học tập So với các ngôn ngữ lập trình khác như: C, C++, Java, Python giúp tiết kiệm thời gian và công sức hơn Ta hãy dùng so sánh 2 đoạn code thực hiện cùng một nhiệm vụ được biên soạn bằng ngôn ngữ Python và C++:
Hình 1 12: Ví dụ về một đoạn code Python
Trang 17Hình 1 13: Ví dụ về một đoạn code C++
+ Thư viện hỗ trợ mạnh mẽ: Python có nhiều thư viện hỗ mạnh mẽ như: OpenCV, Pillow, Matplotlib,… Các thư viện này cung cấp nhiều hàm và công cụ sẵn có giúp đơn giản hóa việc xử lý các tác vụ chỉnh sửa ảnh như cắt, xoay, điều chỉnh kích thước, điều chỉnh độ sáng, độ tương phản,… Nhờ sử dụng các thư viện hỗ trợ, việc phát triển phần mềm chỉnh sửa ảnh sẽ trở nên hiệu quả và nhanh chóng hơn
+ Khả năng đa nền tảng: Python có thể được sử dụng để phát triển phần mềm cho nhiều hệ điều hành khác nhau như: Window, macOS, Linux, Android, IOS Từ đó, giúp phần mềm chỉnh sửa ảnh có thể hoạt động trên nhiều thiết bị khác nhau, đáp ứng nhu cầu sử dụng của người dùng đa dạng
+ Hiệu suất : Python có có tốc độ thực thi tương đối nhanh, đủ để đáp ứng các yêu cầu cơ bản của phần mềm chỉnh sửa ảnh Ngoài ra, Python còn có khả năng tối ưu hóa hiệu suất bằng cách sử dụng các thư viện và công cụ phù hợp
+ Cộng đồng hỗ trợ: Python có cộng đồng người dùng lớn và hoạt động tích cực, luôn sẵn sàng hỗ trợ và giải đáp thắc mắc cho người mới bắt đầu
Với những ưu điểm trên, chúng em quyết định sử dụng Python để thực hiện đề tài này
1.2.2 Tkinter
Tkinter là một thư viện trong ngôn ngữ lập trình Python được sử dụng để tạo giao diện đồ họa người dùng (GUI – Graphic User Interface) Tkinter là một phần của thư viện tiêu chuẩn của Python và đã được tích hợp sẵn trong hầu hết các cài đặt Python Điều này giúp cho Tkinter trở thành một lựa chọn phổ biến cho việc phát triển ứng dụng với giao diện đồ họa đơn giản trong Python Một số đặc điểm của Tkinter bao gồm khả năng tạo các thành phần giao diện như cửa sổ, nút, ô văn bản, và các widget khác để
Trang 18tương tác với người dùng Tkinter cung cấp cả các sự kiện và phương thức để xử lý tương tác người dùng và thay đổi trạng thái của ứng dụng
Hình 1 14: Logo của Tkinter
Ưu điểm:
+ Dễ học, dễ sử dụng: Tkinter là thư viện GUI mặc định đi kèm với Python, không cần cài đặt thêm Cú pháp Tkinter đơn giản, dễ hiểu, giúp người mới bắt đầu dễ dàng tạo ra giao diện người dùng cho phần mềm
Hình 1 15: Cú pháp Tkinter để tạo một giao diện
Hình 1 16: Giao diện đơn giản được tạo bằng Tkinter
Trang 19+ Nhẹ và nhanh: Tkinter là thư viện GUI không tốn nhiều tài nguyên hệ thống Nhờ vậy, phần mềm chỉnh sửa ảnh sử dụng Tkinter sẽ hoạt động mượt mà, ổn định trên nhiều cấu hình máy khác nhau, kể cả những máy có cấu hình thấp
+ Cộng đồng hỗ trợ: Tkinter là thư viện GUI phổ biến, có cộng đồng người dùng lớn và hoạt động tích cực Ở trên các diễn đàn, trang web có rất nhiều tài liệu cho việc học tập và sử dụng Tkinter
+ Tích hợp tốt với Python: Tkinter được tích hợp sẵn với Python, giúp việc kết nối giao diện người dùng với mã xử lý ảnh trở nên dễ dàng và hiệu quả Nhờ vậy, người nghiên cứu có thể tập trung vào việc phát triển các chức năng chỉnh sửa ảnh mà không cần lo lắng về các vấn đề liên quan đến giao diện người dùng
1.2.3 CustomTkinter
CustomTkinter là phần mở rộng của mô-đun Tkinter trong Python Nó cung cấp các thành phần UI bổ sung so với Tkinter và chúng có thể được tùy chỉnh theo nhiều cách khác nhau
Ví dụ: chúng ta có thể tùy chỉnh một nút bằng CustomTkinter, chúng ta có thể thực hiện các tùy chỉnh như thêm hình ảnh, làm tròn các cạnh, thêm đường viền xung quanh nó, v.v
1.2.4 Thư viện xử lý ảnh PIL
PIL là viết tắt của Python Image Library Đây là một trong những thư viện mã nguồn mở phổ biến cho xử lý ảnh trong Python Nó hỗ trợ nhiều định dạng hình ảnh như: JPG, PNG, BMP, TIFF, Thư viện giúp chúng ta thực hiện nhiều thao tác trên hình ảnh như xoay, thay đổi kích thước, cắt xén,… thông qua nhiều hàm
PIL có các ưu điểm sau:
+ Dễ sử dụng: Cú pháp đơn giản, dễ hiểu, phù hợp cho người mới bắt đầu + Hỗ trợ nhiều định dạng ảnh: Đáp ứng nhu cầu xử lý nhiều loại ảnh khác nhau + Tốc độ: Tương đối nhanh, đủ để đáp ứng các yêu cầu cơ bản của phần mềm chỉnh sửa ảnh
+ Cộng đồng hỗ trợ lớn: Nhiều tài liệu hướng dẫn và diễn đàn hỗ trợ giải đáp thắc mắc
+ Tích hợp tốt với Python: Dễ dàng kết nối với mã xử lý ảnh khác
Trang 201.2.5 Visual Studio Code
Visual Studio Code là một trong những trình soạn thảo mã nguồn rất phổ biến được các lập trình viên sử dụng Visual Studio Code hay còn được viết tắt là VS Code Trình soạn thảo này vận hành mượt mà trên các nền tảng như Windows, macOS, Linux Hơn thế nữa, VS Code còn cho khả năng tương thích với những thiết bị máy tính có cấu hình tầm trung vẫn có thể sử dụng dễ dàng Với các ưu điểm nổi bật là sự nhanh chóng, nhẹ, hỗ trợ đa nền tảng cùng nhiều tính năng và là mã nguồn mở chính Visual Studio Code ngày càng được ưa chuộng sử dụng, là lựa chọn hàng đầu của các lập trình viên
Hình 1 17: Logo của Visual Studio Code
Một số ưu điểm của Visual Studio Code:
+ Đa dạng ngôn ngữ lập trình giúp người dùng thỏa sức sáng tạo và sử dụng như HTML, CSS, JavaScript, C++, Python…
+ Ngôn ngữ, giao diện tối giản, thân thiện, giúp các lập trình viên dễ dàng định hình nội dung
+ Các tiện ích mở rộng rất đa dạng và phong phú
+ Tích hợp các tính năng quan trọng như tính năng bảo mật (Git), khả năng tăng tốc xử lý vòng lặp (Debug),…
+ Đơn giản hóa việc tìm quản lý hết tất cả các Code có trên hệ thống
+ Điều chỉnh độ sáng của ảnh (Brightness)
+ Điều chỉnh độ rực của ảnh (Vibrance)
+ Chuyển ảnh thành ảnh trắng đen (Black/White)
+ Đảo màu của ảnh (Invert Color)
Trang 21+ Điều chỉnh độ mờ của ảnh (Blur)
+ Điều chỉnh độ tương phản của ảnh (Contrast)
+ Điều chỉnh độ sắc nét của ảnh (Sharpness)
+ Thêm một số bộ lọc cho ảnh
1.4 Kết luận chương 1
Chương 1 của báo cáo đã giới thiệu lý do chọn đề tài, tập trung vào sự phát triển của công nghệ số, mạng xã hội và các nền tảng trực tuyến Nói về nhu cầu chỉnh sửa hình ảnh của con người trong cuộc sống hiện nay
Mục tiêu của đề tài “Xây dựng phần mềm chỉnh sửa ảnh cơ bản với Python” là đáp ứng nhu cầu chỉnh sửa ảnh cơ bản của những người dùng phổ thông Đề tài góp phần nâng cao kỹ năng lập trình, một số kỹ thuật thao tác với ảnh, lập trình giao diện GUI Đề tài sử dụng ngôn ngữ lập trình Python cùng với các thư viện kèm theo như: Tkinter, PIL
Chương 1 đã cung cấp cái nhìn tổng quan về lý do thực hiện đề tài, mục tiêu, cơ
sở lý thuyết và công nghệ cho việc phát triển phần mềm chỉnh sửa ảnh cơ bản nhằm đáp ứng nhu cầu hiện nay Tiếp theo, chương 2 sẽ mô tả về sản phẩm của đề tài và các bước thực hiện
Trang 22CHƯƠNG 2: MÔ TẢ VỀ SẢN PHẨM
2.1 Xác định yêu cầu
Đề tài “Xây dựng phần mềm chỉnh sửa ảnh cơ bản với Python” được tạo ra với mục đích phát triển một phần mềm chỉnh sửa ảnh cơ bản, dễ sử dụng và miễn phí cho người dùng phổ thông
Đề tài sẽ có các chức năng cơ bản như: xoay ảnh, thu phóng ảnh, điều chỉnh độ sáng, độ tương phản, độ sắc nét, làm mờ ảnh,…
2.2 Ý tưởng thiết kế giao diện
Dựa trên các yêu cầu trên, giao diện phải tạo ra phải đẹp và thân thiện, đồng thời tối ưu hóa trải nghiệm người dùng Sự đơn giản, màu sắc quen thuộc kết hợp với nền tối
có thể giúp người dùng giảm mỏi mắt và các tác động tiêu cực của ánh sáng xanh lên đôi mắt trong một số trường hợp
2.3 Thiết kế giao diện