אם אתה יכול לעבד את קבצי RAW, יהיה לך מערך פיקסלים של bayer המורכב משורות RGRGRG ו- GBGBGB (או אולי שורות RGBGRGBG.) אתה יכול להתעלם מכל הפיקסלים R ו- B, לסכם את הפיקסלים G, לקחת את שורש ריבועי (מכיוון שיש פי שניים פיקסלים ירוקים מכפי שיש אדום או כחול), וחלקו במחצית ממספר הפיקסלים G. זה אמור לתת לך את הממוצע המשוקלל המתאים ל"ירוק "בתצלום שלך. לאחר מכן תוכל לקחת את הממוצע של אדום וכחול ולחשב את האחוז הירוק שלך מכל שלושת הממוצעים.
כדי להיות מדויקים יותר, כדאי לך לשקול את השקלול הנכון לחיישן אדום, ירוק וכחול. פיקסלים, מכיוון שלחיישני CMOS יש רגישויות שונות לכל אורך גל של אור. המשקולות יהיו תלויות בדרך כלל בחיישן. זו תהיה הגישה הפשוטה.
כדי להסביר יציקת צבע בשל השעה ביום, סוגים שונים של תאורה מלאכותית וכו ', יתכן ונכון יותר לעבד מראש כל תמונה בכלי כמו Lightroom כדי לתקן. קודם איזון לבן, ואז בצע את החישוב שלך על תמונות פיקסל RGB רגילות. בניגוד לעיבוד נתוני חיישני RAW, תרצה לשקלל את החישוב שלך על סמך פיקסל "טוהר ירוק", במקום הממוצע של הרכיב הירוק. ככל שפיקסל ירוק יותר טהור, כך משקלו גבוה יותר לעומת פיקסלים שהם אדומים או כחולים יותר. נורמליזציה של איזון הלבן לפני העיבוד אמורה לבטל כל צורך לסבך חישוב פשוט למדי עם משיקים שנועדו לתת חשבון לעשרת גורמים כמו כיסוי ענן, שעה ביום, עונה וכו '.
אולי בכל זאת תרצה להתחשב שטחים גדולים של פיקסלים שאינם מתרחשים, כגון שמיים. אני לא באמת יכול לעזור לך הרבה בתחום הזה מבלי לדעת יותר מה בדיוק אתה מנסה להשיג. ירוקות של מסך "תצלום" תהיה ככל הנראה הטובה ביותר על ידי חישוב היחס בין ירוק לאדום וכחול, שיכלול פיקסלים של "שמיים".
באשר להליך שלך, מן הסתם מובן מאליו שאם אתה מצלם את אותן הגדרות מצלמה באותה נורה (אותה עוצמה וטמפרטורת צבע זהה), על פי קו בסיס משותף כמו כרטיס אפור של 18%, ברור שיעביר דרך ארוכה לקראת נורמליזציה של התוצאות שלך. בעזרת הדיגיטל, ניתן לתקן כל אי התאמות באמצעות תוכנת עיבוד RAW וכלי בסיסי לבחירת איזון לבן, לכן הקפד לצלם ב- RAW.
כדי לספק קצת יותר תובנות בחישוב "הירקרקות" של שלך תמונות. יש כמובן דרכים פשוטות, כמו חישוב משקלם של פיקסלים ירוקים לעומת כחול ואדום, או חישוב טוהר ירוק ביחס לטוהר אדום / כחול של פיקסלים RGB. יתכן שיהיה לך יותר מזל אם תמיר למרחב צבעים מתאים יותר, כגון HSV ( גוון / רוויה / ערך , המכונה לפעמים HSB, מחליף ערך בבהירות), ו חישב את הסכום הירוק שלך באמצעות עקומה במרחב HUE. (הערה: HSL הוא סוג אחר של מרחב צבעים, וכנראה שלא יהיה אידיאלי לחשב כמה "ירוק" בתמונה, אז הייתי משתמש ב- HSV. תוכלו ללמוד עוד על חללי צבע אלה כאן.) ירוק טהור (ללא קשר לרוויה או ערך) נופל בזווית גוון של 120 °, ונופל משם כשמתקדמים לכיוון אדום (ב -0 °) או לכיוון כחול (ב -240 °). בין 240 ° ל -360 ° תהיה כמות אפס של ירוק בפיקסל, ללא קשר לרוויה או לערך.
איור 1. עלילת גוון - טוהר ירוק בגוון מעלות sup>
ניתן להתאים את עקומת הניפוח בפועל כדי לענות על הצרכים הספציפיים שלך, אולם עקומה פשוטה עשויה להיות דומה לזו הבאה:
טווח = 240 תקופה = טווח * 2 = 240 * 2 = 480 סולם = 360 / תקופה = 0.75 pureGreen = sin (סולם * 120)
הערך עבור pureGreen
צריך להיות 1.0 . נוסחה למחשוב ירקרקות
יכולה להיעשות כך באופן הבא:
sin (scale * hue)} 0 > גוון > 240
ירוקות = 0} 240 < = גוון < = 360 || גוון == 0
הגוון
הוא מידת הצבע מערך הצבע HSV שלך. רדיוס
הוא המחצית של תקופה
שבה הירוק קיים במידה מסוימת. סולם
מתאים את עקומת החטא לתקופה שלנו, כך ש- sin (scale * hue)
מגיע לשיא (מחזיר 1.0) בדיוק במקום בו תהיה לך ירוק טהור (תוך התעלמות מעוצמת הירוקים) . מכיוון שכמות הירקרקות
תקפה רק במחצית הראשונה של התקופה שלנו, חישוב הירקרקות תקף רק כאשר הגוון גדול מ- 0 ° ופחות מ -240 °, והאפס שלו לכל גוון אחר.
אתה יכול להתאים את הניפוח על ידי התאמת התקופה, הטווח שבו אתה מגדיר ירוק עשוי להיות קיים (כלומר במקום מ 0 ל 240, אתה יכול להגדיר אילוץ כמו 40 > גוון > 200 במקום זאת), והגדר כל דבר שמחוץ לטווח זה שיהיה לו ירקות 0. יש לציין כי זה יהיה מדויק מתמטית, אולם יתכן שהוא לא יהיה מדויק לחלוטין מבחינה תפיסתית. אתה יכול כמובן לשנות את הנוסחה כדי להתאים את נקודת ירוק טהור
יותר לכיוון צהוב (מה שעשוי לייצר תוצאות מדויקות יותר מבחינה תפיסתית), להגדיל את משרעת העקומה למישור ולהרחיב את הלהקה של ירוק טהור ל טווח של גוון, ולא ערך של גוון יחיד וכו '. לדיוק תפיסתי אנושי מוחלט, אלגוריתם מורכב יותר שעובד ב- CIE XYZ ו- CIE L a b * ייתכן שיידרש מקום. (הערה: המורכבות של העבודה במרחב XYZ ובמעבדה עולה באופן דרמטי מעבר למה שתיארתי כאן.)
כדי לחשב את הירוקות של תמונה, אתה יכול לחשב את הירוקות של כל פיקסל, ואז לייצר מְמוּצָע. לאחר מכן תוכל לקחת את האלגוריתם משם ולעשות אותו לצרכים הספציפיים שלך.
תוכל למצוא אלגוריתמים להמרות צבע ב- EasyRGB, כמו זה של RGB ל- HSV:
var_R = (R / 255) // אחוז האחוז אדום_G = (G / 255) // אחוז האחורי הירוק = (B / 255) // אחוז האחוז הכחול_מין = דקה (var_R, var_G, var_B) // מינימום ערך RGBvar_Max = מקסימום (var_R, var_G, var_B) // מקס. ערך RGBdel_Max = var_Max - var_Min // ערך RGB דלתא V = var_Max // ערך (או בהירות) אם (del_Max == 0) // זהו אפור, ללא כרומה ... {H = 0 // גוון (0 - 1.0 פירושו 0 ° - 360 °) S = 0 // רוויה} אחר // נתונים כרומטיים ... {S = del_Max / var_Max del_R = (((var_Max - var_R) / 6) + (del_Max / 2)) / del_Max del_G = (((var_Max - var_G) / 6) + (del_Max / 2)) / del_Max del_B = (((var_Max - var_B) / 6) + (del_Max / 2)) / del_Max אם (var_R == var_Max) H = del_B - del_G אחרת אם (var_G == var_Max) H = (1/3) + del_R - del_B אחרת אם (var_B == var_Max) H = (2/3) + del_G - del_R אם (H < 0) H + = 1 אם (H > 1) H - = 1}