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
TỔNG QUAN VỀ ĐỀ TÀI
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.
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
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 hoàn toàn miễn phí,
Đối tượng nghiên cứu
Người dùng có nhu cầu khôi phục ảnh
CƠ SỞ LÝ THUYẾT
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
● 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.
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
Hẳ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.
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.
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
Phầ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
PHÂN TÍCH HỆ THỐNG
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
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
3.2.2 Danh sách các Use-case
Bảng danh sách các Use-case
STT Tên Use-case Ý nghĩa/ ghi chú
1 Khôi phục ảnh bị hư hại
Người dùng tiến hành chọn các phương thức và khôi phục hình ảnh
2 Filter nâng cấp chất lượng hình ả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
Đặc tả Use Case
Bảng 3.1 Đặc tả Use-case Khôi phục ảnh hư hại
Tên Use-case Khôi phục hình ảnh bị hư hại
Mô tả tóm tắt Người dùng tiến hành chọn ảnh và khôi phục ảnh Điều kiện trước Truy cập trang web IRepair Đ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
● Hiển thị màn hình bắt đầu Người dùng chọn và xác nhận ảnh muốn khôi phục Xác nhận hệ thống bắt đầu xử lý ảnh
Nếu thành công xuất ra ảnh đã được khôi phục Lưu ảnh
Bả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
● Hiển thị màn hình bắt đầu Người dùng chọn và xác nhận ảnh muốn khôi phục Xác nhận hệ thống bắt đầu xử lý ảnh
Nếu thành công xuất ra ảnh đã được khôi phục Lưu ảnh
Bả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
Sơ đồ Activity
Quá trình thực khôi phục ảnh bị hư hỏng:
HIỆN THỰC HỆ THỐNG
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
● Đố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
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 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:
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
Chí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)
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ỏ 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
Bilateral 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
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
Cách để tô màu cho những bức ảnh trắng đên hoặc khôi phục lại màu mà chúng nên có thông qua deep learning và training dữ liệu ảnh
Các bước được tóm gọn lại như sau:
- Chuyển tất cả các training image từ RBG color space sang Lab color space
- Dùng L channel như là đầu vào của mạng lưới và train mạng lưới nhằm dự đoán được ab channels
- Kết hợp đầu vào L channel với ab channels đã dự đoán được
- Chuyển bức ảnh Lab trở về RBG
29 Đầu tiên lấy Dataset của ảnh RGB và chuyển tất cả sang Lab channel dataset
L : tượng trưng cho mức độ intense của ảnh ( Lightness ) a : là tập hợp của xanh và đỏ
30 b: là tập hợp của xanh biển và vàng
Tiếp theo lấy L channel để train và dự đoán ab channels
Về cơ bản thì L tượng trưng cho mức độ ảnh sáng của ảnh được thể hiện qua mức độ trắng đen
Sau khi đã có được ab channels ta sẽ kết hợp nó với L channel để tạo ra Lab
Và cuối cùng là chuyển đổi từ Lab sang RGB để có được bức ảnh với màu sắc chân thực
Giao diện hệ thống
- Chọn ảnh cần khôi phục từ file máy tính để bắt đầu xử lý
- Nhấp vào Select bar để chọn những action mà người dùng mong muốn
- Nhấp vào button “Submit” để tiến hành xử lí ảnh
- Nhấp button “Go back” để làm mới thao tác trên màn Home
- Hiển thị trực tiếp ảnh trước và sau khi được xử lí
- Chọn Inpainting cho ảnh bị hỏng
- Hệ thống sau khi xác nhận sẽ thực hiện phân tích ảnh
- Xác định những hư hỏng có trong ảnh
- Tạo mask cho bức ảnh để xác định nhân tố gây hỏng
- Các nút bên phải ngoài dùng để xác nhận những dòng nào cần dịch hoặc không
- Mask sau khi được xác định sẽ được dùng để inpaint lại cho ảnh
- Có thể lưu ảnh và tiếp tục cải thiện chất lượng ảnh
Các kết quả của các tính năng khác trong ứng dụng: