1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO BÀI TẬP LỚN XỬ LÝ VÀ TRUYỀN THÔNG ĐA PHƯƠNG TIỆN

19 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG - KHOA ĐA PHƯƠNG TIỆN -

BÁO CÁO BÀI TẬP LỚN

XỬ LÝ VÀ TRUYỀN THÔNG ĐA PHƯƠNG TIỆN

Giảng viên hướng dẫn : Vũ Hữu Tiến Nhóm bài tập : 06

Trang 2

2.2 Thư viện OpenCV 5

2.3 Thư viện PIL/Pillow 6

2.4 Thư viện Tkinter 7

III Kết quả và đánh giá 14

1 Kết quả khảo sát người dùng 14

2 Một số nhận xét khác từ người dùng: 16

TÀI LIỆU THAM KHẢO 18

Trang 3

LỜI CẢM ƠN

Đầu tiên, nhóm em xin gửi lời cảm ơn chân thành đến Trường Học viện Công nghệ Bưu chính Viễn Thông đã đưa môn học Xử lý và truyền thông đa phương tiện vào trương trình giảng dạy

Đặc biệt, em xin gửi lời cảm ơn sâu sắc đến giảng viên bộ môn - Thầy Vũ Hữu Tiến đã dạy dỗ, truyền đạt những kiến thức quý báu cho chúng em trong suốt thời gian học tập vừa qua Trong thời gian tham gia lớp học Xử lý và truyền thông đa phương tiện của thầy, chúng em đã có thêm cho mình nhiều kiến thức bổ ích, tinh thần học tập hiệu quả, nghiêm túc Đây chắc chắn sẽ là những kiến thức quý báu, là hành trang để chúng em có thể vững bước sau này

Bộ môn Xử lý và truyền thông đa phương tiện là môn học tuy có hơi khó nhưng rất thú vị, vô cùng bổ ích và có tính thực tế cao Đảm bảo cung cấp đủ kiến thức, gắn liền với nhu cầu thực tiễn của sinh viên

Tuy nhiên, do vốn kiến thức còn nhiều hạn chế và khả năng tiếp thu thực tế còn nhiều bỡ ngỡ Mặc dù chúng em đã cố gắng hết sức nhưng chắc chắn bài báo cáo khó có thể tránh khỏi những thiếu sót và nhiều chỗ còn chưa chính xác, kính mong thầy xem xét và góp ý để bài tiểu luận của nhóm 06 chúng em được hoàn thiện hơn

Lời cuối cùng, xin kính chúc thầy nhiều sức khỏe, thành công và hạnh phúc

Chúng em xin chân thành cảm ơn!

Trang 4

I Giới thiệu chung 1 Đặt vấn đề

Ngày nay, xã hội ngày càng phát triển Các ngành công nghiệp, thương mại đang dịch chuyển sang các phương pháp kinh doanh trên nhiều nền tảng khác nhau gồm cả online lẫn offline Xét điều kiện cụ thể nhiều đối tượng cần các công cụ cơ bản để có thể điều chỉnh các hình ảnh của họ một cách nhanh chóng để cập nhật trên các nền tảng Do đó dựa trên các kiến thức, vốn hiểu biết sẵn có và sự hướng dẫn của giảng

viên Vũ Hữu Tiến , nhóm chúng em chọn đề tài: “Xây dựng ứng dụng xử lý ảnh

bằng Python”

1.1 Lý do chọn đề tài

Lý do chọn đề tài bắt nguồn từ yêu cầu trong thực tế là rất nhiều người cần những app chỉnh ảnh nhanh chóng, dung lượng ít, giao diện đơn giản, có thể sử dụng ngay trên điện thoại/máy tính Đồng thời, các ngành nghề liên quan đến vẽ/thiết kế/thiết kế kỹ thuật cũng cần 1 ứng dụng có thể chỉnh sửa được hình ảnh nhanh chóng, dễ dàng và tiện lợi

1.2 Những nghiên cứu trước đây

Đã từng có rất nhiều app chỉnh ảnh ra mắt trước đây cả trên điện thoại lẫn máy tính như: Adobe Photoshop, Adobe Lightroom, Picsart, Snapseed, VSCO,

− Ưu điểm:

+ Nổi tiếng, có thương hiệu xuất xứ lâu năm

+ Hỗ trợ chỉnh sửa nhiều định dạng file ảnh khác nhau (JPG, RAW, …) + Có nhiều chức năng với bộ lọc, hiệu ứng phong phú và thường xuyên

được nâng cấp đáp ứng nhu cầu mạnh mẽ của thị trường + Cộng đồng người dùng lớn, dễ trao đổi và tìm kiếm tài liệu

+ Adobe Photoshop, Adobe Lightroom có một hệ sinh thái cho các ứng dụng nên có thể trao đổi file làm việc linh động cả hình ảnh lẫn video

− Nhược điểm:

+ Mất phí bản quyền

+ Giao diện phức tạp, nhiều chức năng cần thời gian để tìm hiểu

Trang 5

+ Yêu cầu cấu hình máy cao

Hình 1.1 Ví dụ về giao diện phần mềm Photoshop

=> Để giải quyết những nhược điểm và nhu cầu người dùng, chúng em đã cùng nhau

nghiên cứu, thu thập dữ liệu từ người dân để tạo lên một nền tảng chỉnh ảnh cơ bản với những nút chức năng cần thiết và giao diện phù hợp với thị hiếu công chúng

Trang 6

Hình 1.2 Quá trình xử lý ảnh

Ảnh có thể xem là tập hợp các điểm ảnh, mỗi điểm ảnh được xem như là đặc trưng cường độ sáng hay một dấu hiệu nào đó tại một vị trí nào đó của đối tượng trong không gian và nó có thể xem như một hàm n biến P(c1,c2, cn) Do đó, ảnh trong xử lý ảnh có thể xem như ảnh n chiều

Hình 1.3 Mô tả chi tiết quá trình xử lý ảnh

2.2 Thư viện OpenCV

OpenCV là mã nguồn mở của Intel, nó là một thư viện có khả năng nhúng vào các chương trình có khả năng nhận diện hình ảnh của máy tính Nó bao gồm các khả năng tiên tiến như phát hiện khuôn mặt, theo dõi, nhận diện khuôn mặt, Ngoài ra, nó cũng cấp rất nhiều các thuật toán xử lý ảnh thông qua các hàm API

Trang 7

Hình 1.4 Các khả năng của OpenCV có thể là nhận diện khuôn mặt (trên cùng bên trái), phát hiện đường đồng mức (trên bên phải), và phát hiện cạnh (phía dưới)

OpenCV là thư viện được thiết kế để chạy trên đa nền tảng, nghĩa là nó có thể chạy trên hệ điều hành Window, Linux, Mac, iOS Với các tính năng đó thì OpenCV được ứng dụng trong nhiều lĩnh vực:

− Chụp ảnh: Cải thiện chất lượng ảnh, giảm nhiễu, điều chỉnh độ sáng, độ tương

phản, màu sắc, thêm hiệu ứng

− Y tế: Phân tích hình ảnh y tế như X-quang, MRI, CT scan để chẩn đoán bệnh − An ninh: Nhận diện khuôn mặt, biển số xe, dấu vân tay

− Khoa học máy tính: Nhận dạng đối tượng, phân loại ảnh, theo dõi chuyển động − Giải trí: Chỉnh sửa video, tạo hiệu ứng đặc biệt cho phim ảnh

− Robot: Giúp robot di chuyển và tương tác với môi trường xung quanh − Xe tự lái: Nhận diện biển báo giao thông, vạch kẻ đường, người đi bộ, v.v − Nông nghiệp: Phân tích hình ảnh cây trồng để phát hiện sâu bệnh, theo dõi quá

trình sinh trưởng

2.3 Thư viện PIL/Pillow

Pillow là một thư viện mã nguồn mở phổ biến cho xử lý ảnh cho ngôn ngữ Python Nó cung cấp nhiều chức năng mạnh mẽ để thao tác hình ảnh bao gồm:

− Đọc và ghi các định dạng ảnh phổ biến: JPEG, PNG, GIF, BMP, TIFF, v.v − Chuyển đổi giữa các định dạng ảnh

Trang 8

− Thay đổi kích thước ảnh: Thay đổi kích thước, cắt xén, xoay ảnh

− Chỉnh sửa ảnh: Điều chỉnh độ sáng, độ tương phản, màu sắc, thêm hiệu ứng − Vẽ hình ảnh: Vẽ đường thẳng, hình dạng, văn bản lên ảnh

− Lọc ảnh: Áp dụng các bộ lọc để làm mờ, làm sắc nét, gán cạnh, v.v − Hợp tác ảnh: Ghép ảnh, tạo ảnh ghép, thêm watermark

Bên cạnh đó vì nó là một thư viện mã nguồn mở (Open Source) nên có một cộng đồng lớn có rất nhiều tài liệu cũng như hướng dẫn sử dụng, các tính năng được cập nhật thường xuyên, cải tiến Hỗ trợ đa nền tảng trên nhiều hệ điều hành: Windows, macOS, Linux

2.4 Thư viện 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) "Tkinter" là viết tắt của "Tk interface,", một toolkit đồ họa cung cấp các công cụ để phát triển giao diện người dùng

Hình 1.5 Logo của Tkinter

Trong Tkinter có nhiều Widget khác nhau người dùng có thể đưa vào để thiết kế giao diện:

− Label: Thông thường nhãn được hiển thị văn bản hoặc hình ảnh tĩnh − Tkinter: Button để thêm nút có thể nhấn

− Entry (Ô nhập liệu): Nhập văn bản từ người dùng

− Scale: Cung cấp thanh trượt cho người dùng để chọn giá trị trong một dải

và rất nhiều Widget khác nữa như canvas, frame, menu, scrollbar, text,

Đồng thời Tkinter cung cấp một số phương pháp để sắp xếp các widget, trong đó có ba phương pháp chính:

Trang 9

− Pack Layout − Grid Layout − Place Layout

Chính vì vậy, Tkinter có rất nhiều ưu điểm và phù hợp với những người cần phát triển các ứng dụng GUI đơn giản, nhẹ và hiệu quả

3 Kết luận

Từ những tìm hiểu trên, nhóm chúng em lựa chọn làm phần mềm chỉnh sửa ảnh trên máy tính ứng dụng các công nghệ cơ bản trong xử lý ảnh như xoay ma trận 2D, phép biến đổi affine, phép lấy mẫu, lọc convolution,

II Mô tả sản phẩm 1 Giới thiệu

Phần 1 đã trình bày khái quát về lý do chọn đề tài cũng như các phạm vi kiến thức liên quan Đồng thời cũng nhấn mạnh mục đích, vai trò của dự án lần này Để áp dụng các lý thuyết đã trình bày ở phần 1, phần này sẽ giới thiệu chi tiết các thuật toán chúng em đã sử dụng cũng như dàn trang sắp xếp layout dùng Tkinter

2 Trình tự xây dựng hệ thống app chỉnh ảnh

Bước 1: Thu nhập phân tích dữ liệu

Để hiểu rõ hơn về người dùng, nhóm chúng em đã tạo một cuộc khảo sát về trải nghiệm sử dụng ứng dụng chỉnh ảnh trên điện thoại Kết quả thu được dựa trên 23 người dùng điền bảng khảo sát cho thấy:

− Phạm vi, đối tượng người dùng

+ Độ tuổi sử dụng app chỉnh ảnh phổ biến nhất là từ 18-26 (chiếm 72%) + Trình độ học vấn: tốt nghiệp trung học phổ thông trở lên

+ Mức độ thành tạo: từ thấp đến trung bình − Các thói quen sử dụng

+ Tần suất sử dụng: hiếm khi (chiếm 72%)

+ Mục đích: sở thích cá nhân (64%), dành cho mạng xã hội (60%)

+ Các thao tác thường thực hiện: crop ảnh (66%), chỉnh sáng (47%), làm mờ ảnh (40%), hiệu ứng đặc biệt (20%)…

Trang 10

+ Mức quan trọng của giao diện dễ sử dụng đối với việc quyết định sử dụng ứng dụng: từ 3/5-4/5

− Các phần mềm của đối thủ

+ Mức độ hài lòng về một số phần mềm chỉnh sửa ảnh trên máy tính hiện có trên thị trường: Adobe Photoshop(3/5), Adobe Lightroom(4/5), Photoscape(3/5), GIMP (3/5)

Bước 2: Phân tích hệ thống

Từ yêu cầu đề bài, khả năng của nhóm và nhu cầu thực tế của người dùng, chúng em quyết định làm một ứng dụng trên máy tính có những đặc điểm sau:

− Ứng dụng trên máy tính − Ngôn ngữ lập trình: Python

− Các chức năng: Làm mờ ảnh (Blur), Xoay ảnh (Rotate), Xác định đường biên của ảnh (Detect Edges) và Làm lại từ đầu (Reset All) (trong trường hợp người dùng muốn thay đổi phần chỉnh sửa)

− Lượng thông tin vừa đủ, đơn giản, tiện lợi để tất cả mọi người ai cũng dùng được dễ dàng, không bị ngợp

Bước 3: Thiết kế hệ thống

a Ý tưởng

Nhóm chọn mô hình thiết kế giao diện đơn giản, dễ nhìn với các nút thiết kế theo hơi hướng truyền thống Các nút, vị trí được sắp xếp ngay trọng tâm để thu hút người dùng khi mới mở app mà không bị rối Về màu sắc, dùng 2 màu chính là màu đỏ (màu biểu tượng của Học viện Công nghệ Bưu chính Viễn thông) và màu trắng

b Thiết kế logic:

Phần mềm có 3 chức năng chính đó là Làm mở ảnh (Blur), Xoay ảnh (Rotate) và Xác định đường biên của ảnh (Detect Edges)

b.1 Chức năng làm mờ ảnh (Blur image)

Với đoạn mã Python dưới, chúng em sử dụng các hàm trong thư viện OpenCv để thực hiện làm mờ ảnh Độ mờ được tính theo tham số blur amount

Tổng quan thuật toán:

Trang 11

Chi tiết đoạn code

def blur_image(image, blur_amount): if blur_amount == 0:

+ image: Hình ảnh bị mờ (được truyền từ các đối số của hàm)

+ (blur_amount, Blur_amount): Đây là kích thước hạt nhân cho bộ lọc làm

mờ Gaussian Nó được tạo dưới dạng một bộ dữ liệu bằng cách sử dụng giá trị Blur_amount lẻ được đảm bảo Kích thước hạt nhân lớn hơn dẫn đến hiệu ứng làm mờ đáng kể hơn

+ 0: Đây là giá trị sigma (độ lệch chuẩn) của phân bố Gaussian được sử

dụng để làm mờ Giá trị 0 cho phép OpenCV tính toán sigma tối ưu dựa trên kích thước hạt nhân

b.2 Chức năng xoay ảnh (Rotate image)

Trang 12

Với đoạn mã Python dưới, chúng em sử dụng các hàm trong thư viện OpenCv để thực hiện xoay ảnh dựa trên ma trận xoay Góc quay được tính theo tham số angle

Tổng quan thuật toán:

Chi tiết đoạn code

def rotate_image(image, angle):

center = (image.shape[1] // 2, image.shape[0] // 2)

rotation_matrix = cv2.getRotationMatrix2D(center, angle, 1)

rotated_image = cv2.warpAffine(image, rotation_matrix, (image.shape[1], image.shape[0]))

return rotated_image Giải thích:

− Hàm rotate_image: Hàm này thực hiện xoay ảnh dựa trên góc xoay được cung

cấp Nó sử dụng hai hàm của OpenCV:

− cv2.getRotationMatrix2D để tính toán ma trận xoay 2D Ma trận này được xác

định bởi ba tham số:

+ Center: Trung tâm của ảnh, nơi xoay sẽ xảy ra Code tính toán trung tâm

này bằng (image.shape[1] // 2, image.shape[0] // 2), lấy tọa độ trung tâm dựa trên chiều rộng và chiều cao của ảnh

+ Angle: Góc xoay theo độ Giá trị góc được lấy từ đầu vào người dùng

thông qua thanh trượt (rotate_scale)

+ Scale: Trong trường hợp này, scale được đặt thành 1, nghĩa là kích thước

ảnh không thay đổi trong khi xoay

− cv2.warpAffine để áp dụng phép biến đổi affine (bao gồm xoay) cho ảnh bằng

cách sử dụng ma trận xoay đã tính toán Hàm này nhận 3 đối số:

+ Input Image: Ảnh cần xoay (lấy từ image_cv)

Trang 13

+ Rotation Matrix: Ma trận xoay 2D được tạo bởi

cv2.getRotationMatrix2D

+ dsize: Kích thước ảnh đầu ra Do scale được đặt thành 1 trong ma trận

xoay, kích thước ảnh đầu ra vẫn giữ nguyên kích thước ảnh đầu vào ((image.shape[1], image.shape[0]))

b.3 Chức năng Detect Edges:

Tổng quan thuật toán:

**edge_detection(image)**: -Input: Ảnh gốc (`image`)

-Output: Ảnh đã được phát hiện cạnh

- Hoạt động: Hàm này thực hiện phát hiện cạnh trong ảnh sử dụng phương pháp Canny

Chi tiết đoạn code

def edge_detection(image):

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) edges = cv2.Canny(gray, 100, 200)

return edges Giải thích:

− cv2.cvtColor(image, cv2.COLOR_BGR2GRAY): Dòng này chuyển đổi hình ảnh

đầu vào ở hệ màu BGR (Xanh lam, Xanh lục, Đỏ), thành hệ màu xám (grayscale) Các thuật toán phát hiện cạnh thường hoạt động tốt hơn trên hệ màu grayscale vì chúng tập trung vào sự thay đổi sắc độ hơn là sự khác biệt về màu sắc Hàm cv2.cvtColor từ thư viện OpenCV được sử dụng cho chuyển đổi này

− cv2.Canny(gray, 100, 200): Dòng này là cốt lõi của quá trình phát hiện cạnh

Sử dụng thuật toán phát hiện cạnh Canny, một phương pháp phổ biến và hiệu

quả để tìm cạnh trong hình ảnh Hàm cv2.Canny nhận 3 đối số:

+ grey: Hình ảnh thang độ xám thu được ở bước trước

Trang 14

+ 100: Đây là giá trị ngưỡng đầu tiên được thuật toán Canny sử dụng

để xác định các cạnh mạnh Các cạnh có độ dốc vượt quá ngưỡng này được coi là các cạnh tiềm năng

+ 200: Đây là giá trị ngưỡng thứ hai được thuật toán Canny sử dụng để

tinh chỉnh việc phát hiện cạnh Chỉ các cạnh có độ dốc trên ngưỡng đầu tiên (100) và được kết nối với một cạnh mạnh khác (có độ dốc vượt quá ngưỡng thứ hai, 200) mới được coi là các cạnh thực Các giá trị thích hợp cho các ngưỡng này có thể khác nhau tùy thuộc vào nội dung hình ảnh và độ nhạy cạnh mong muốn

c Thiết kế vật lý

Nhóm quyết định thiết kế một giao diện đơn giản, dễ sử dụng cho phần mềm.

Hình 2.1 Giao diện chính của phần mềm

Phía trên là nơi để nhập ảnh cũng như các tính năng chỉnh sửa cơ bản

Trang 15

Hình 2.2 Nơi nhập ảnh và các tính năng chỉnh sửa ảnh

Phía dưới là nút Reset All (làm lại từ đầu) trong trường hợp người dùng muốn đổi ý Và ở dưới cùng là nút Save Processed Image (Lưu ảnh)

Hình 2.3 Nút Reset all và Save

Sau khi nhập ảnh, ảnh sẽ hiển thị ở giữa 2 phần trên

III Kết quả và đánh giá

Sau khi hoàn thành xong các chức năng và chỉnh sửa đến khi không còn lỗi về đoạn code, giao diện, tương tác, nhóm chúng em xuất ra file Exe và testing Kết quả được thử nghiệm với các thành viên nhóm và người khác

1 Kết quả từ sản phẩm

Hình 3.1 Ảnh gốc chưa qua chỉnh sửa

Trang 16

Hình 3.2 Ảnh sử dụng Blur Hình 3.3 Ảnh sử dụng Rotate

Hình 3.4 Ảnh sử dụng Detect Edges Hình 3.5 Ảnh sử dụng cả 3 chức năng

2 Kết quả khảo sát người dùng

4 Nguyễn Tiến Thành Không ổn

Trang 17

6 Nguyễn Cảnh Nam Không ổn

Hình 3 Biểu đồ thể hiện mức độ hài lòng của người dùng với sản phẩm

3 Một số nhận xét khác từ người dùng:

− Ưu điểm:

+ Ứng dụng đơn giản, thoải mái mắt người xem Việc chọn 2 màu đơn giản cũng như các hình khối nhìn thoáng mắt, thu hút người dùng + Các nút tương tác khá mượt, không bị lag

Trang 18

Tiếp thu những ý kiến trên, nhóm chúng em sẽ cố học hỏi thêm để khắc phục những nhược điểm bên trên và tiếp tục phát triển những đặc điểm đánh giá là tốt

KẾT LUẬN

Tổng kết lại, ứng dụng chỉnh sửa ảnh của nhóm 06 là một công cụ đơn giản nhưng hữu ích giúp người dùng xử lý những bức ảnh một cách nhanh chóng và độc đáo Những tính năng của sản phẩm cung cấp cho người dùng 3 thao tác chinh ảnh quan trọng: Xoay ảnh, làm mờ ảnh và phát hiện cạnh Từ những tính năng này người dùng có thể áp dụng vào đa ngành nghề: báo chí, nghệ thuật, bán hàng, Tuy nhiên, ứng dụng còn một số hạn chế về khả năng tương thích với các thiết bị và tính năng còn hạn chế, không được đa dạng như nhiều ứng dụng khác trên thị trường Vì vậy nếu có điều kiện phát triển chuyên sâu, nhóm chúng em mong muốn tương lai có thể cải tiến sản phẩm bằng cách phát triển thêm mặt hiển thị với người dùng cũng như tích hợp thêm nhiều những tính năng nữa vào để đáp ứng tốt hơn so với mong muốn của người dùng

Ngày đăng: 16/06/2024, 12:46

Xem thêm:

w