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 (2.18 MB, 40 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<i>Giảng viên hướng dẫn: </i>
<b>Thầy Huỳnh Tuấn Anh </b>
<i>Sinh viên thực hiện </i>
<b>20520561 – Hồng Gia Hy </b>
<i><b>Tp.HCM, tháng 1 năm 2024 </b></i>
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2"><b>Người nhận xét </b>
<b>Huỳnh Tuấn Anh </b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">Để hoàn thành đồ án 2 này, em xin gửi lời cảm ơn chân thành đến:
<b>Thầy Huỳnh Tuấn Anh đã giúp đỡ, định hướng hướng đi của đồ án, chỉ ra những thiếu </b>
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 q báu cho nhóm em trong q 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 ln 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
<b>Hồng Gia Hy </b>
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><b>GIẢNG VIÊN HƯỚNG DẪN: Huỳnh Tuấn Anh</b>
<b>THỜI GIAN THỰC HIỆN: Từ ngày 05/10/2023 đến hết ngày 31/12/2023.NỘI DUNG: </b>
<i><b>1. Lý do chọn đề tài </b></i>
<small>● </small> 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.
<small>● </small> 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.
<small>● </small> 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:
<small>● </small> 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ệ.
<small>● </small> Thường chỉ có một api hoặc một thuật tốn khơi phục ảnh
<small>● </small> Thường là khơng miễn phí
<small>● </small> 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
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="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.
<i><b>0. Mục tiêu đề ra </b></i>
<small>● </small> Xây dựng website giải quyết các vấn đề sau:
<small>● </small>
<small>● </small>
<i><b>0. Phạm vi, quy mô </b></i>
<small>● </small> Môi trường, platform: website
<small>● </small> Phạm vi chức năng:
<small>● </small> 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
<small>o </small> Có thể xác định những hư hại có trong ảnh
<small>o </small> Hiển thị kết quả sau xử lý
<i><b>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: </b></i>
<small>● </small> 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.
<small>● </small> Phương pháp nghiên cứu:
<small>● </small> Phân tích nhu cầu sử dụng của đối tượng người dùng.
<small>● </small> Nghiên cứu tài liệu các công nghệ liên quan.
<small>● </small> Kiểm tra, tham khảo các website khác để tối ưu hóa trang web.
<small>● </small> Phương pháp cơng nghệ:
<small>● </small> 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.
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"><small>● </small> 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 hồn chỉnh nhất.
<small>● </small> Tìm hiểu cách thức hoạt động của các tính năng trang web.
<small>● </small> Tìm hiểu các thư viện hỗ trợ cho dự án.
<i><b>0. Nền tảng công nghệ: </b></i>
<small>● </small> Python
<i><b>0. Kết quả mong đợi: </b></i>
<small>● </small> Hoàn thiện được website đáp ứng đầy đủ mục tiêu đề ra.
<small>● </small> Trang web có thể thực hiện chính xác yêu cầu của người dùng.
<small>● </small> Trang web có khả năng tương tác với người dùng với mức độ ổn định.
<small>● </small> Các chức năng của website hoạt động đúng đắn, chính xác, dễ sử dụng.
<small>● </small> Thời gian thực hiện: Từ ngày 05/10/2023 đến hết ngày 31/12/2023.
<small>● </small> Quy trình làm việc được lên kế hoạch triển khai như sau:
<small>● </small> <i><b>Giai đoạn 1 (05/10/2023 - 10/11/2023): Nghiên cứu phát triển phương thức </b></i>
xác định văn bản trong 1 hình ảnh. Giai đoạn này gồm 3 sprint:
<small>o </small> Sprint 1: Tìm hiểu công nghệ, các framework liên quan.
<small>o </small> Sprint 2: Phân tích yêu cầu.
<small>o </small> Sprint 3: Xây dựng ứng dụng, phát triển một số chức năng cơ bản.
<small>● </small> <i><b>Giai đoạn 2 (10/11/2023 - 03/12/2023): Hoàn thiện backend và bắt đầu xây </b></i>
dựng fontend. Giai đoạn này gồm 2 sprint:
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><small>o </small> Sprint 4: Hồ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.
<small>o </small> Sprint 5 : Triển khai xây dựng fontend, viết báo cáo.
<small>● </small> <i><b>Giai đoạn 3 (03/12/2023 - 31/12/2023) Kiểm tra lỗi và hoàn thiện sản phẩm. </b></i>
<i><b>Giai đoạn này gồm 2 sprint: </b></i>
<small>o </small> Sprint 6: Kiểm tra lại tổng quan sản phẩm và sửa lỗi.
<small>o </small> Sprint 7: kiểm tra file báo cáo, chỉnh sửa hoặc thay đổi nếu có.
<i><b>0. Phân cơng cơng việc: </b></i>
<small>● </small> Cơng việc:
<small>● </small> Phân tích u cầu.
<small>● </small> Khảo sát trang web.
<small>● </small> Viết báo cáo.
<small>● </small> Nguyên cứu công nghệ, ngôn ngữ
<small>● </small> Xây dựng ứng dụng
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">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
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9"><b>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: </b>
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.
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 ngồi ra cũng có một khuyết điểm là có những
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">chứ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 hồn tồn miễn phí,..
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">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.
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">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.
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="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.
<b>2.2 OpenCV </b>
<i>Bảng danh sách các actor </i>
<b>STT Tên actor Ý nghĩa/ ghi chú </b>
<b>1 </b> User Người dùng truy cập vào trang web và tiến hành khôi phục ả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 ảnh cần khôi phục ● Người dùng truy cập trang web
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19"><i>Bảng 3.1 Đặc tả Use-case Filter nâng cấp hình ảnh </i>
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
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20"><i>Bảng 3.1 Đặc tả Use-case Xóa nội dung ký tự trong ảnh </i>
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ụ
<b>4.1 Quá trình hệ thống hoạt động </b>
Để 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.
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="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
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">Xó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 vng 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:
Các kiểu làm mờ quan trọng:
<b>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 </b>
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)
</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26"><b>Median 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>
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 tồ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.
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27"><b>Bilateral Blur: là bộ lọc làm mịn phi tuyến tính, bảo tồn cạnh và giảm nhiễu cho hình </b>
ả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.
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.
</div>