Đang tải... (xem toàn văn)
Mọi người hướng đến những công cụ đơn giản dễ sử dụng trên điện thoại hoặc là trang web để có thể tự mình khôi khục ảnh.. ● Hiện nay muốn khôi phục hình ảnh thì người dùng có thể thông
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM
-🙚🙘🕮🙚🙘 -
BÁO CÁO ĐỒ ÁN 2: XÂY DỰNG ỨNG DỤNG
KHÔI PHỤC ẢNH IRepair
Giảng viên hướng dẫn:
Thầy Huỳnh Tuấn Anh
Sinh viên thực hiện
20520561 – Hồng Gia Hy
Tp.HCM, tháng 1 năm 2024
Trang 2Nhận xét của giảng viên hướng dẫn
Người nhận xét
Huỳnh Tuấn Anh
Trang 3LỜI CẢM ƠN
Để hoàn thành đồ án 2 này, em xin gửi lời cảm ơn chân thành đến:
Thầy Huỳnh Tuấn Anh đã giúp đỡ, định hướng hướng đi của đồ án, chỉ ra những thiếu
sót của đồ án nhóm em và hỗ trợ những thông tin cần thiết Đó là những góp ý hết sức quý báu cho nhóm em trong quá trình thực hiện dự án này
Trong quá trình thực hiện vì kiến thức và kinh nghiệm vẫn có hạn chế nên không thể tránh khỏi sai sót vì vậy nhóm em luôn mong muốn tiếp thu những đánh giá, góp ý và phản hồi từ giảng viên
Em chân thành cảm ơn và xin chúc thầy luôn gặp những điều may mắn
TP.HCM, 1 tháng 1 năm 2024 Sinh viên thực hiện
Hồng Gia Hy
Trang 4TỔNG QUAN BÁO CÁOTÊN ĐỀ TÀI: Xây dựng ứng dụng khôi phục hình ảnh
GIẢNG VIÊN HƯỚNG DẪN: Huỳnh Tuấn Anh
THỜI GIAN THỰC HIỆN: Từ ngày 05/10/2023 đến hết ngày 31/12/2023.NỘI DUNG:
1 Lý do chọn đề tài
● Trong thời đại công nghệ phát triển, mọi người luôn hướng đến những công cụ hoặc những cách tiện lợi hơn trong việc xử lý hình ảnh Chính vì vậy, nhu cầu mong muốn khôi phục những bức ảnh cũ hoặc bị hư hại ngày càng gia tăng Mọi người hướng đến những công cụ đơn giản dễ sử dụng trên điện thoại hoặc là trang web để có thể tự mình khôi khục ảnh
● Hiện nay muốn khôi phục hình ảnh thì người dùng có thể thông qua nhiều cách như photoshop, chỉnh sửa thủ công hoặc sử dụng các phần mềm phức tạp để khôi phục ảnh Do đó, người dùng sẽ khá mơ hồ khi muốn tự mình sửa những tấm ảnh bị hư hại
● Cũng từng là người có mong muốn khôi phục lại những tấm ảnh cũ của gia đình, những tấm bị hỏng do nhiều tác nhân khác nhau, em hiểu rõ và tìm kiếm một giải pháp tiện lợi để biến mong muốn đó thành hiện thực Em quyết định chọn đề tài này để giúp những người muốn tự mình chỉnh sửa những hình ảnh bị hư hại một cách dễ dàng và tiện lợi hơn
Hiện trạng các trang web khôi phục ảnh hiện nay:
● Giao diện khó dùng cho những người mới tiếp xúc với thiết bị công nghệ
● Thường chỉ có một api hoặc một thuật toán khôi phục ảnh
● Thường là không miễn phí
● Chưa được tích hợp nhiều cách khôi phục cho các trường hợp ảnh hư hỏng khác nhau
Trang 5=> Với những vấn đề trên, em quyết định lựa chọn đề tài xây dựng ứng dụng khôi phục hình ảnh để tiến hành nghiên cứu và xây dựng.
0 Mục tiêu đề ra
● Xây dựng website giải quyết các vấn đề sau:
● Có các filter để nâng cấp hình ảnh ● Xác định được những hư hại trên ảnh
● Hệ thống sẽ tự động khôi phục ảnh theo từng bộ lọc ● Trả về ảnh trước và sau khi sử lý để xem thay đổi
0 Phạm vi, quy mô
● Môi trường, platform: website
● Phạm vi chức năng:
● Nhận một bức ảnh từ trong thiết bị sau đó tiến hành xử lý và khôi phục ảnh trực tuyến trên website
o Có thể xác định những hư hại có trong ảnh
o Hiển thị kết quả sau xử lý
0 Đối tượng sử dụng: Tất cả người dùng có nhu cầu khôi phục ảnh 0 Phương pháp thực hiện:
● Phương pháp làm việc: Thực hiện dưới sự chỉ dẫn của giảng viên hướng dẫn
● Phương pháp nghiên cứu:
● Phân tích nhu cầu sử dụng của đối tượng người dùng
● Nghiên cứu tài liệu các công nghệ liên quan
● Kiểm tra, tham khảo các website khác để tối ưu hóa trang web
● Phương pháp công nghệ:
● Tìm hiểu về các ngôn ngữ mới và áp dụng framework vào để tối ưu hóa hiệu suất
Trang 6● Xây dựng giao diện web để tương tác với người dùng và nhận phản hồi, sửa chữa nếu cần thiết để đưa ra sản phẩm hoàn chỉnh nhất
● Tìm hiểu cách thức hoạt động của các tính năng trang web
● Tìm hiểu các thư viện hỗ trợ cho dự án
0 Nền tảng công nghệ:
● Python
0 Kết quả mong đợi:
● Hoàn thiện được website đáp ứng đầy đủ mục tiêu đề ra
● Trang web có thể thực hiện chính xác yêu cầu của người dùng
● Trang web có khả năng tương tác với người dùng với mức độ ổn định
● Các chức năng của website hoạt động đúng đắn, chính xác, dễ sử dụng
● Thời gian thực hiện: Từ ngày 05/10/2023 đến hết ngày 31/12/2023
● Quy trình làm việc được lên kế hoạch triển khai như sau:
● Giai đoạn 1 (05/10/2023 - 10/11/2023): Nghiên cứu phát triển phương thức
xác định văn bản trong 1 hình ảnh Giai đoạn này gồm 3 sprint:
o Sprint 1: Tìm hiểu công nghệ, các framework liên quan
o Sprint 2: Phân tích yêu cầu
o Sprint 3: Xây dựng ứng dụng, phát triển một số chức năng cơ bản
● Giai đoạn 2 (10/11/2023 - 03/12/2023): Hoàn thiện backend và bắt đầu xây
dựng fontend Giai đoạn này gồm 2 sprint:
Trang 7o Sprint 4: Hoàn thiện các tính năng còn đang tiến hành ở backend, tìm và sửa lỗi trong quá trình xây dựng chức năng
o Sprint 5 : Triển khai xây dựng fontend, viết báo cáo
● Giai đoạn 3 (03/12/2023 - 31/12/2023) Kiểm tra lỗi và hoàn thiện sản phẩm
Giai đoạn này gồm 2 sprint:
o Sprint 6: Kiểm tra lại tổng quan sản phẩm và sửa lỗi
o Sprint 7: kiểm tra file báo cáo, chỉnh sửa hoặc thay đổi nếu có
0 Phân công công việc:
● Công việc:
● Phân tích yêu cầu
● Khảo sát trang web
● Viết báo cáo
● Nguyên cứu công nghệ, ngôn ngữ
● Xây dựng ứng dụng
Trang 8Table of Contents
Chương 1 – TỔNG QUAN VỀ ĐỀ TÀI 9
1.1 Giới thiệu về đề tài 9
1.1.1 Sự tiện lợi của công cụ khôi phục ảnh và lí do chọn đề tài: 9
1.2 Khảo sát các ứng dụng khôi phục ảnh hiện nay: 9
1.3 Đối tượng nghiên cứu: 11
Chương 2 – CƠ SỞ LÝ THUYẾT 12
Trang 9IRepair
Chương 1 – TỔNG QUAN VỀ ĐỀ TÀI
1.1 Giới thiệu về đề tài
1.1.1 Sự tiện lợi của công cụ khôi phục ảnh và lí do chọn đề tài:
Trong thời đại ngày nay chúng ta đã quen với việc chỉnh sửa hình ảnh của bản thân, gia đình qua các ứng dụng trên điện thoại hoặc chuyên nghiệp hơn là các phần mềm photoshop trên máy tính Theo nhu cầu đó, mong muốn còn mở rộng ra sang việc khôi phục lại những tấm ảnh bị hư do nhiều tác nhân khác nhau, những tấm ảnh cũ của gia đình Và để có thể tự mình thực hiện khôi phục ảnh, người dùng đã tìm đến những ứng dụng khôi phục ảnh tự động thông qua deep learning và các thư viện thị giác máy tính
Một số ưu điểm của việc khôi phục ảnh trực tuyến có thể kể đến như sau: - Linh hoạt: Người dùng chỉ cần một chiếc điện thoại di động hoặc
laptop và chỉ với một vài thao tác, người dùng đã có thể đọc được nội dung có trong bức ảnh
- Tiện lợi: Có thể tự động khôi phục hình ảnh, người dùng không cần kiến thức sâu để thực hiện chỉnh sửa
Bởi các tiềm năng và tính tiện dụng của nó, chúng em đã chọn đề tài này với mong muốn tạo một ứng dụng giúp cho việc khôi phục ảnh dễ dàng hơn
1.2 Khảo sát các ứng dụng khôi phục ảnh hiện nay:
Hiện nay có một số trang web khôi phục ảnh được chú ý đến đó là Hotpot,PhotoBooth Các trang web vừa nêu đều dễ có giao diện thân thiện, có sự tương đồng về chức năng nhưng ngoài ra cũng có một khuyết điểm là có những
Trang 10chức năng không cần thiết, có thể lược bỏ đi để hướng đến sự đơn giản và tiện lợi cho người dung, và không hoàn toàn miễn phí,
Trang 111.3 Đối tượng nghiên cứu:
Người dùng có nhu cầu khôi phục ảnh Ngôn ngữ: Python, html
Các công nghệ:
+ Flask , Open cv + gfpgan
+ Figma
Trang 12Chương 2 – CƠ SỞ LÝ THUYẾT
2.1 Python
Python là một ngôn ngữ lập trình được sử dụng rộng rãi trong các ứng dụng web, phát triển phần mềm, khoa học dữ liệu và máy học (ML) Các nhà phát triển sử dụng Python vì nó hiệu quả, dễ học và có thể chạy trên nhiều nền tảng khác nhau Phần mềm Python được tải xuống miễn phí, tích hợp tốt với tất cả các loại hệ thống và tăng tốc độ phát triển
Python có thể được xem là một ngôn ngữ có độ phổ biến cao trong ngành lập trình, nhờ vào những điểm nổi bật sau:
● Có cấu trúc code dễ đọc và dễ hiểu, dù là người mới bắt đầu ● Có tính ứng dụng rộng rãi
● Tốc độ xử lý của Python nhanh hơn PHP
● Cho phép các lập trình viên thực hiện sửa lỗi các đoạn mã một cách trực tiếp ● Sở hữu lượng lớn các khối cơ sở dữ liệu, phục vụ hiệu quả cho các chương trình
mang tính thương mại
● Nhờ có tính năng đơn giản, nên việc bảo trì các chương trình được tạo ra bởi Python cũng khá đơn giản và nhanh chóng
Trang 13● Chứa GUI programming hỗ trợ việc hiển thị ảnh minh họa một cách sống động và chân thật
● Khi sử dụng Python, các lập trình viên có thể thoải mải thêm và tùy chỉnh các công cụ, để có thể tối đa hiệu quả trong công việc
2.2 OpenCV
OpenCV là tên viết tắt của open source computer vision library – có thể được hiểu là một thư viện nguồn mở cho máy tính Cụ thể hơn OpenCV là kho lưu trữ các mã nguồn mở được dùng để xử lý hình ảnh, phát triển các ứng dụng đồ họa trong thời gian thực
OpenCV cho phép cải thiện tốc độ của CPU khi thực hiện các hoạt động real time Nó còn cung cấp một số lượng lớn các mã xử lý phục vụ cho quy trình của thị giác máy tính hay các learning machine khác
OpenCV được cho là một phần mềm đa nhiệm Nó được ứng dụng trong rất nhiều trường hợp khác nhau Ví dụ, ta sẽ nói về các phần mềm định vị, bản đồ nói chung
Trang 14Hẳn rằng trong chúng ta ai cũng đã có ít nhất một lần cần sử dụng đến các map online đúng không Bạn sử dụng các map để tìm đường, tra cứu tình hình giao thông hoặc đơn giản là xem xét các hình ảnh thực tế của địa điểm cần đến Những lúc như vậy, OpenCV đóng vai trò là nhà cung cấp dữ liệu hình ảnh cho các app về Map này OpenCV sẽ đem đến cho người dùng hình ảnh về đường phố hay các căn nhà, con người xung quanh địa điểm được chỉ định
OpenCV còn được dùng để khởi tạo ra những hình ảnh 3 chiều phức tạp Hoạt động này rất được yêu thích, nhất là trong thời đại trí tuệ nhân tạo AI phát triển như thế này
Đối với các công nghệ hiện đại, OpenCV cũng là một yếu tố không thể thiếu Tất cả những ứng dụng công nghệ như robot, xe tự lái, bảng cảm ứng thông minh… đều có sự góp mặt của OpenCV trong khâu xử lý hình ảnh Ví dụ gần gũi nhất trong cuộc sống có thể kể đến hệ thống mở khóa điện thoại bằng cách nhận diện khuôn mặt người dùng
2.3 Keras_OCR
Keras_OCR là gói Python mã nguồn mở cung cấp giao diện đơn giản và dễ sử dụng để nhận dạng ký tự quang học (OCR) bằng các kỹ thuật deep learning Nó được xây dựng dựa trên Keras và TensorFlow, đồng thời cung cấp quy trình OCR đầu cuối được đào tạo trước để loại bỏ văn bản khỏi hình ảnh.
2.6 Gfpgan
GFPGAN, viết tắt của cụm từ Generative Facial Prior Generative Adversarial Network, là công cụ miễn phí trên GitHub Bạn có thể tải xuống phần mềm hoặc sử dụng phiên bản trực tuyến để nâng cấp và phục hồi hình ảnh
Trang 15Phần mềm GFPGAN hiện tại là phiên bản đề mô theo mô hình GAN - đây là mô hình sử dụng tập hợp dữ liệu để xác định các mẫu và lắp đầy vào các khoảng trống trên hình ảnh của bạn bằng thuật toán máy học và mạng thần kinh (gọi tắt là công nghệ AI)
Nói cách khác, công cụ GFPGAN sở hữu thuật toán xử lý thông minh, giúp lắp đầy các chi tiết bị hỏng hoặc bị mờ trên hình ảnh bằng các chi tiết tương tự của những bức ảnh khác giống như vậy
Trang 16Chương 3 – PHÂN TÍCH HỆ THỐNG
3.1 Tổng quan hệ thống
Trang web Manga Translator là hệ thống giúp người dùng trong việc dịch manga, cụ thể hơn là dịch nội dung ký tự có trong những tấm ảnh Thông qua nhiều công nghệ về nhận diện, thị giác máy tính và chuyển đổi hình ảnh, trang web sẽ là công cụ đắc lực cho việc dịch manga và các tài liệu liên quan
3.2 Sơ đồ UseCase
Trang 173.2.1 Danh sách actor
Bảng danh sách các actor
STT Tên actor Ý nghĩa/ ghi chú
1 User Người dùng truy cập vào trang web và tiến hành khôi phục ảnh
Người dùng tiến hành chọn các filter để giúp cho hình ảnh được rõ ràng hơn
3 Xóa nội dung ký tự trong ảnh
Người dùng có thể chọn xóa các ký tự có trong ảnh
Trang 18Điều kiện sau N/A
Dòng sự kiện chính Hiển thị màn hình bắt đầu và chọn ảnh cần khôi phục ● Người dùng truy cập trang web
Trang 19Bảng 3.1 Đặc tả Use-case Filter nâng cấp hình ảnh
Tên Use-case Filter nâng cấp chất lượng hình ảnh
Mô tả tóm tắt Người dùng tiến hành chọn filter để nâng cấp chất lượng ảnh
Điều kiện trước Xác nhận chọn và hệ thống xử lí ảnh
Điều kiện sau N/A
Dòng sự kiện chính Hiển thị màn hình bắt đầu và chọn filter cho ảnh cần khôi phục ● Người dùng truy cập trang web
Trang 20Bảng 3.1 Đặc tả Use-case Xóa nội dung ký tự trong ảnh
Tên Use-case Xóa nội dung ký tự trong ảnh
Mô tả tóm tắt Xóa những ký tự không mong muốn trong ảnh manga
Điều kiện trước Truy cập trang web
Điều kiện sau N/A
Dòng sự kiện chính Hiển thị màn hình lựa chọn xác nhận ảnh muốn sửa Xóa tất cả những ký tự sau khi hệ thống xử lý Lưu ảnh
Dòng sự kiện phụ
3.4 Sơ đồ Activity
Quá trình thực khôi phục ảnh bị hư hỏng:
Trang 22Chương 4 – HIỆN THỰC HỆ THỐNG
4.1 Quá trình hệ thống hoạt động
4.1.1 Cách thức lấy và xóa văn bản ra khỏi ảnh
Để xóa văn bản khỏi hình ảnh sẽ trải qua ba bước:
● Xác định văn bản trong hình ảnh và lấy tọa độ hộp giới hạn của từng văn bản
Trang 23● Đối với mỗi hộp giới hạn, hãy áp dụng mặt nạ để cho thuật toán biết chúng ta nên tô phần nào của hình ảnh
● Cuối cùng, áp dụng thuật toán inpainting để inpaint các vùng bị che của hình ảnh, dẫn đến hình ảnh không có văn bản, sử dụng cv2
Lấy văn bản ra từ ảnh:
- Sau khi hình ảnh được xử lý sẽ được xác định văn bản bằng những khung với tọa độ nhất định
Trang 24Xóa văn bản ra khỏi ảnh:
- Cv2 có hai thuật toán inpainting khả dụng và cho phép áp dụng mask hình chữ nhật, hình tròn hoặc đường thẳng
- Trong trường hợp này, tôi quyết định sử dụng mặt nạ đường kẻ, vì chúng linh hoạt hơn để che văn bản theo các hướng khác nhau (mặt nạ hình chữ nhật sẽ chỉ hoạt động tốt đối với các từ song song hoặc vuông góc với trục x và mặt nạ hình tròn sẽ bao phủ một khu vực lớn hơn mức cần thiết)
- Dựa vào tọa độ đã xác định được tiến hành xóa văn bản khỏi ảnh
Một số các ví dụ cho các bước xác định và xóa văn bản khỏi ảnh:
4.1.2 Mài nhẵn cho ảnh
Làm mờ hình ảnh đề cập đến việc làm cho hình ảnh kém rõ ràng hoặc khác biệt hơn Nó được thực hiện với sự trợ giúp của nhiều hạt nhân bộ lọc khác nhau
Trang 25Chính vì thế em sẽ sử dụng những phương thức làm mờ khác nhau có trong thư viện open cv để xử lý cho từng ảnh với mục đích khác nhau
Sơ đồ trình tự quá trình văn bản:
Các kiểu làm mờ quan trọng:
Gaussian Blurring: là kết quả của việc làm mờ hình ảnh bằng hàm Gaussian Đây là một
hiệu ứng được sử dụng rộng rãi trong phần mềm đồ họa, thường là để giảm nhiễu hình ảnh và giảm chi tiết Nó cũng được sử dụng như một giai đoạn tiền xử lý trước khi áp dụng các mô hình machine learning hoặc deep learning
Ví dụ: hạt nhân Gaussian (3 × 3)
Trang 26Median Blur: là một kỹ thuật lọc kỹ thuật số phi tuyến tính, thường được sử dụng để loại
bỏ nhiễu khỏi hình ảnh hoặc tín hiệu Lọc trung vị được sử dụng rất rộng rãi trong xử lý ảnh kỹ thuật số vì trong những điều kiện nhất định, nó bảo toàn các cạnh trong khi loại bỏ nhiễu Đây là một trong những thuật toán tốt nhất để loại bỏ ảnh hư hại dạng hạt muối tiêu
Trang 27Bilateral Blur: là bộ lọc làm mịn phi tuyến tính, bảo toàn cạnh và giảm nhiễu cho hình
ảnh Nó thay thế cường độ của từng pixel bằng giá trị cường độ trung bình có trọng số từ các pixel lân cận Trọng số này có thể dựa trên phân bố Gaussian Do đó, các cạnh sắc nét được bảo tồn trong khi loại bỏ những cạnh yếu
4.1.3 Gfpgan
GFP-GAN hay Generative Facial Prior là một mô hình trí tuệ nhân tạo giúp người dùng chỉnh sửa, phục hồi hình ảnh cũ, ảnh màu và trắng đen, ảnh bị rách, bị nhạt màu, bị cấn về nguyên bản hoặc tốt hơn ban đầu