ב-Online
 
 
 
 
 
 
 
לפרק את הבייט 
איך עובד פוטושופ? 
 
 פלטת הצבעים בפוטושופ (צילומסך)   
לפרק את הבייט |
 

איך הפוטושופ יודע להפוך תמונה צבעונית לשחור-לבן? איך הוא מטשטש תמונות? עידו גנדל מגלה את הסודות הפשוטים להפליא של עיבוד תמונה

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

 

הבסיס

 
אין זה משנה באיזה פורמט שמורה התמונה שלכם – jpg החסכוני, bmp הפשוט או כל אחד מעשרות או מאות הפורמטים האחרים: בסופו של דבר, התוכנות ממירות את כולם למערך דו-ממדי של פיקסלים על גבי המסך. הרוחב והגובה של מערך זה הם ממדי התמונה, לדוגמה 640x480 המוכרים ("רזולוציית VGA"). המכפלה של שני המספרים הללו היא מספר הפיקסלים הכולל שבתמונה, במקרה זה 307,200 – הלא הוא "300K" המוכר ממפרטים של מצלמות אינטרנט. כאשר מספר זה גדול ממיליון, מתחילים לדבר על מגה-פיקסלים, כמו במצלמות דיגיטליות.

מבחינת התוכנה, כל פיקסל הוא מערך קטן של שלושה מספרים שמייצגים צבעים: אדום, ירוק וכחול. כל אחד מאלה יכול לקבל ערך בין 0 ל-255 (8 ביטים), ושלושתם ביחד מעניקים מה שנקרא "עומק צבע של 24 ביט". כיוון שהערכים אינם תלויים זה בזה, יש 256 בחזקת 3, או 16,777,216 צירופים שונים אפשריים ("16.7 מיליון צבעים" – נכון מוכר?). בחומרה של המסך עצמו, כל פיקסל מורכב משלושה אזורים צבעוניים קטנטנים וצמודים זה לזה, וכאשר מסתכלים עליהם ממרחק גדול מספיק הם נראים כמו צבע אחד ויחיד.

כלומר, כשאנו מעוניינים לבצע עיבוד של תמונה, אנחנו צריכים לזכור שמדובר בעצם במערך תלת ממדי (רוחב, גובה וצבע) של מספרים מ-0 עד 255. כדי לסבך קצת את העניינים, רוב מערכות ההפעלה מתייחסות לכל פיקסל כאל מספר גדול אחד ויחיד, שמכיל בתוכו את שלושת הצבעים – אך למזלנו, לא חסרות פונקציות להמרה של מספרים כאלה בחזרה לשלושת הרכיבים שלהם ולהיפך.

 

להפוך תמונה לשחור-לבן-אפור

העיבוד הראשון שנדגים הוא הפיכה של תמונה צבעונית לתמונה בשחור-לבן, או ליתר דיוק לתמונה בגווני אפור. במחשב, אפור הוא בעצם פיקסל שכל שלושת הצבעים שבו שווים בערכם. לדוגמה, פיקסל של 0,0,0 הוא שחור, 255,255,255 הוא לבן ואילו 128,128,128 הוא כמעט בדיוק בחצי הדרך, אפור "50%" לא כהה ולא בהיר. אם כך, האינטואיציה אומרת שכדי להשוות את ערכי כל הצבעים, צריך לעשות ממוצע שלהם עבור כל פיקסל. שיטה כזו אכן יוצרת גווני אפור מצוינים, כמו בתמונה ב' באיור שבתחתית הפסקה. שיטה אחרת, מקובלת הרבה יותר בתעשייה, מחשבת את הבהירות של הפיקסל כממוצע של ערך הצבע הגבוה ביותר וערך הצבע הנמוך ביותר, תוך התעלמות מהצבע הנותר. תוצאה של המרה כזו מופיעה בתמונה ג'. תמונה ד' מראה מה קורה אם לוקחים רק צבע יחיד – במקרה זה, הצבע המקסימלי.

אפשר להפיק תמונה בשחור ובלבן בלבד אם צובעים בשחור כל פיקסל שבהירותו מתחת ל-128 (חצי מטווח הבהירות) ובלבן כל פיקסל בהיר יותר. תוצאה של חלוקה כזאת מוצגת בתמונה ה', והיא לא ממש ברורה. קיימים אלגוריתמים להמרה חכמה הרבה יותר לשחור ולבן, והטובים מביניהם משתמשים באלמנט אקראי. תמונה ו' מציגה אלגוריתם אקראי פשוט מאד, שבוחר בכל פעם מחדש ערך אקראי בין 0 ל-255. אם הערך שהתקבל נמוך מהבהירות של הפיקסל צובעים את הפיקסל בלבן, ואם הוא גבוה יותר – בשחור. שיטה זו מבטיחה ריכוז של פיקסלים לבנים בפרופורציה לבהירות של הצבע המקורי.
 
שיטות שונות להמרת צבעים של תמונה (מימין למעלה) לגווני אפור (איור ועיבוד: עידו גנדל)
 שיטות שונות להמרת צבעים של תמונה (מימין למעלה) לגווני אפור (איור ועיבוד: עידו גנדל) 
 
 

איך עובד אפקט "ריכוך"?

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

באלגוריתם ששימש להפקת התמונות שלמטה, המשתמש מגדיר את הרדיוס המקסימלי מסביב לפיקסל המטרה. המחשב עובר על הפיקסלים בתמונה, בודק מי מהם נמצא בתוך הרדיוס הזה ומחשב ממוצע משוקלל עבור כל אחד משלושת הצבעים שבו בהתאם למרחק שלו מהמטרה. כדי להדגים, בואו נסתכל על הצבע האדום בלבד, ונניח שיש לנו שלושה פיקסלים בלבד – פיקסל המטרה ועוד שניים. ערכי האדום של שלושת הפיקסלים הם 200 (בפיקסל המטרה), 100 ו-30, והמרחקים שלהם מהמטרה הם 0 (פיקסל המטרה עצמו), 1 ו-2. כדי למנוע חילוק באפס נוסיף 1 לכל המרחקים, ואז נחלק את ערכי האדום במרחקים המתאימים: 200 חלקי 1 ועוד 100 חלקי 2 ועוד 30 חלקי 3. סכום הצבעים הוא 260. כעת, נסכום את המרחקים עצמם כך שלמרחק גדול יותר יהיה פחות משקל – באמצעות חלוקה של 1 בכל מרחק. בדוגמה שלנו, הסכום הזה יהיה 1 חלקי 1 ועוד 1 חלקי 2 ועוד 1 חלקי 3 – סה"כ אחד וחמש שישיות. סכום הצבעים חלקי סכום המרחקים הוא 142 (מעוגל), וזה יהיה הערך הסופי של הצבע האדום עבור פיקסל המטרה.
 
אפקט ריכוך. המספרים הם הרדיוסים מסביב לפיקסל המטרה לצורך חישוב הממוצע (עיבוד: עידו גנדל)
 אפקט ריכוך. המספרים הם הרדיוסים מסביב לפיקסל המטרה לצורך חישוב הממוצע (עיבוד: עידו גנדל) 
 
נקודה אחת שחשוב לזכור היא שאסור לשנות את הפיקסלים עצמם במהלך החישובים. את התוצאות חייבים לשמור במערך זמני נפרד, שיועתק לתמונה המקורית בסיום. אחרת, הפיקסלים המקוריים והמחושבים יתערבבו אלה באלה ויגרמו לעיוות משמעותי.
 

אפקט התנועה

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

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

שנה טובה!
 
 
 
@@@@@@@@@@@@@@@@@@@ ilan @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
@@@@@@@@@@@@@@@@@@@ ilan @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
 
תגובות
הוסף תגובה0 תגובות
הוספת תגובה
מאת
 
נושא
 
תוכן
 
 
 
 
תודה! תגובתך התקבלה.
התגובה תתפרסם בכפוף לתנאי האתר.
 
 
 
 
 

כל הזכויות שמורות 2011 © נענע 10 בע"מ
 
 
 
 
כל הזכויות שמורות © Nana10 בע"מ
Video powered by