4.11. ביטול תבנית Bayer (Debayering)

פריים ה-Bayer הגולמי נושא רק ערוץ צבע אחד לכל פיקסל. כדי להפוך אותו לתמונת RGB רגילה בעלת שלושה ערוצים יש להשלים בכל פיקסל את שני הערוצים החסרים על ידי אינטרפולציה מפיקסלים סמוכים בעלי הצבע המתאים. אינטרפולציה זו היא ביטול תבנית Bayer (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

קיים מגוון של אלגוריתמי debayer טובים יותר. חלקם משתמשים בסביבות גדולות יותר מהצלב הקטן של שכנים בני אותו צבע של Bilinear ומשקללים את הדגימות במקדמים שנבחרו בקפידה רבה יותר; אחרים מזהים את כיוון הקצוות המקומיים ומטים את האינטרפולציה לאורך אותו כיוון, כך שקצה החוצה את רשת הפיקסלים נשאר חד במקום להתרכך. שתי הגישות מצמצמות את הפסים הצבעוניים ואת ריכוך הקצוות שמשאירה אחריה שיטת Bilinear, במחיר של יותר חישוב אריתמטי לכל פיקסל ויותר סיליקון (או יותר עיבוד בצד ה-MCU).

איכות ה-debayer הזמינה בכל OpenMV Cam נתון תלוית-פלטפורמה – היא תלויה במה שהחיישן וה-MCU שבאותה מצלמה מספקים.

4.11.4. היכן רץ ה-debayering

מעבד אות התמונה (ISP) – על שבב החיישן עצמו או בצד ה-MCU – מבצע debayer לכל פריים לפני שהוא עוזב את צינור הדימות ברוב המקרים. קוד המשתמש מקבל תמונת RGB מוגמרת בעלת שלושה ערוצים מבלי לגעת כלל בפסיפס הגולמי.

ניתן גם להורות ל-ISP להעביר את פריים ה-Bayer הגולמי ללא שינוי. Bayer גולמי תופס פחות זיכרון מהתמונה לאחר debayer – בייט אחד לפיקסל לעומת שלושה – מה שהופך אותו לשימושי כאשר אחסון הפריימים הוא צוואר הבקבוק, בעת לכידה לצורך עיבוד לא-מקוון, או כאשר הפרויקט מבקש ליישם אלגוריתם debayer מותאם אישית בתוכנה.