דחיסת תמונה

דחיסת תמונה היא הפעולה של דחיסת נתונים המיושמת על תמונות דיגיטליות, כדי להפחית את עלות האחסון והשידור שלהן. אלגוריתמים יכולים לנצל את מאפייני הראייה האנושית ואת המאפיינים הסטטיסטיים של התמונה כדי לספק תוצאות טובות בהרבה בהשוואה לשיטות דחיסת נתונים כלליות המשמשות לנתונים דיגיטליים אחרים.<ref></ref> תמונות דחוסות נשמרות בקובץ תמונה.
השוואה בין תמונות [[JPEG שנשמרו על ידי Adobe Photoshop ברמות איכות שונות, עם או בלי "שמירה לאינטרנט"]]

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

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

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

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

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

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

== קידוד התמרה ==
קידוד התמרה הוא השיטה הנפוצה ביותר לדחיסת תמונה מאבדת נתונים. מדובר בעיקר בשתי התמרות.
* התמרת קוסינוס בדידה (DCT), הייתה פיתוח מרכזי בדחיסת נתוני תמונה. ההתמרה הוצגה לראשונה ב-1972, על ידי נאסיר אחמד, כטכניקת דחיסה מאבדת נתונים.<ref name="Ahmed"></ref> דחיסת DCT הפכה לבסיס ל-JPEG, שהוצג על ידי קבוצת המומחים לצילום (JPEG) ב-1992.<ref name="t81"></ref> JPEG דוחס תמונות לגדלים קטנים בהרבה, והפך לפורמט התמונה הנפוץ ביותר.<ref></ref> אלגוריתם הדחיסה המאוד יעיל של DCT היה אחראי במידה רבה לתפוצה הרחבה של תמונות דיגיטליות וצילום דיגיטלי,<ref name="Atlantic"></ref> עם כמה מיליארדי תמונות JPEG שנוצרו מדי יום נכון לשנת 2015.<ref></ref> התמרת קוסינוס בדידה (DCT) שייכת למשפחת ההתמרות הקשורות לפורייה.<ref>Nasir Ahmed, T. Natarajan and K. R. Rao, "[http://dasan.sejong.ac.kr/~dihan/dip/p5_DCT.pdf Discrete Cosine Transform]," IEEE Trans. Computers, 90–93, Jan. 1974.</ref> ה-DCT מכונה לפעמים "DCT-II" בהקשר של קבוצת התמרות קוסינוס בדידות (ראו התמרת קוסינוס בדידה). ההתמרה מפרקת את התמונה למרכיבי גל בעלי תדירות, מה שמאפשר לקודד בדיוק נמוך יותר, או לא לקודד כלל, את המרכיבים שאליהם העין רגישה פחות.
* גם התמרת wavelet, החדשה יותר, נמצאת בשימוש נרחב. תקן JPEG 2000 פותח משנת 1997 עד 2000 על ידי ועדת JPEG בראשות Touradj Ebrahimi (לימים נשיא JPEG).<ref></ref> שלא כמו JPEG המתבסס על DCT, פורמט JPEG 2000 מתבסס על אלגוריתמים של התמרת waveket בדידה (DWT). הוא משתמש בהתמרת CDF 9/7 (שפותחה בידי אינגריד דובישי ב-1992) עבור אלגוריתם הדחיסה המאבדת שלו,<ref name="Unser"></ref> ובהתמרת wavelet של Le Gall-Tabatabai (LGT) 5/3<ref></ref><ref></ref> (פותח על ידי דידייה Le Gall and Ali J. Tabatabai בשנת 1988)<ref></ref> עבור הדחיסה המשמרת שלו.<ref name="Unser" /> טכנולוגיית JPEG 2000, כולל ההרחבה Motion JPEG 2000, נבחרה כתקן קידוד הווידאו לקולנוע דיגיטלי בשנת 2004.<ref></ref>

בשני המקרים, JPEG ו-JPEG2000, קידוד תמונה מתבצע בחמישה שלבים.

# התמרת צבעים. פיקסל של תמונה צבעונית מורכב משלושה רכיבי צבע: אדום, ירוק וכחול. התמרת צבעים ממירה את שלושת הצבעים ברכיב של בהירות ושני רכיבי צבעיות (צִבְעִיּוּת, באנגלית: chroma). ההמרה מתבצעת מפני שהעין האנושית רגישה לרכיב הבהירות הרבה יותר מאשר לרכיבי הצבעיות, כך שפגיעה באיכות הצבעיות פוגעת באיכות התמונה הרבה פחות מאשר פגיעה באיכות הבהירות. אפשר לכן לקודד רק חלק ממידע הצבעיות, בפרט על ידי דגימת הצבעיות בהפרדה נמוכה יותר. ב-JPEG קיימת אופציה לשמור רק רבע ממידע הצבעיות, לעומת מידע הבהירות. אופציה זו, לבדה, מספקת יחס דחיסה של 2:1 עוד לפני שלבי הדחיסה הבאים. התמרת הצבעים השכיחה היא YCbCr.
# חלוקה לבלוקים. JPEG מחלק את התמונה לבלוקים של 8x8 פיקסלים. ב-JPEG2000 אפשר לבחור את גודל הבלוק והוא יכול להיות מלבני, ואף התמונה כולה יכולה להיות בלוק.
# התמרה גלית. JPEG משתמש ב-התמרת קוסינוס בדידה (DCT) ו-JPEG2000 משתמש בהתמרת wavelet.
# קוונטיזציה. לאחר ההתמרה, המקדמים שייצרה ההתמרה עוברים קוונטיזציה כדי להפחית את מספר הביטים הנחוץ לייצוגם, וזאת על חשבון האיכות. זהו השלב העיקרי שבו נוצרים אבדן נתונים, ירידה באיכות וחסכון בגודל. כאמור לעיל, הקוונטיזציה מתבססת על מאפייני הראייה האנושית. הפלט של שלב הקוונטיזציה הוא רצף של מספרים שלמים.
# קידוד אנטרופיה. זהו השלב הסופי והוא משתמש בדחיסה משמרת. ב-JPEG, הפלט של הקוונטיזציה מקודד כל ואילו ב-JPEG2000, לא בהכרח.

שיטות נוספות לדחיסה מאבדת נתונים:
* קוונטיזציה של צבע מצמצמת את מרחב הצבעים לכמה צבעים "מייצגים" בתמונה. הצבעים שנבחרו מפורטים בלוח הצבעים ברשומה הראשית של התמונה הדחוסה. כל פיקסל מצביע לאינדקס של צבע בלוח הצבעים. ניתן לשלב שיטה זו עם גוונון כדי למנוע מעברים חדים.
** לוח צבעים לתמונות שלמות, לרוב 256 צבעים, נמצא בשימוש בפורמטים של קובצי GIF ו-PNG.
** לוח צבעים לבלוק, לרוב 2 או 4 צבעים לכל בלוק של 4x4 פיקסלים, נמצא בשימוש ב-BTC, CCC, S2TC ו-S3TC.
* תת-דגימת צבעיות מיישמת את התמרת הצבעים המשמשת כשלב הראשון בקידוד התמרה לדחיסת תמונה מאבדת, כמוסבר לעיל.
* דחיסה פרקטלית מסתמכת על כך שלעיתים קרובות חלק אחד בתמונה דומה לחלקים אחרים באותה התמונה.

שיטות לדחיסה משמרת נתונים:
* קידוד אורך חזרה - משמש בשיטת ברירת המחדל ב-PCX וכאחת האפשריות ב-BMP, TGA, TIFF
* קידוד על ידי חזוי - משמש ב-DPCM
* קידוד אנטרופיה - שתי טכניקות קידוד האנטרופיה הנפוצות ביותר הן קידוד אריתמטי וקוד האפמן
* אלגוריתמים של מילון מותאם כגון LZW - משמשים ב-GIF ו-TIFF
* DEFLATE - משמש ב-PNG, MNG ו-TIFF
* קודי שרשרת

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

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

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

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

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

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

== קישורים חיצוניים ==

== הערות שוליים ==

קטגוריה:דחיסת נתונים
קטגוריה:גרפיקה ממוחשבת