ארכיון חודשי: ספטמבר 2010

אלגוריתמים גרפיים

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

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

מסתבר שהאלגוריתם להעביר צבע ל Gray Scale הוא מאוד מאוד פשוט, אבל אם לא עושים את זה נכון, זה תהליך מאוד איטי סתם. למה אתם בטח שואלים, ובכן האלגוריתם אומר שכל "משתתף" בצבע צריך להחסיר ב127 מהערך שלו, כלומר אם יש לנו 3 משתתפי צבע בשם RGB או Red, Green, Blue אז כל אחד מהם יוחסר ב127. כלומר R פחות 127, G פחות 127 ו B פחות 127.

העניין הוא שאם נעבור נקודה נקודה, והתמונה גדולה מאוד, זה יקח נצח, ולכן יש כל מיני שיטות להתמודד עם זה, כמו מצביע לצבע (גוון) מסויים, וכך במקום לעבור כל נקודה, עוברים כל צבע בתמונה, ואם נגיד יש לי "רק" 80 צבעים בתמונה, אבל היא בגודל 1024×1024, אפשר להבין שמעבר על 80 תאים, מעט מהיר יותר מאשר לעבור על 1,048,576 תאים.

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

עוד אלגוריתם מאוד מעניין, הוא ליצור שקיפות. בעולם המחשבים אין באמת שקיפות, אלא שכפול הרקע של התמונה שיתן הרגשה כאילו יש שקיפות. איך זה נעשה ? ובכן צריך תמונה אחת כפול 2. בתמונה אחת נגרום לה להיות משהו שנקרא מסיכה (mask), שזה אומר שכל מקום בו יש מידע שאנחנו רוצים להציג הוא יהיה בצבע שחור, וכל מקום בו אנחנו רוצים "שקיפות" נשים אותו בצבע לבן (אני משתמש בזיכרון שלי ויכול להיות שהחלפתי את הסדר). על זה נלביש את התמונה המקורית באמצעות פעולת XOR, וככה נציג רק את המידע שנרצה.

יש עוד הרבה מאוד אלגוריתמים שונים ומעניינים שניתן לבצע על צבעים ותמונות. מקום טוב להתחיל בו (שאני לפחות התחלתי בו) הוא האתר של Efg.

אם יש לכם עוד אלגוריתמים מעניינים (בדגש על תיאור יותר מאשר קוד), זה המקום המתאים לפרסם אותם 🙂