ViewWiki

העולם, קצת יותר מקרוב

תמונות דיגיטליות וצבע.

הגדילו כל תמונה על מסך והיא מתפרקת לריבועים של צבע. מכמה מעט מספרים אפשר להרכיב תמונה לפני ששמים לב?

גלו את הסצנה מאמר אינטראקטיבי

01 / הניסוי

אותה שקיעה. מספרים אחרים.

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

תמונה של הסצנה התלת־ממדית „תמונות דיגיטליות וצבע”, שעוסקת בשאלה: מכמה מעט מספרים אפשר להרכיב תמונה לפני ששמים לב?
סצנה אינטראקטיבית

הגרסה האינטראקטיבית נטענת…

ההסבר שלמטה זמין כבר עכשיו, בזמן שהסצנה נטענת.

התמונה היא שקיעה שצוירה במחשב, חתוכה לפיקסלים ריבועיים (4 לרוחב על כל 3 לגובה) ונשמרת במספר הסיביות שנבחר לאדום, לירוק ולכחול של כל פיקסל. הנתון שמעל המסך מראה את גודל הקובץ לפני כל דחיסה.את התמונה מציירת הסצנה, ולא מצלמה, והיא מוצגת ברוחב של 256 פיקסלים לכל היותר כדי שהפיקסלים יישארו גלויים; בתמונה מטלפון יש כ־4,000. כל פיקסל הוא ממוצע האור על פני הריבוע שלו, מעוגל לרמה הקרובה ביותר של כל צבע, בלי גוונון ובלי דחיסה. העמודות מראות את המספר השמור, ולא את האור שהמסך פולט, והצבעים שאתם רואים תלויים גם במסך שלכם.

02 / שקיעה אחת, שלושה קבצים

פרטים וגוונים הם שני תקציבים נפרדים.

הפיקסלים קובעים כמה דקים הקצוות. הסיביות קובעות כמה עדינים הגוונים.

מעט פיקסלים01

מפוקסלת אבל חלקה

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

פיקסלים
16 × 12 = 192
סיביות לערוץ
8, כלומר 16,777,216 צבעים
ללא דחיסה
576 בתים
מה רואים
קצוות מדורגים
מעט גוונים02

חדה אבל עם פסים

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

פיקסלים
48 × 36 = 1,728
סיביות לערוץ
2, כלומר 64 צבעים
ללא דחיסה
1.3 kB
מה רואים
פסי צבע שטוחים
שניהם03

חדה וחלקה

אותם פיקסלים עם 256 רמות לכל ערוץ. הפסים דקים עכשיו מכדי שנראה אותם, והקובץ גדול פי ארבעה מהתמונה עם הפסים ופי תשעה מהתמונה המפוקסלת.

פיקסלים
48 × 36 = 1,728
סיביות לערוץ
8, כלומר 16,777,216 צבעים
ללא דחיסה
5.2 kB
מה רואים
גם הקצוות וגם המעברים נשמרים
הרעיון הגדול

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

צבעים = 2³ᵇ

תמונה שעשויה ממספרים

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

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

פיקסלים: כמה דקים הפרטים

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

נסו: הורידו את פיקסלים לרוחב ל־16 px. השמש כולה נכנסת עכשיו לכמה ריבועים, והעץ הוא עמודה של גושים. הזיזו את המחוון עד 256 px, והמדרגות מתכווצות עד שמהמרחק הזה הקצוות נראים חלקים.

חזרה לניסוי

הכפלת הפיקסלים לרוחב מכפילה גם את הפיקסלים לגובה, ולכן בתמונה יש פי ארבעה פיקסלים. בהגדרה החדה ביותר של הסצנה יש 256 × 192 = 49,152 פיקסלים. מצלמת טלפון של 12 מגהפיקסל שומרת בערך 4,000 × 3,000, ולכן אפשר להגדיל תמונה מטלפון הרבה מאוד לפני שהריבועים נראים.

אדום, ירוק וכחול

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

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

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

חזרה לניסוי

סיביות: כמה גוונים

מחשב שומר כל ערוץ כמספר שלם שמוקצה לו מספר קבוע של סיביות. סיבית אחת יכולה לומר רק כבוי או דולק. כל סיבית נוספת מכפילה את האפשרויות, ולכן לערוץ עם bb⁠ סיביות יש 2b2^b⁠ רמות, ולפיקסל יש 2b×2b×2b=23b2^b \times 2^b \times 2^b = 2^{3b}⁠ צבעים אפשריים. ברוב התמונות משתמשים ב־8 סיביות לערוץ: 256 רמות לכל ערוץ, ו־256 × 256 × 256 = 16,777,216 צבעים בסך הכול.

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

נסו: בחרו 512 צבעים תחת סיביות לערוץ והסתכלו על השמיים. אחר כך רדו ל־8 צבעים: כשלכל אור יש רק כבוי או דולק, השקיעה מצטמצמת לשמונה הצירופים של אדום, ירוק וכחול במלוא העוצמה. פתחו את התקרבות לפיקסלים בהגדרה נמוכה, והעמודות יכולות לעמוד רק בגבהים המעטים שמסומנים על הסרגל.

חזרה לניסוי

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

כמה גדולה תמונה?

חברו את שתי הבחירות יחד ותקבלו את גודל התמונה לפני דחיסה:

B=P×3×b8B = P \times 3 \times \frac{b}{8}⁠

כאשר BB⁠ הוא הגודל בבתים, PP⁠ מספר הפיקסלים ו־bb⁠ מספר הסיביות לערוץ.

הנתון שמעל המסך מחשב את החשבון הזה. התמונה בגודל 64 × 48 ב־8 סיביות היא 3,072 פיקסלים × 3 בתים = 9,216 בתים. תמונה של 12 מגהפיקסל שנשמרת באותה דרך הייתה תופסת כ־36 מיליון בתים, ובכל זאת טלפון שומר אותה בכמה מיליונים בלבד. פורמטים כמו JPEG מגיעים לשם כשהם משליכים פרטים שהעין הכי פחות צפויה להחמיץ, ופורמטים כמו PNG כשהם מוצאים דפוסים חוזרים שאפשר לתאר בקיצור. כשהתמונה מוצגת, כל פיקסל עדיין חוזר להיות שלושה מספרים.

מה המודל הזה משאיר בחוץ

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

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

מותר לעשות בהם שימוש חוזר, עם קרדיט ל־ViewWiki וקישור לעמוד הזה.

04 / ללמוד את זה בקורס

תרגול, צעד אחר צעד.

2 השיעורים האלה מלמדים את הנושא עם שאלות שנבדקות, לפי סדר הקורס.

  1. צבע ובסיס 16 מדעי המחשב · ביטים ונתונים
  2. תמונות וטקסט כמספרים מדעי המחשב · ביטים ונתונים