Image Inpainting
Tìm hiểu cách tính năng tô màu ảnh (image inpainting) khôi phục hoặc xóa nội dung bằng cách sử dụng mặt nạ (masks), phân đoạn (segmentation), OpenCV, YOLO26 và các mô hình tạo sinh—cùng với các ứng dụng và hạn chế chính.
Image inpainting là một kỹ thuật thị giác máy tính nhằm tái tạo các vùng bị thiếu, bị hỏng hoặc bị che khuất có chủ đích của một hình ảnh để khu vực hoàn thiện hòa hợp với xung quanh. Thay vì chỉ đơn giản che phủ các pixel không mong muốn, một hệ thống inpainting ước tính nội dung thay thế hợp lý từ kết cấu lân cận, cấu trúc cảnh và, trong các hệ thống tạo sinh, các mẫu trực quan đã học. Các mục tiêu phổ biến bao gồm khôi phục ảnh bị hỏng, xóa đối tượng hoặc văn bản, và lấp đầy các khoảng trống được tạo ra trong quá trình chỉnh sửa ảnh.
Cách Image Inpainting Hoạt Động#
Một quy trình inpainting thường có hai đầu vào: hình ảnh gốc và một mặt nạ (mask) xác định các pixel cần thay thế. Hệ thống bảo tồn các pixel bên ngoài mặt nạ trong khi tổng hợp hoặc tái tạo nội dung bên trong mặt nạ. Các quy ước về mặt nạ khác nhau tùy theo công cụ, vì vậy các nhà phát triển phải xác nhận xem các pixel màu trắng, màu đen, bằng không hay khác không đại diện cho vùng có thể chỉnh sửa.
Các phương pháp thị giác máy tính truyền thống truyền tải màu sắc, cạnh và kết cấu hướng vào trong từ ranh giới mặt nạ. Ví dụ: quy trình image inpainting của OpenCV lấp đầy các vùng được che bằng các pixel lân cận và cung cấp các thuật toán được thiết kế để tiếp tục các cấu trúc xung quanh. Các cách tiếp cận này hiệu quả và thường hoạt động tốt đối với các vết xước, bụi, văn bản mỏng và các lỗ nhỏ. (docs.opencv.org)
Các hệ thống dựa trên học tập suy luận ngữ cảnh cấp cao hơn. Một model có thể nhận ra rằng một khu vực bị che nằm trên công trình gạch, cỏ, quần áo hoặc khuôn mặt của một người và tạo ra nội dung phù hợp với cách diễn giải đó. Tuy nhiên, đầu ra chỉ mang tính hợp lý chứ không phải là sự phục hồi các pixel gốc chưa biết.
Mặt Nạ và Các Cách Tiếp Cận Model#
Chất lượng mặt nạ ảnh hưởng mạnh mẽ đến kết quả. Một mặt nạ quá nhỏ có thể để lại các cạnh đối tượng hoặc bóng tối phía sau, trong khi một mặt nạ quá khổ loại bỏ ngữ cảnh hữu ích. Các mặt nạ chính xác có thể được tạo thủ công hoặc được tạo bằng image segmentation. Instance segmentation đặc biệt hữu ích vì nó tạo ra một mặt nạ cấp độ pixel riêng biệt cho từng đối tượng.
Tài liệu Ultralytics SAM 2 mô tả việc phân đoạn được nhắc bằng điểm và hộp để chọn một đối tượng một cách tương tác. Đối với các lớp đối tượng đã biết, tác vụ phân đoạn Ultralytics YOLO trả về mặt nạ đối tượng và tọa độ đa giác. Các nhóm cũng có thể tạo và tinh chỉnh các mặt nạ đa giác bằng trình soạn thảo chú thích Ultralytics Platform, hỗ trợ chú thích thủ công, hỗ trợ bởi SAM và hỗ trợ bởi YOLO.
Một số họ model có thể thực hiện việc lấp đầy thực tế:
- Các phương pháp cổ điển mở rộng các pixel, đường viền hoặc các mẫu cường độ mịn lân cận. API khôi phục scikit-image bao gồm inpainting biharmonic cho các vùng bị che.
- Generative adversarial networks học cách tạo ra các kết quả hoàn thiện có tính thực tế trực quan thông qua sự cạnh tranh giữa các mạng tạo sinh và phân biệt.
- Diffusion models biến đổi lặp đi lặp lại nhiễu bên trong mặt nạ thành nội dung được điều kiện hóa trên hình ảnh hiển thị và, tùy chọn, một câu lệnh văn bản.
Image Inpainting so với Các Tác Vụ Liên Quan#
Inpainting được xác định bằng sự thay thế cục bộ. Các tác vụ liên quan có các mục tiêu khác nhau:
- Xóa đối tượng là một ứng dụng của inpainting: quá trình phân đoạn chọn đối tượng, và inpainting lấp đầy lỗ trống kết quả.
- Image segmentation xác định những pixel nào thuộc về một đối tượng hoặc lớp nhưng không thay thế các pixel đó.
- Denoising giảm nhiễu lan rộng trong khi nhìn chung vẫn bảo tồn nội dung cảnh.
- Outpainting mở rộng nội dung vượt ra ngoài khung hình gốc thay vì sửa chữa một vùng bên trong. Hướng dẫn chỉnh sửa ảnh dựa trên mặt nạ Google Cloud phân biệt việc chèn, xóa, mở rộng và thay thế nội dung.
- Super-resolution tăng độ phân giải và chi tiết của hình ảnh thay vì nhắm mục tiêu vào một mặt nạ do người dùng xác định.
Việc xóa văn bản tuân theo quy trình tương tự như xóa đối tượng. Văn bản được che lại, sau đó hệ thống dự đoán phần nền bị che khuất. Nếu văn bản che khuất một khuôn mặt, ký hiệu hoặc chi tiết tài liệu duy nhất, thông tin gốc không thể được khôi phục một cách đáng tin cậy.
Các ứng dụng trong thực tế#
Làm sạch ảnh bán lẻ: Người bán trực tuyến có thể phân đoạn một cáp đi lạc, phản chiếu, giá đỡ hoặc đối tượng nền khỏi ảnh chụp sản phẩm và inpaint khu vực đó. Các khiếm khuyết nhỏ có thể phù hợp với Adobe Content-Aware Fill, trong khi chỉnh sửa ảnh tạo sinh của Adobe có thể xử lý các vùng lớn hơn và phức tạp hơn về mặt ngữ nghĩa. (helpx.adobe.com)
Khôi phục ảnh: Các kho lưu trữ và nhóm hình ảnh có thể che các vết xước, đốm bụi, lỗi cảm biến hoặc các pixel bị thiếu trong ảnh đã quét và khung hình hiển vi. Điều này có thể cải thiện khả năng đọc và trình bày, nhưng các khu vực được tái tạo không nên được coi là bằng chứng quan sát được. Trong hình ảnh y tế, khoa học hoặc pháp y, một cấu trúc được phát minh có thể làm thay đổi cách giải thích và phải được ghi lại rõ ràng.
Quy trình thực tiễn và các hạn chế#
Ví dụ sau sử dụng YOLO26 để tạo mặt nạ người và OpenCV để lấp đầy khu vực đó. Cài đặt các phần phụ thuộc bằng pip install ultralytics opencv-python numpy.
import cv2
import numpy as np
from ultralytics import YOLO
model = YOLO("yolo26n-seg.pt")
results = model("https://ultralytics.com/images/bus.jpg")
result = results[0]
# Select the first detected person and convert its polygon to a mask.
class_ids = result.boxes.cls.cpu().numpy().astype(int)
person_index = next(i for i, class_id in enumerate(class_ids) if class_id == 0)
contour = result.masks.xy[person_index].astype(np.int32)
contour = contour.reshape(-1, 1, 2)
image = result.orig_img.copy()
mask = np.zeros(image.shape[:2], dtype=np.uint8)
cv2.drawContours(mask, [contour], -1, 255, cv2.FILLED)
inpainted = cv2.inpaint(image, mask, 3, cv2.INPAINT_TELEA)
cv2.imwrite("inpainted.jpg", inpainted)Điều này kết hợp việc định vị đối tượng với mẫu được tài liệu hóa để xây dựng mặt nạ từ các đường viền phân đoạn. Việc lấp đầy cổ điển có thể gặp khó khăn với các đối tượng lớn, hình học lặp lại, bóng tối, sự phản chiếu hoặc khuôn mặt. Các phương pháp tạo sinh xử lý ngữ nghĩa rộng hơn nhưng có thể giới thiệu các chi tiết được tạo ra. Bảo tồn bản gốc, kiểm tra các ranh giới ở độ phân giải đầy đủ và ghi lại các chỉnh sửa quan trọng bằng các cơ chế nguồn gốc như C2PA Content Credentials, đặc biệt khi tính xác thực quan trọng. Hướng dẫn của NIST về tính minh bạch của nội dung tổng hợp cũng nhấn mạnh nguồn gốc và việc dán nhãn là những biện pháp bảo vệ quan trọng đối với phương tiện truyền thông được thay đổi có ý nghĩa. (c2pa.org)






