อัลกอริทึมการปรับขนาดแบบไหนที่จะเลือกสำหรับวิดีโอ


21

ฉันใช้VirtualDubสำหรับการเข้ารหัสกับผู้ที่การตั้งค่า ปรับขนาดอัลกอริทึม

อย่างไรก็ตามฉันบันทึกสิ่งของของฉันในปี 1920x1080 และปรับขนาดเป็น 1280x720 ตอนนี้คำถาม: ฉันควรเลือกอัลกอริทึมใดเมื่อทำการตัดสินใจเรื่องคุณภาพกับการตัดสินใจขนาดไฟล์?

ฉันมักจะไปกับ Lanczos เพราะนั่นคือสิ่งที่กำหนดไว้ล่วงหน้า คำอธิบายเหล่านั้นไม่ได้ช่วยฉันเลยในคำถามของฉัน

คำตอบ:


25

TL; DR

เมื่อสุ่มตัวอย่างลง: ใช้การกรอง Lanczos หรือ Spline

เมื่อสุ่มตัวอย่างขึ้น: ใช้การกรอง Bicubic หรือ Lanczos

สิ่งเหล่านี้ขึ้นอยู่กับเนื้อหาที่ฉันได้อ่านมาหลายปีและจากสิ่งที่ฉันเคยเห็นใช้ในอุตสาหกรรม คำแนะนำอาจแตกต่างกันไปขึ้นอยู่กับประเภทเนื้อหาและพื้นที่ใช้งาน

ทำไมมันถึงสำคัญ?

อาจเป็นที่ถกเถียงกันอยู่ว่าตัวกรองการปรับขนาดไม่สำคัญว่าเมื่อคุณลดขนาดวิดีโอ ที่สำคัญกว่านั้นคือพวกเขามีผลกระทบต่อคุณภาพเมื่อลดอัตราการสุ่มสัญญาณเนื่องจากคุณจำเป็นต้องสร้างข้อมูลที่ไม่มีในตอนแรก

ตัวกรองเหล่านี้ล้วนมีผลกระทบกับขนาดไฟล์เพียงเล็กน้อย คุณไม่ควรกังวลเกี่ยวกับความแตกต่างที่มีขนาดใหญ่

ความจริงคือเช่นเคยเมื่อมีการเข้ารหัสวิดีโอผลที่ได้นั้นขึ้นอยู่กับแหล่งข้อมูล คุณไม่สามารถคาดการณ์ผลลัพธ์ได้เสมอ แต่ดูว่าอะไรดีที่สุดสำหรับคุณ

อัลกอริธึมที่แตกต่างกัน

ตัวอย่างเช่นนี่คือการแก้ไขbicubicเทียบกับbilinear :

     ป้อนคำอธิบายรูปภาพที่นี่

เห็นว่าการแก้ไข bicubic ในขอบเรียบ? นั่นเป็นคำสั่งทั่วไปมาก ... แต่คุณสามารถหาภาพรวมของขั้นตอนวิธีการปรับภาพที่นี่

  • การแก้ไข Bilinearใช้สภาพแวดล้อม 2x2 ของพิกเซลและจากนั้นใช้ค่าเฉลี่ยของพิกเซลเหล่านี้เพื่อแก้ไขค่าใหม่ มันไม่ใช่อัลกอริทึมที่ดีที่สุด แต่ค่อนข้างเร็ว

  • การแก้ไข Bicubicใช้สภาพแวดล้อมแบบ 4x4 ของพิกเซลชั่งพิกเซลที่อยู่ด้านในสุดให้สูงขึ้นจากนั้นใช้ค่าเฉลี่ยเพื่อแก้ไขค่าใหม่ มัน - เท่าที่ฉันกังวล - เป็นที่นิยมที่สุด

  • การหาพื้นที่เฉลี่ยใช้การแมปพิกเซลต้นทางและพิกเซลปลายทางโดยเฉลี่ยพิกเซลต้นทางโดยคำนึงถึงเศษส่วนของพิกเซลปลายทางที่ครอบคลุม ตามหน้านี้มันควรจะให้ผลลัพธ์ที่ดีกว่าเมื่อมีการสุ่มตัวอย่าง

  • การแก้ไขเส้นโค้งและ sincใช้พหุนามที่มีลำดับสูงกว่าและดังนั้นจึงยากที่จะคำนวณได้มากกว่าการแก้ไขแบบกึ่ง bicubic ฉันไม่คิดว่าเวลาประมวลผลที่เพิ่มขึ้นโดยรวมนั้นคุ้มค่ากับการใช้งาน

  • การสุ่มใหม่ Lanczosเกี่ยวข้องกับตัวกรอง sinc เช่นกัน มันมีราคาแพงกว่าการคำนวณ แต่มักจะอธิบายว่ามีคุณภาพสูงมากและสามารถใช้สำหรับการสุ่มตัวอย่างขึ้นและลง

  • hqxรวมถึงตัวกรอง 2xSaIใช้สำหรับการปรับขนาดพิกเซล (เช่นตัวเลียนแบบเกม) ฉันไม่คิดว่ามันมีเหตุผลที่ดีที่จะใช้มันในวิดีโอ

การเปรียบเทียบของ Jeff Atwood

มันจะเปิดออก Jeff Atwood ได้เปรียบเทียบของขั้นตอนวิธีการแก้ไขภาพ กฎของหัวแม่มือของเขาคือการใช้การแก้ไข bicubic สำหรับการลดลงของการสุ่มตัวอย่างและการแก้ไข bilinear เมื่อ upampling ที่กล่าวมานี่ไม่ใช่สิ่งที่แนะนำสำหรับการเข้ารหัสวิดีโอโดยทั่วไปและผู้แสดงความคิดเห็นบางคนได้ตั้งข้อสงสัยเกี่ยวกับความเชี่ยวชาญของ Atwood ในสาขานี้

อย่างไรก็ตามเขายังพูดถึงว่า ...

การลดขนาดรูปภาพเป็นการทำงานที่ปลอดภัยและมีเหตุผลอย่างสมบูรณ์ คุณเพียงแค่ลดความแม่นยำและความละเอียดลงโดยการทิ้งข้อมูล ทำให้ภาพมีขนาดเล็กตามที่คุณต้องการและคุณมีความเที่ยงตรงสมบูรณ์ - ภายในขอบเขตของจำนวนพิกเซลที่คุณอนุญาต คุณจะได้รับผลลัพธ์ที่ดีไม่ว่าคุณจะเลือกอัลกอริทึมแบบใดก็ตาม (ดียกเว้นว่าคุณเลือกอัลกอริธึม Pixel Resize หรือ Neighbor Neighbor ที่ใกล้ที่สุด)

ตัวอย่างอื่น ๆ

ต่อไปนี้เป็นตัวอย่างเพิ่มเติมของอัลกอริธึมการแก้ไขภาพรวมถึงขั้นตอนที่กล่าวถึงข้างต้น

ฉันยังพบเอกสาร (กฎของฉาก) จากฉากการเข้ารหัสวิดีโอที่แบนตัวกรอง bicubic สำหรับการสุ่มตัวอย่างอย่างชัดเจน แต่พวกเขารับรองการกลับมาใช้งาน Lanczos, Spline หรือ "Blackman" แทน


ฉันเคยใช้ "แม่นยำ bicubic A = 100" ในการติดตั้งโปรแกรมที่อัพเดทใหม่มันเป็นค่าเริ่มต้นของ Lanczos หลายคนชอบมัน ฉันทิ้งไว้อย่างนั้นเป็นเวลานาน ในที่สุดฉันก็กลับไปดูสิ่งที่ Lanczos เข้ารหัสในภายหลังและคิดว่ามันไม่ดีการเข้ารหัสชุดต่อไปฉันหันกลับไปที่ bicubic ฉันบีบอัดการบีบอัดเช่นกันฉันคิดว่า Lanczos น่าจะดีกว่าถ้าฉันไม่ได้พยายามลดขนาดข้อมูลทั้งหมดลง
Psycogeek

2
FWIW ฉันจะไม่ถือว่า Jeff Atwood เป็นผู้เชี่ยวชาญในการประมวลผลภาพและในบทความนั้นเขาไม่ได้ตรวจสอบอะไรนอกจาก bilinear เพื่อนบ้านที่ใกล้ที่สุดหรือ bicubic (หนึ่งตัวแปรเฉพาะ) คนส่วนใหญ่จะเห็นด้วยกับข้อเสนอแนะของเขาที่จะใช้ bilinear เมื่อการขยายใหญ่เกินไป
thomasrutter

1
@thomasrutter ขอบคุณ ฉันเห็นด้วยกับคุณ - เมื่อฉันเขียนสิ่งนี้ฉันอาจไม่รู้เกี่ยวกับการประมวลผลภาพมากเท่าที่ฉันทำตอนนี้ ฉันเดาว่าฉันจะลบการอ้างอิงไปยังบทความนั้นและค้นหาแหล่งอื่น ๆ
slhck

8

ฉันพบภาพลักษณ์ที่ดีซึ่งบันทึกบางส่วนไว้

ป้อนคำอธิบายรูปภาพที่นี่

เวอร์ชันเต็มขนาดที่นี่

โดยทั่วไปคุณต้องการเอฟเฟ็กต์การปรับความคมชัดเล็กน้อยเมื่อสร้างภาพที่มีขนาดใหญ่ขึ้นให้เป็นภาพที่มีขนาดเล็กลง ชุดตัวกรอง MadVR มีค่าเริ่มต้นเป็น Lanczos สำหรับการลดอัตราการสุ่มและ bicubic สำหรับการลดอัตราการสุ่ม


2

คุณกำลังแปลงพิกเซลดั้งเดิม 3x3 เป็นพิกเซลเป้าหมาย 2x2

หากคุณต้องการรักษาเส้นที่คมชัดให้เลือก Lanczos หรือบางสิ่งที่ใช้พิกเซลที่ล้อมรอบมากขึ้นเพื่อไม่ให้เส้นคมชัดเบลอ (เช่นขนหรือสะท้อนแสง)

มิฉะนั้นค่าเฉลี่ยพื้นที่อื่น ๆ (เช่น bilinear / trilinear) ก็เพียงพอแล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.