4.11. การดีเบเยอร์ริ่ง

เฟรม Bayer ดิบมีเพียงหนึ่งช่องสีต่อพิกเซล การแปลงให้เป็นภาพ RGB สามช่องปกติหมายถึงการเติมสองช่องที่หายไปในทุกพิกเซลโดยการแทรกค่าจากพิกเซลใกล้เคียงที่มีสีที่ถูกต้อง การแทรกค่านั้นเรียกว่า debayering (หรือที่เรียกว่า demosaicing) มีตระกูลอัลกอริทึมหลักอยู่ไม่กี่กลุ่ม

4.11.1. Super-pixel

วิธีที่ถูกที่สุดคือการยุบทุกบล็อก Bayer ขนาด 2x2 -- หนึ่งเซลล์แดง หนึ่งเซลล์น้ำเงิน และสองเซลล์เขียว -- ให้เป็นพิกเซลเอาต์พุตเดียว:

  • ช่องแดงคือค่าของเซลล์แดง

  • ช่องน้ำเงินคือค่าของเซลล์น้ำเงิน

  • ช่องเขียวคือค่าเฉลี่ยของเซลล์เขียวทั้งสอง

บล็อกอินพุตขนาด 2x2 แต่ละบล็อกจะกลายเป็นพิกเซลเอาต์พุตหนึ่งพิกเซล ดังนั้นภาพที่ได้จึงมีความกว้างครึ่งหนึ่งและความสูงครึ่งหนึ่งของเซนเซอร์ โดยมีจำนวนพิกเซลเป็นหนึ่งในสี่ Super-pixel นั้นรวดเร็วและปราศจากสิ่งผิดปกติจากการแทรกค่า แต่ค่าใช้จ่ายด้านความละเอียดทำให้เป็นทางเลือกสุดท้าย -- ไม่ค่อยได้ใช้

4.11.2. Bilinear

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

พิกเซลเขียวในแถวแดง-เขียว ค่าแดงที่หายไปจะเฉลี่ยจากเพื่อนบ้านแดงสองตัวทางซ้ายและขวา ค่าน้ำเงินที่หายไปจะเฉลี่ยจากเพื่อนบ้านน้ำเงินสองตัวด้านบนและด้านล่าง

A 3 column by 3 row Bayer-pattern neighbourhood centred on a green pixel in a red-green row. The cells to the left and right of the centre are red; the cells above and below are blue; the corner cells are green. White arrows point inward from the two red cells and the two blue cells into the centre.

ค่าแดงที่หายไปมาจากเพื่อนบ้านแดงแนวนอน ค่าน้ำเงินที่หายไปมาจากเพื่อนบ้านน้ำเงินแนวตั้ง

พิกเซลเขียวในแถวเขียว-น้ำเงิน รูปแบบเดียวกันแต่สลับแดงและน้ำเงิน ค่าแดงที่หายไปจะเฉลี่ยจากเพื่อนบ้านแดงสองตัวด้านบนและด้านล่าง ค่าน้ำเงินที่หายไปจะเฉลี่ยจากเพื่อนบ้านน้ำเงินสองตัวทางซ้ายและขวา

A 3 column by 3 row Bayer-pattern neighbourhood centred on a green pixel in a green-blue row. The cells above and below the centre are red; the cells to the left and right are blue; the corner cells are green. White arrows point inward from the two red cells and the two blue cells into the centre.

ค่าแดงที่หายไปมาจากเพื่อนบ้านแดงแนวตั้ง ค่าน้ำเงินที่หายไปมาจากเพื่อนบ้านน้ำเงินแนวนอน

พิกเซลแดง ค่าเขียวที่หายไปจะเฉลี่ยจากเพื่อนบ้านเขียวสี่ตัวในทิศทางหลัก (บน ล่าง ซ้าย ขวา) ค่าน้ำเงินที่หายไปจะเฉลี่ยจากเพื่อนบ้านน้ำเงินสี่ตัวในแนวทแยงมุม

A 3 column by 3 row Bayer-pattern neighbourhood centred on a red pixel. The four cardinal neighbours (above, below, left, right) are green; the four diagonal corner cells are blue. White arrows point inward from all eight neighbours into the centre.

ค่าเขียวที่หายไปมาจากเพื่อนบ้านเขียวในทิศทางหลักทั้งสี่ ค่าน้ำเงินที่หายไปมาจากเพื่อนบ้านน้ำเงินในแนวทแยงทั้งสี่

พิกเซลน้ำเงิน กระจกของกรณีแดง ค่าเขียวที่หายไปจะเฉลี่ยจากเพื่อนบ้านเขียวสี่ตัวในทิศทางหลัก และค่าแดงที่หายไปจะเฉลี่ยจากเพื่อนบ้านแดงสี่ตัวในแนวทแยงมุม

A 3 column by 3 row Bayer-pattern neighbourhood centred on a blue pixel. The four cardinal neighbours are green; the four diagonal corner cells are red. White arrows point inward from all eight neighbours into the centre.

ค่าเขียวที่หายไปมาจากเพื่อนบ้านเขียวในทิศทางหลักทั้งสี่ ค่าแดงที่หายไปมาจากเพื่อนบ้านแดงในแนวทแยงทั้งสี่

Bilinear รักษาความละเอียดเต็มของเซนเซอร์และนุ่มนวลเพียงพอสำหรับการใช้งานส่วนใหญ่ แต่ก็ยังแสดงสิ่งผิดปกติที่ขอบ การเปลี่ยนแปลงอย่างชัดเจนระหว่างสองสีข้ามกริดพิกเซลในทิศทางเฉพาะ และการเฉลี่ยข้ามขอบจะทำให้นุ่มลงเล็กน้อย เมื่อขอบสีและขอบความสว่างไม่ตรงกันพอดี จะปรากฏรอยสีจางๆ ในเอาต์พุต

4.11.3. เหนือกว่า Bilinear

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

คุณภาพการดีเบเยอร์ที่มีใน OpenMV Cam แต่ละรุ่นนั้นขึ้นอยู่กับแพลตฟอร์ม -- ขึ้นอยู่กับสิ่งที่เซนเซอร์และ MCU บนกล้องนั้นรองรับ

4.11.4. ตำแหน่งที่ทำการดีเบเยอร์

ตัวประมวลผลสัญญาณภาพ (ISP) -- บนชิปเซนเซอร์เองหรือบน MCU -- จะทำการดีเบเยอร์แต่ละเฟรมก่อนที่จะออกจากไปป์ไลน์การสร้างภาพในกรณีส่วนใหญ่ โค้ดของผู้ใช้จะได้รับภาพ RGB สามช่องที่เสร็จสมบูรณ์โดยไม่ต้องสัมผัส raw mosaic เลย

ISP ยังสามารถสั่งให้ส่งเฟรม Bayer ดิบผ่านไปโดยไม่เปลี่ยนแปลง Bayer ดิบใช้หน่วยความจำน้อยกว่าภาพที่ดีเบเยอร์แล้ว -- หนึ่งไบต์ต่อพิกเซลเทียบกับสาม -- ซึ่งทำให้มีประโยชน์เมื่อการจัดเก็บเฟรมเป็นคอขวด เมื่อบันทึกเพื่อประมวลผลออฟไลน์ หรือเมื่อโปรเจกต์ต้องการใช้อัลกอริทึมการดีเบเยอร์แบบกำหนดเองในซอฟต์แวร์