כאשר מנסים להגדיל תמונות יותר מדי, או כאשר משתמשים בתמונות שנשמרו ברזולוציה נמוכה, ההצגה שלהן על מסך איכותי נראית מפוקסלת ולא נעימה למראה. לפעמים יש לזה פתרונות פשוטים, אך לעתים הבעיה מאוד מאתגרת. נסביר ונציע אפשרויות לפתרון.
בעבר, צילום תמונה באיכות גבוהה ולאחר מכן התמקדות והגדלת פריט בודד היו משימות דמיוניות. בסצנה בסרט הנפלא "בלייד ראנר" (1982) מצליח הגיבור במאמץ רב לעשות זום לתמונה ולזהות בה דמות חשודה שצולמה דרך מראה [1]. כיום המצב שונה: לרובנו יש מצלמות משוכללות שאפשר לצלם איתן ברזולוציה גבוהה, ואז להתמקד ולהגדיל אזור בתמונה כמעט ללא פגיעה באיכות. אולם גם אז, כאשר גוזרים פיסה קטנה מתמונה, או כשמשתמשים בתמונה שנשמרה ברזולוציה נמוכה, כמו רוב התמונות ברשת, התצוגה "מפוקסלת" ולא נעימה למראה.
הגדלת הרזולוציה, מספר הפיקסלים שבתמונה, היא נושא מורכב, אולם הפעולה הבסיסית מערבת דווקא מתמטיקה פשוטה. ניקח שרטוט על גבי דף משבצות. אנו מתבקשים לעשות "זום" ולהציג מתוכו בהגדלה ריבוע המורכב מארבע משבצות (2x2) הצבועות בצבעים שונים. לשם כך נשרטט ריבוע חדש גדול, למשל בגודל 10x10 משבצות, הבנוי מארבעה ריבועים קטנים (5X5), ונצבע כל אחד בהתאם לצבע שבשרטוט המקורי. ביצענו הגדלה ששמרה על הצורה והצבעים המקוריים.
גם במדיה דיגיטלית, השיטה הפשוטה להגדלת הרזולוציה של תמונה היא שכפול פיקסלים לצורך מילוי שטחים, אולם שיטה זו הופכת את הפיקסלים לריבועים ומדגישה מעברי צבע חדים. התוצאה: תמונה מפוקסלת. כיצד ניתן לשפר תמונה שהוגדלה וליצור בה מעברי צבע הדרגתיים, כדי שהתמונה תראה יותר מציאותית ונעימה לעין?
ננסה להגדיל מלבן המורכב משתי משבצות. כידוע, ניתן לייצג צבע בתמונות שחור-לבן באמצעות מספר בין אפס (שחור) לאחד (לבן). נניח שערך הצבע במשבצת בצד שמאל הוא אפס (שחור) ובצד ימין 0.45 (אפור). אנו רוצים לבצע הגדלה ולבנות מלבן חדש שאורכו עשר משבצות. את המשבצת השמאלית נצבע בשחור, את הימנית באפור (0.45), ואת המשבצות שביניהן נרצה לצבוע כך שייווצרו מעברי צבע הדרגתיים. כיצד?
בהסתכלות מתמטית, מציאת ערכי צבעים שייצרו שינוי קבוע בגוון בין משבצות שכנות שקולה למציאת איברי סדרה חשבונית עם הפרש קבוע, שאיברה הראשון אפס והעשירי 0.45. הפתרון הוא סדרת הצבעים המבוקשת: 0 ,0.05, 0.10, 0.15, 0.20,…0.45. אם נצייר את המלבן על המסך נראה שנוצרו מעברי צבע הדרגתיים, אבל עדיין רואים קפיצות. אולם אם נשתמש במלבן של אלף משבצות במקום עשר נראה מעבר רציף בין הצבעים. שיטה זו של מילוי תמונה תוך יצירת מעברי צבע בהפרשים קבועים נקראת "אינטרפולציה לינארית".
דוגמה דומה אבל מורכבת יותר היא הגדלת תמונה בדו-ממד כך שתיראה נעימה לעין: נניח שעלינו להפוך ריבוע הבנוי מארבע משבצות צבועות (2x2) לריבוע בגודל 10x10. נעשה זאת בשלבים: ראשית, נבצע אינטרפולציה לינארית המשתמשת בשתי המשבצות העליונות בריבוע המקורי, ונצבע את עשר המשבצות שבשורה העליונה של הריבוע החדש, ונשתמש בשתי המשבצות התחתונות של הריבוע הקטן לצבוע את עשרת המשבצות בשורה התחתונה. כעת, כשהשורות העליונה והתחתונה צבועות, נוכל להשתמש באינטרפולציה לינארית על העמודות כדי לקבוע את הצבע של המשבצות הפנימיות. התוצאה תהיה מעבר צבע הדרגתי בין ארבע הפינות של הריבוע הגדול. באופן כללי הערך של כל פיקסל בתמונה המוגדלת תלוי בצבע של ארבעה פיקסלים שבתמונה המקורית.
שיטה זו, הנקראת “Bi-Linear interpolation", היא השיטה הנפוצה להגדלה תמונות, ומשתמשים בה למשל בדפדפנים כאשר עושים תקריב, או בתוכנת אופיס. (ראו תמונה, וגם הדגמה באפליקציה.)
שיטה זו ודומות לה עובדות עבור תמונות פשוטות ובהגדלה מתונה. אולם במקרים רבים, בייחוד כשרוצים לעשות הגדלה משמעותית ("סופר-רזולוציה"), התוצאה אינה מוצלחת. חסרה אינפורמציה להשלמת התמונה, כמו למשל הטקסטורה של העלה, הנקבוביות בעור, וכדומה. לעזרתנו בא השילוב בין הכמות העצומה של תמונות ברשת, עם אלגוריתמים לומדים, המשתמשים בשיטות של אינטליגנציה מלאכותית. אלגוריתמים אלו מנתחים את התמונה שהזנו ומנחשים אילו פרטים יש להשלים כדי שהתמונה הגדולה תיראה אמיתית.
עם זאת, מהתנסותנו עם כמה תוכנות כאלו גילינו תופעה משונה: לעתים כדאי דווקא להוריד את הרזולוציה של התמונה המקורית לפני שמשתמשים בתוכנות הללו, כדי לסנן רעשים, דהיינו פיקסלים, שהשתרבבו ושאינם קשורים לתמונה הכללית, וכדי ולתת לתוכנות יותר "חופש יצירתי" להוספת פרטים. אכן, כדאי לעתים "לצאת מהריבוע" ולנסות אפשרויות שונות כדי להיפטר מהפיקסלים המעצבנים.
היכנסו לאפליקציה להדגמה מאלפת במיוחד.
הערה:
[1] הגדלת תמונה בסרט בלייד ראנר