Những thuật toán thay đổi kích thước để chọn cho video?


21

Tôi đang sử dụng VirtualDub để mã hóa với các cài đặt đó . thay đổi kích thước thuật toán

Tuy nhiên, tôi ghi lại nội dung của mình vào năm 1920x1080 và thay đổi kích thước xuống 1280x720. Bây giờ câu hỏi: tôi nên chọn thuật toán nào khi đưa ra quyết định chất lượng cân bằng so với quyết định kích thước tệp?

Tôi luôn đi cùng Lanczos vì đó là những gì đã được cấu hình sẵn. Những mô tả đó không thực sự giúp tôi trong câu hỏi của tôi.

Câu trả lời:


25

TL; DR

Khi lấy mẫu xuống: Sử dụng bộ lọc Lanczos hoặc Spline.

Khi lấy mẫu: Sử dụng bộ lọc bicubic hoặc Lanczos.

Những tài liệu này dựa trên tài liệu tôi đã đọc trong nhiều năm qua và từ những gì tôi thấy được sử dụng trong ngành. Các khuyến nghị có thể thay đổi tùy thuộc vào loại nội dung và khu vực ứng dụng.

Tại sao nó quan trọng?

Có thể lập luận rằng các bộ lọc thay đổi kích thước không quan trọng lắm khi bạn hạ thấp video. Quan trọng hơn, chúng có ảnh hưởng đến chất lượng khi nâng cấp, bởi vì bạn cần tạo dữ liệu ở nơi không có ở nơi đầu tiên.

Tất cả các bộ lọc này chỉ có tác động nhỏ đến kích thước tệp. Do đó, bạn không nên lo lắng về sự khác biệt lớn ở đó.

Thực tế là, như mọi khi khi mã hóa video, kết quả phụ thuộc rất nhiều vào tài liệu nguồn. Bạn không thể luôn dự đoán kết quả, nhưng chỉ cần xem những gì phù hợp nhất với bạn.

Các thuật toán khác nhau

Ví dụ, đây là phép nội suy bicubic so với song tuyến tính :

     nhập mô tả hình ảnh ở đây

Xem rằng nội suy bicubic dẫn đến các cạnh mịn hơn? Đó là một tuyên bố rất chung chung nhưng bạn có thể tìm thấy tổng quan về các thuật toán chia tỷ lệ hình ảnh ở đây .

  • Nội suy song phương sử dụng môi trường 2x2 của pixel và sau đó lấy trung bình của các pixel này để nội suy giá trị mới. Đây không phải là thuật toán tốt nhất, nhưng khá nhanh.

  • Nội suy bicubic sử dụng môi trường 4 x 4 pixel, cân nhắc các pixel trong cùng cao hơn, sau đó lấy trung bình để nội suy giá trị mới. Đó là - theo như tôi quan tâm - phổ biến nhất.

  • Tính trung bình diện tích sử dụng ánh xạ các pixel nguồn và pixel đích, tính trung bình các pixel nguồn liên quan đến tỷ lệ pixel đích được che phủ. Theo trang này , nó sẽ tạo ra kết quả tốt hơn khi downsampling.

  • Spline sinc suy do đó khó khăn hơn để tính toán hơn suy bicubic sử dụng bậc cao đa thức và đang có. Tôi không nghĩ rằng việc tăng tổng thời gian xử lý là đáng để sử dụng chúng.

  • Lanczos resampling liên quan đến một bộ lọc chân thành là tốt. Nó đắt hơn về mặt tính toán nhưng thường được mô tả là chất lượng rất cao và có thể được sử dụng để lấy mẫu lên và xuống.

  • HQX cũng như 2xSaI bộ lọc được sử dụng để mở rộng quy mô pixel nghệ thuật (ví dụ như trò chơi giả lập). Tôi không nghĩ có một lý do chính đáng để sử dụng chúng trong video.

So sánh của Jeff Atwood

Hóa ra Jeff Atwood đã so sánh các thuật toán nội suy ảnh . Quy tắc ngón tay cái của ông là sử dụng phép nội suy hai chiều cho phép ghép xuống và phép nội suy song tuyến khi lấy mẫu. Điều đó nói rằng, đây không phải là những gì thường được khuyến nghị cho mã hóa video - và một số nhà bình luận đã đặt ra nghi ngờ về chuyên môn của Atwood trong lĩnh vực này.

Tuy nhiên, anh cũng đề cập đến đó

Giảm hình ảnh là một hoạt động hoàn toàn an toàn và hợp lý. Bạn chỉ đơn giản là giảm độ chính xác và độ phân giải bằng cách loại bỏ thông tin. Làm cho hình ảnh nhỏ như bạn muốn và bạn có độ trung thực hoàn toàn-- trong giới hạn số lượng pixel bạn cho phép. Bạn sẽ nhận được kết quả tốt cho dù bạn chọn thuật toán nào. (Chà, trừ khi bạn chọn thuật toán thay đổi kích thước Pixel hoặc hàng xóm gần nhất.)

Những ví dụ khác

Dưới đây là một số ví dụ khác về thuật toán nội suy ảnh , bao gồm cả các thuật toán tôi đã đề cập ở trên.

Tôi cũng tìm thấy các tài liệu (quy tắc cảnh) từ cảnh mã hóa video rõ ràng cấm lọc bicubic để lấy mẫu xuống. Thay vào đó, họ chứng thực việc tái cấu trúc Lanczos, Spline hoặc "Blackman".


Tôi đã luôn luôn sử dụng "chính xác bicubic A = 100". Khi cài đặt lại chương trình cập nhật, nó được mặc định là Lanczos, nhiều người thích nó. Tôi đã để nó theo cách đó trong một thời gian dài. Cuối cùng, tôi đi xung quanh để xem những thứ Lanczos được mã hóa sau đó, và nghĩ rằng nó không tốt, bộ mã hóa tiếp theo, tôi đã chuyển nó trở lại thành bicubic. Tôi cũng đang nén quá trình nén, tôi nghĩ Lanczos có thể có vẻ tốt hơn nếu tôi không cố gắng giảm tổng kích thước dữ liệu quá nhiều.
Psycogeek

2
FWIW Tôi sẽ không coi Jeff Atwood là một chuyên gia về xử lý hình ảnh, và trong bài báo đó, anh ta không kiểm tra bất cứ điều gì khác ngoài song tuyến tính, hàng xóm gần nhất hoặc (một biến thể cụ thể của) bicubic. Hầu hết mọi người sẽ đồng ý khuyến nghị của anh ta để sử dụng song tuyến khi mở rộng là một điều xấu.
thomasrutter

1
@thomasrutter Cảm ơn. Tôi đồng ý với bạn, khi tôi viết bài này, có lẽ tôi không biết nhiều về xử lý ảnh như bây giờ. Tôi đoán tôi sẽ xóa tham chiếu đến bài viết đó và tìm một số nguồn khác.
slhck

8

Tôi tìm thấy một hình ảnh tốt mà tài liệu một số điều này.

nhập mô tả hình ảnh ở đây

Phiên bản kích thước đầy đủ ở đây .

Nói chung, bạn muốn có một hiệu ứng làm sắc nét nhẹ khi tạo một hình ảnh lớn hơn thành một hình nhỏ hơn và hiệu ứng làm mờ nhẹ khi làm cho một hình ảnh nhỏ hơn thành một hình ảnh lớn hơn. Bộ lọc MadVR đặt mặc định thành Lanczos để nâng cấp và bicubic cho thu nhỏ.


2

Bạn đang chuyển đổi pixel gốc 3x3 thành pixel đích 2x2.

Nếu bạn muốn giữ các đường sắc nét, hãy chọn Lanczos hoặc thứ gì đó sử dụng nhiều pixel xung quanh hơn để không làm mờ các đường sắc nét (như lông hoặc phản chiếu)

Nếu không, diện tích trung bình vv (cũng là song tuyến / trilinear) sẽ đủ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.