תמונה שעשויה ממספרים
החזיקו זכוכית מגדלת מול מסך מחשב, או הגדילו תמונה עד שאי אפשר להגדיל אותה יותר, והתמונה מתפרקת לרשת של ריבועים זעירים, כל אחד בצבע אחיד אחד. הריבועים האלה הם פיקסלים, קיצור של picture elements, רכיבי תמונה, ואין בתמונה שום דבר מלבדם. תמונה דיגיטלית של שקיעה היא לא שקיעה: היא רשימה של מספרים שאומרת למסך באיזו עוצמה להאיר כל ריבוע.
שתי בחירות קובעות כמה טובה יכולה להיות הרשימה הזאת. מספר הפיקסלים שהתמונה נחתכת אליהם, הרזולוציה שלה, קובע כמה דקים הפרטים. מספר הסיביות שמוקצות לכל מספר, עומק הצבע שלה, קובע כמה גוונים היא יכולה להבחין ביניהם. בסצנה תוכלו להוריד את שניהם עד שהשקיעה מתפרקת.
פיקסלים: כמה דקים הפרטים
כדי להפוך מראה לפיקסלים, מצלמה או תוכנה פורסת עליו רשת ונותנת לכל ריבוע צבע אחד: הממוצע של כל האור שנופל בתוכו. כל מה שקטן מריבוע נמהל ונעלם. קצה חד, כמו הדופן של העץ, יכול רק ללכת בעקבות הרשת, ולכן קו אלכסוני הופך לגרם מדרגות.
נסו: הורידו את פיקסלים לרוחב ל־16 px. השמש כולה נכנסת עכשיו לכמה ריבועים, והעץ הוא עמודה של גושים. הזיזו את המחוון עד 256 px, והמדרגות מתכווצות עד שמהמרחק הזה הקצוות נראים חלקים.
הכפלת הפיקסלים לרוחב מכפילה גם את הפיקסלים לגובה, ולכן בתמונה יש פי ארבעה פיקסלים. בהגדרה החדה ביותר של הסצנה יש 256 × 192 = 49,152 פיקסלים. מצלמת טלפון של 12 מגהפיקסל שומרת בערך 4,000 × 3,000, ולכן אפשר להגדיל תמונה מטלפון הרבה מאוד לפני שהריבועים נראים.
אדום, ירוק וכחול
כל פיקסל נשמר כשלושה מספרים, ולא כמספר אחד, בגלל הדרך שבה העיניים שלנו רואות צבע. בחלק האחורי של העין יש שלושה סוגים של מדוכים, התאים שחשים צבע, והם רגישים ביותר לאורכי גל ארוכים, בינוניים וקצרים של אור: בערך אדום, ירוק וכחול. כל אור שאנחנו רואים מצטמצם לשלושה אותות בלבד: עד כמה הוא מגרה כל סוג של מדוך. לכן מסך לא צריך לייצר כל אורך גל של שקיעה אמיתית. מספיקים לו שלושה אורות לכל פיקסל, אדום, ירוק וכחול, מעורבבים בכמויות הנכונות כדי לגרות את המדוכים שלכם באותה דרך.
כל אחד משלושת המספרים נקרא ערוץ. אדום מלא וירוק מלא בלי כחול נראים צהובים; שלושתם במלואם נראים לבנים; שלושתם כבויים הם שחור. בהרבה מסכים שלושת האורות יושבים זה לצד זה כפסים דקים שנקראים תת־פיקסלים, קטנים מכדי שנבחין ביניהם ממרחק רגיל.
נסו: גררו את התקרבות לפיקסלים עד האמצע. קטע מהתמונה מתרומם ומוצג מוגדל, וכל ריבוע בו הוא פיקסל אחד. המשיכו, וכל פיקסל מתפצל לשלושת האורות שלו; בסוף כל אור מתנשא לעמודה שגובהה תואם את המספר השמור עבורו.
סיביות: כמה גוונים
מחשב שומר כל ערוץ כמספר שלם שמוקצה לו מספר קבוע של סיביות. סיבית אחת יכולה לומר רק כבוי או דולק. כל סיבית נוספת מכפילה את האפשרויות, ולכן לערוץ עם סיביות יש רמות, ולפיקסל יש צבעים אפשריים. ברוב התמונות משתמשים ב־8 סיביות לערוץ: 256 רמות לכל ערוץ, ו־256 × 256 × 256 = 16,777,216 צבעים בסך הכול.
כשערוץ לא יכול לקבל בדיוק את הבהירות שהוא צריך, הוא מעוגל לרמה הקרובה ביותר. במקומות שבהם התמונה משתנה לאט, כמו השמיים שעוברים מכחול עמוק מעל הראש לזהב באופק, פיקסלים שכנים רבים מתעגלים לאותה רמה, ואז הפיקסל הבא קופץ צעד שלם. המעבר החלק נשבר לפסים שטוחים. התופעה הזאת נקראת פסי צבע (banding), או פוסטריזציה.
נסו: בחרו 512 צבעים תחת סיביות לערוץ והסתכלו על השמיים. אחר כך רדו ל־8 צבעים: כשלכל אור יש רק כבוי או דולק, השקיעה מצטמצמת לשמונה הצירופים של אדום, ירוק וכחול במלוא העוצמה. פתחו את התקרבות לפיקסלים בהגדרה נמוכה, והעמודות יכולות לעמוד רק בגבהים המעטים שמסומנים על הסרגל.
ב־8 סיביות הצעדים קטנים כל כך שגוונים שכנים של שמיים חלקים נראים זהים לרוב העיניים, אף שפסים עדיין יכולים להתגנב למעברי צבע כהים מאוד או עדינים מאוד. מסכים ווידאו שמיועדים לטווח רחב של בהירות משתמשים ב־10 סיביות או יותר לכל ערוץ בדיוק מהסיבה הזאת.
כמה גדולה תמונה?
חברו את שתי הבחירות יחד ותקבלו את גודל התמונה לפני דחיסה:
כאשר הוא הגודל בבתים, מספר הפיקסלים ו־ מספר הסיביות לערוץ.
הנתון שמעל המסך מחשב את החשבון הזה. התמונה בגודל 64 × 48 ב־8 סיביות היא 3,072 פיקסלים × 3 בתים = 9,216 בתים. תמונה של 12 מגהפיקסל שנשמרת באותה דרך הייתה תופסת כ־36 מיליון בתים, ובכל זאת טלפון שומר אותה בכמה מיליונים בלבד. פורמטים כמו JPEG מגיעים לשם כשהם משליכים פרטים שהעין הכי פחות צפויה להחמיץ, ופורמטים כמו PNG כשהם מוצאים דפוסים חוזרים שאפשר לתאר בקיצור. כשהתמונה מוצגת, כל פיקסל עדיין חוזר להיות שלושה מספרים.
מה המודל הזה משאיר בחוץ
את השקיעה מציירת הסצנה מצורות וממעברי צבע, ולא מצלמה מצלמת אותה, וההגדרה החדה ביותר שלה היא 256 פיקסלים לרוחב כדי שהפיקסלים יישארו גלויים. גם חיישן של מצלמה אמיתית לא מודד שלושה צבעים בכל פיקסל: כל אחד מחיישני האור שלו יושב מתחת למסנן יחיד, אדום, ירוק או כחול, והמצלמה מעריכה את שני הצבעים האחרים לפי השכנים שלו.
הסצנה שומרת כל ערוץ כרמה הקרובה ביותר, בלי שום ניסיון להסתיר את הצעדים. תוכנות אמיתיות מוסיפות לעיתים קרובות גוונון (dithering), פיזור דק של פיקסלים בהירים וכהים מעט יותר שמחליף את הפסים בגרעיניות. גם המספרים השמורים אינם כמות האור: הם עוקבים אחרי עקומה תקנית שנקראת sRGB, שמקצה יותר רמות לגוונים הכהים, שבהם העין רגישה ביותר לצעדים קטנים, ולכן פיקסל שנשמר בחצי מהרמה העליונה שלו פולט רק כחמישית מהאור. העמודות מראות את המספר השמור. ולבסוף, הצבעים שאתם רואים בסצנה עוברים דרך המסך שלכם, שיש לו סידור תת־פיקסלים משלו ותפיסה משלו של כמה בהיר הוא אדום מלא.
