4.12. צינור ה-ISP

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

A vertical pipeline diagram with eight labelled boxes, top to bottom: statistics extraction, auto white balance, debayering, colour matrix correction, gamma correction, image scaling, image cropping, and pixel packing. An arrow at the top is labelled "corrected Bayer pixels" and an arrow at the bottom is labelled "finished frame".

שלבי עיבוד הצבע והפלט של ה-ISP. הצינור מריץ כל שלב על כל פיקסל בפריים לפני שהשלב הבא מתחיל.

4.12.1. השלבים

כל שלב מיישם בתורו טרנספורמציה אחת מוגדרת היטב. הסדר חשוב – שלבים מאוחרים מניחים ששלבים מוקדמים כבר רצו, וכמה שלבים לוקחים קלטים גם מהפלט של הפריים הקודם.

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

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

  3. Debayering משחזר את שני ערוצי הצבע החסרים בכל פיקסל מפסיפס ה-Bayer, והופך נתונים גולמיים של ערוץ-אחד-לפיקסל ל-RGB בעל שלושה ערוצים. (ראו ביטול תבנית Bayer (Debayering).) כל מה שאחרי שלב זה רץ על פיקסלי RGB ולא על פסיפס ה-Bayer.

  4. תיקון מטריצת צבע (CCM) מיישם כפל במטריצה 3x3 על כל פיקסל RGB הממפה את תגובת האדום-ירוק-כחול הילידית של החיישן למרחב צבע סטנדרטי. למסננים של כל חיישן יש תגובה ספקטרלית משלהם, שאינה בדיוק מה שכל סטנדרט מצפה לו; המטריצה היא טרנספורמציה מכוילת לכל חיישן ההופכת ”RGB של החיישן“ ל“RGB סטנדרטי“.

  5. תיקון גמא מיישם עקומה לא-לינארית על כל ערוץ הדוחסת את אות החיישן הלינארי לקידוד התואם תפיסה. העין מבחינה בהבדלים בין גוונים כהים יותר מאשר בהבדלים בין גוונים בהירים, ולכן קידוד המקדיש חלק גדול יותר מתקציב הביטים שלו לקצה הכהה לוכד יותר פרטים נראים בעומק ביט נתון.

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

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

  8. אריזת פיקסלים ממירה את הייצוג הפנימי לכל ערוץ (בדרך כלל 10 או 12 ביט לערוץ) לפורמט הפלט שנבחר וכותבת את התוצאה ל-RAM.

4.12.2. משוב לולאת הבקרה

שלבים 1 ו-2 יוצרים לולאת בקרה המשתרעת על פני פריימים מרובים. הסטטיסטיקה שחולצה מפריים N מספרת לחיישן עד כמה בהירה הייתה הסצנה וכיצד ישב איזון הצבע שלה באותו פריים; בקרי החשיפה האוטומטית, ההגבר האוטומטי, ואיזון הלבן האוטומטי משתמשים במספרים אלה כדי לבחור ערכי אוגרים חדשים של חשיפה, הגבר, ואיזון לבן עבור פריים N+1. הערכים החדשים נכנסים לתוקף בקריאת הפריים הבא, הסטטיסטיקה של הפריים החדש חוזרת, והלולאה נסגרת.

עבור סצנה שאינה משתנה, הלולאה מתכנסת בתוך כמה פריימים ונשארת בהגדרה קבועה. עבור סצנה שבהירותה או גוון הצבע שלה משתנים – למשל מצלמה הנעה מבית פנימה אל חלון מואר שמש – הלולאה עוקבת אחר השינוי על פני מספר פריימים, והמשתמש רואה סחף בהירות או צבע קצר בדרך אל מצב היציבות החדש.

4.12.3. היכן רץ ה-ISP

שני סידורים נפוצים.

  • ISP על-חיישני מריץ את כל הצינור בתוך שבב החיישן ומפיק תמונת RGB מוגמרת. ה-MCU רק אוסף את התוצאה.

  • ISP חוץ-חיישני שוכן ב-MCU או ב-SoC המארח. החיישן מפיק Bayer גולמי; הסיליקון של ה-MCU (או קוד הדרייבר שלו) מריץ את הצינור לפני מסירת הפריים המוגמר לקוד המשתמש.

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