דחיסת תמונות

‏ • 16 באוגוסט, 2002

יש הרבה פורמטים של דחיסת תמונות, רק פתיחה של פוטושופ או פיינטשופ ונסיון לשמור קובץ תוכיח את זה. הבעיה היא שלא כולם סטנדרד – אפילו png לא; bmp ,jpg ו- gif הם הכי מוכרים.

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

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

jpeg (ג´יי-פג) הוא סטנדרד שנבנה על-ידי ועדה בשם Joint Photographic Experts Group, שהציבו לעצמם כמטרה לבנות פורמט שיוכל להציג תמונות מסביבות טבעיות, מהעולם, ב- 24 ביט צבעים, בדחיסה אופטימלית. גם כאן, הם בנו אלגוריתם שמבוסס על מגבלה קריטית: התמונה תשתמש במגבלה של העין האנושית, שלא מסוגלת להבחין בהרבה מקרים בין צבע כזה לאחר, מאד דומה לו.

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

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

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

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

יש מספיק רפרנסים לנושא, רק תיכנסו ל- google ותכתבו how does jpeg work, תקבלו די והותר.

תגיות: , ,

תגובות בפייסבוק