เหตุใดจึงต้องใช้ตัวกรองเต็นท์ในการติดตามเส้นทาง


12

99 สายของเส้นทางตามรอยซีSmallptวาทกรรมตาราง 2x2 พิกเซลย่อยสำหรับแต่ละพิกเซลก็ตั้งใจที่จะทำให้แล้วไม่กรองเต็นท์จะรวมพวกเขา

มีการนำเสนอที่น่าสนใจอธิบายรหัสที่นี่และมันกล่าวถึงตัวกรองเต็นท์ แต่ไม่ได้อธิบายว่าทำไมมันถึงมี

ทุกคนสามารถอธิบายได้หรือไม่ว่าทำไมตัวกรองเต็นท์จึงเป็นที่นิยมในกรณีนี้มากกว่าการเบลอกล่อง (เพียงเฉลี่ยค่าตัวอย่าง)

มันจะมีคุณภาพสูงกว่าหรือไม่ที่จะไปกับสิ่งที่ดีกว่าตัวกรองเต็นท์เช่นการประมาณค่ากึ่งเฮอร์ไมต์ bicubic?

คำตอบ:


13

ฟิลเตอร์ลดรอยหยักในอุดมคติทางทฤษฎีสำหรับข้อมูลตัวอย่างที่แยกไม่ได้นั้นเป็นฟิลเตอร์ sincเพราะมันจะกำจัดความถี่ทั้งหมดที่สูงกว่าความถี่ Nyquist อย่างสมบูรณ์แบบ ดังนั้นในระดับหนึ่งเราสามารถคาดหวังตัวกรองลดรอยหยักที่คล้ายกับตัวกรอง sinc อย่างใกล้ชิดมากขึ้นเพื่อให้ได้ภาพที่มีคุณภาพดีขึ้น

ตัวกรองเต็นท์ (ตัวกรองรูปสามเหลี่ยม) มีลักษณะคล้ายกับจุดสูงสุดตรงกลางของตัวกรอง sinc อย่างใกล้ชิดกว่าตัวกรองกล่อง:

ตัวกรอง sinc, สามเหลี่ยมและกล่อง

ตัวกรอง bicubic (เช่น Mitchell-Netravali) สามารถจับรูปร่างของ sinc ได้แม่นยำยิ่งขึ้นรวมถึงก้อนสมองเชิงลบสองอันแรก

ความเป็นจริงของการเลือกฟิลเตอร์นั้นลึกซึ้งกว่า "ซินและความเป็นไปได้" เล็กน้อยเนื่องจากมีสิ่งประดิษฐ์ประเภทต่าง ๆ ที่สามารถสร้างขึ้นโดยฟิลเตอร์ลดรอยหยักแบบ "ไม่เหมาะ" เช่นนามแฝงการเบลอและเสียงกริ่ง นอกจากนี้ตัวกรองที่แตกต่างกันอาจมีราคาที่คำนวณได้มากกว่าหรือน้อยกว่า ดังนั้นมันจึงเป็นเกมที่พยายามแลกเปลี่ยนสิ่งประดิษฐ์ที่แตกต่างกันระหว่างกันและกันและกับประสิทธิภาพ ฉาก / ภาพที่แตกต่างกันอาจเป็นทางเลือกหนึ่งทางเลือกและมันก็เป็นการตัดสินใจที่เกี่ยวกับสุนทรียภาพ

สำหรับเหตุผลที่ว่าทำไม smallpt ใช้เต๊นท์ฟิลเตอร์โดยเฉพาะฉันจะเดาว่าการรวมกันของประสิทธิภาพ (มันเป็นฟิลเตอร์ด่วนในการประเมิน) และความกะทัดรัด - มันสามารถทำได้ในสองบรรทัดของโค้ดในขณะที่ตัวกรอง bicubic รหัส.

อนึ่ง smallpt ใช้กริดพิกเซล 2x2 จริง ๆ แล้ววางตัวกรองเต๊นท์ที่แต่ละพิกเซลย่อยจากนั้นเฉลี่ยโดยรวมผลลัพธ์ของ subpixels ทั้งสี่ ดังนั้นผลกระทบโดยรวมคือด้วยความอยากรู้อยากเห็นว่าผลรวมของทั้งสี่เต็นท์ซึ่งจบลงด้วยการมองเหมือนปิรามิดที่มียอดแบน:

ตัวกรองเต็นท์ย่อยพิกเซล

ฉันไม่แน่ใจว่านี่เป็นความตั้งใจหรือเพิ่งจะเป็นไปตามที่คิดไว้ ฉันเดาว่านี่เป็นผลลัพธ์ในภาพที่ค่อนข้างคมชัดกว่าหากใช้ตัวกรอง tent เดียวต่อพิกเซล (เพราะการรองรับที่แคบกว่า) แต่อาจเป็น aliasing ที่มองเห็นได้


ฉันไม่สามารถช่วยพูดขอบคุณได้! ที่จริงฉันเข้าใจสิ่งนี้เป็นตัวอย่างการแบ่งชั้นด้วย 4 ชั้น และฉันสร้างจำนวนของ "strata" ที่ปรับแต่งได้เช่น 9, 16 ... ตอนนี้ฉันรู้แล้วว่ามันเป็นตัวกรอง "สี่เหลี่ยมคางหมู" (ไม่ธรรมดาในตัวแสดงอื่น ๆ ) และเมื่อจำนวน "ชั้น" ของฉันมีแนวโน้มที่จะไม่มีที่สิ้นสุดตัวกรองจะกลายเป็นตัวกรองกล่องซึ่งฉันวาดดอกลิลลี่ ... น่าสนใจ!
chaosink

3

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

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

เมื่อคุณดูรูปนี้ก่อนอื่นให้ทำเช่นนั้นในคอลัมน์จากนั้นแถวเช่น

เหตุผลที่ทำให้สิ่งนี้ดีกว่าค่าเฉลี่ยสีคือเมื่อจุดใดจุดหนึ่งเข้าใกล้จุดศูนย์กลางมากกว่าจุดกึ่งกลางอีกจุดหนึ่งก็จะมีส่วนทำให้เกิดสีสุดท้าย ด้วยค่าเฉลี่ยของสีคะแนนทั้งหมดมีส่วนเท่า ๆ กันแม้ว่าจุดหนึ่งอยู่ใกล้กับศูนย์กลางมากกว่าจุดอื่น

หาก 4 คะแนนทั้งหมดอยู่ในตำแหน่งที่คงที่ในระยะทางเท่ากันจากศูนย์กลางคุณจะได้รับการสนับสนุน 25% ในทุก ๆ จุดนั่นคือค่าเฉลี่ยโดยเฉลี่ย

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

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

การแก้ไข Bicubic ช่วยให้คุณดูเรียบเนียนขึ้น bicubic: ป้อนคำอธิบายรูปภาพที่นี่

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

ไหนดีกว่ากัน มันขึ้นอยู่กับสิ่งที่คุณชอบและฉันไม่คิดว่าจะมีความแตกต่างอย่างมาก

แหล่งที่มาของฉัน: https://en.wikipedia.org/wiki/Reconstruction_filter#Image_processing

https://en.wikipedia.org/wiki/Bilinear_interpolation

https://en.wikipedia.org/wiki/Bicubic_interpolation

(รูปภาพมาจาก Wikipedia และเป็นสาธารณสมบัติ)

ฉันหวังว่านี่จะช่วยได้ฉันแค่อยากจะบอกว่าฉันไม่ใช่มืออาชีพเกี่ยวกับเรื่องนี้ฉันแค่เป็นคนที่ชอบคอมพิวเตอร์กราฟิกส์ อาจเป็นเพราะฉันทำผิดพลาดไปบ้าง ถ้าเป็นเช่นนั้นเพียงแค่พูดมันแล้วฉันจะเปลี่ยนมัน!

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