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 באופן שונה.
פיקסל ירוק בשורת אדום-ירוק. ערך האדום החסר ממצע את שני השכנים האדומים משמאל ומימין; ערך הכחול החסר ממצע את שני השכנים הכחולים מלמעלה ומלמטה.
האדום החסר מגיע מהשכנים האדומים האופקיים; הכחול החסר מהשכנים הכחולים האנכיים.¶
פיקסל ירוק בשורת ירוק-כחול. אותה צורה כשהאדום והכחול מוחלפים. ערך האדום החסר ממצע את שני השכנים האדומים מלמעלה ומלמטה; ערך הכחול החסר ממצע את שני השכנים הכחולים משמאל ומימין.
האדום החסר מגיע מהשכנים האדומים האנכיים; הכחול החסר מהשכנים הכחולים האופקיים.¶
פיקסל אדום. ערך הירוק החסר ממצע את ארבעת השכנים הירוקים הראשיים (מלמעלה, מלמטה, משמאל, מימין). הכחול החסר ממצע את ארבעת השכנים הכחולים האלכסוניים.
הירוק החסר מגיע מארבעת השכנים הירוקים הראשיים; הכחול החסר מארבעת השכנים הכחולים האלכסוניים.¶
פיקסל כחול. השתקפות של מקרה האדום. הירוק החסר ממצע את ארבעת השכנים הירוקים הראשיים, והאדום החסר ממצע את ארבעת השכנים האדומים האלכסוניים.
הירוק החסר מגיע מארבעת השכנים הירוקים הראשיים; האדום החסר מארבעת השכנים האדומים האלכסוניים.¶
שיטת 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 מותאם אישית בתוכנה.