Letterboxing
Letterboxing thay đổi kích thước ảnh theo hình dạng mục tiêu mà vẫn giữ nguyên tỷ lệ khung hình bằng cách thêm phần đệm, nhờ đó các đối tượng không bị biến dạng và toàn bộ trường nhìn được giữ lại.
Letterboxing là kỹ thuật thay đổi kích thước ảnh, giữ nguyên tỷ lệ khung hình đồng thời thêm phần đệm để đạt kích thước mục tiêu. Kỹ thuật này phóng to hoặc thu nhỏ đồng đều ảnh, rồi lấp đầy phần còn trống bằng các pixel viền, nhờ đó giữ nguyên tỷ lệ của các đối tượng và toàn bộ trường nhìn. Trong thị giác máy tính, kỹ thuật này chuẩn bị các ảnh có hình dạng khác nhau cho những model nhận đầu vào có cùng hình dạng.
Ngoài lĩnh vực AI, letterboxing còn mô tả cách hiển thị phim màn ảnh rộng với các dải ngang.
Cách Letterboxing bảo toàn hình học của ảnh#
Tỷ lệ khung hình là mối tương quan giữa chiều rộng và chiều cao của ảnh. Trong quá trình tiền xử lý dữ liệu, letterboxing chọn giá trị nhỏ hơn trong hai hệ số tỷ lệ: chiều rộng mục tiêu chia cho chiều rộng ban đầu và chiều cao mục tiêu chia cho chiều cao ban đầu. Cả hai chiều đều dùng hệ số đó, nhờ vậy ảnh sau khi đổi kích thước nằm gọn trong khung mục tiêu. Các pixel còn lại trở thành phần đệm. Thao tác đổi kích thước và thêm phần đệm của TensorFlow triển khai phương pháp này bằng các viền có giá trị bằng 0.
Ví dụ, ảnh kích thước 1280 x 720 được đưa vào khung mục tiêu 640 x 640 sẽ dùng hệ số tỷ lệ 0.5. Phần nội dung ảnh có kích thước 640 x 360, để lại 280 hàng pixel làm phần đệm: 140 hàng phía trên và 140 hàng phía dưới khi căn giữa. Ảnh chân dung sẽ có viền hai bên. Vì vậy, ảnh được xử lý bằng letterboxing có thể có phần đệm ngang hoặc dọc; khung mục tiêu cũng có thể là hình chữ nhật.
Ultralytics YOLO sử dụng phép biến đổi LetterBox để bảo toàn hình học cho đầu vào phát hiện, phân đoạn và tư thế, với giá trị đệm màu xám mặc định là 114. Khi dự đoán phát hiện, phân đoạn và tư thế bằng YOLO26, phần đệm hình chữ nhật tối thiểu giảm viền xuống bội số stride tương thích nếu hình dạng batch và backend suy luận hỗ trợ.
Letterboxing so với kéo giãn và cắt ảnh#
Ba lựa chọn thay đổi kích thước xử lý khác nhau khi hình dạng ảnh không khớp với khung mục tiêu:
- Letterboxing giữ nguyên tỷ lệ và toàn bộ ảnh, dành một phần diện tích đầu vào cho phần đệm.
- Kéo giãn thay đổi riêng chiều rộng và chiều cao để lấp đầy khung mục tiêu. Khi các hệ số tỷ lệ khác nhau, hình tròn sẽ biến thành hình elip.
- Cắt ảnh giữ nguyên tỷ lệ khi kết hợp với thay đổi kích thước đồng đều, sau đó loại bỏ nội dung nằm ngoài vùng được chọn. Các đối tượng gần mép ảnh có thể bị cắt mất.
Những lựa chọn này ảnh hưởng đến phát hiện đối tượng, vốn phụ thuộc vào hình dạng và vị trí, cũng như phân loại ảnh, trong đó việc cắt ảnh làm thay đổi bằng chứng trực quan cho một lớp.
Phần đệm cũng chiếm diện tích đầu vào. Trong ví dụ 1280 x 720, nội dung ảnh chiếm 56.25% diện tích hình vuông và phần đệm chiếm 43.75%. Việc giảm mẫu làm mất các chi tiết nhỏ bên trong phần nội dung đó; thêm pixel viền không tạo ra chi tiết bổ sung về đối tượng. Với ảnh độ phân giải cao có các đối tượng nhỏ, suy luận theo ô xử lý các vùng ảnh riêng biệt ở tỷ lệ đối tượng hiệu dụng lớn hơn.
Ví dụ Letterboxing bằng Python#
Cài đặt Pillow bằng pip install pillow. Thao tác ImageOps.pad thay đổi kích thước ảnh và căn giữa ảnh trên canvas có phần đệm. Ví dụ này sử dụng ảnh xe buýt được phân phối cho các hướng dẫn về thị giác máy tính.
from urllib.request import urlretrieve
from PIL import Image, ImageOps
urlretrieve("https://ultralytics.com/images/bus.jpg", "bus.jpg")
image = Image.open("bus.jpg")
image = image.convert("RGB")
# Preserve proportions and fill the unused area with gray.
letterboxed = ImageOps.pad(image, (640, 640), color=(114, 114, 114))
letterboxed.save("letterboxed_bus.png")
print(f"{image.size} -> {letterboxed.size}")Kích thước đầu ra là (810, 1080) -> (640, 640), biểu thị theo chiều rộng và chiều cao. Ảnh đã lưu chứa toàn bộ ảnh chụp, được đổi kích thước thành 480 x 640, với viền rộng 80 pixel ở mỗi bên.
Ánh xạ chú thích và dự đoán#
Letterboxing biến đổi hệ tọa độ cũng như các pixel. Tọa độ của mọi hộp giới hạn đều phải được nhân tỷ lệ và dịch chuyển theo phần đệm bên trái hoặc phía trên. Hình học tương tự cũng áp dụng cho keypoint trong ước lượng tư thế và đường viền đối tượng trong phân đoạn instance. Nếu không điều chỉnh chú thích trong quá trình huấn luyện, mục tiêu sẽ lệch khỏi các đối tượng mà chúng mô tả.
Sau khi suy luận, đổi tỷ lệ tọa độ sẽ đảo ngược phép biến đổi: trừ độ lệch do phần đệm, rồi chia cho hệ số thay đổi kích thước. Với một hộp được định vị chính xác nhưng có phần đệm khác 0, nếu bỏ qua độ lệch đó, hộp sẽ bị dịch chuyển và giá trị giao trên hợp với ground truth sẽ giảm. Trong ví dụ xe buýt, điểm có tọa độ sau khi thêm đệm là (320, 320) được ánh xạ về tọa độ ban đầu (405, 540) sau khi trừ 80 khỏi x và chia cả hai tọa độ cho 640 / 1080.










