כיצד עובד דחיסת תמונה: היסודות
מסיבה כלשהי, אתה באמת יכול להתאים 2 מיליון פיקסלים לתוך תמונה ללא שימוש 1.97 מגה בייט של שטח. מצאתי טפט 1080p מתוק (אשר יש בערך 2 מיליון פיקסלים) והורידו אותו. בדיקת התכונות, שמתי לב למשהו מוזר: זה רק לקח 230 KB של שטח על הכונן הקשיח שלי. למה? עבור מישהו שלא ממש מבין את דחיסת התמונה, זה נראה כמו קסם. אבל ברגע שאתה להכיר את הנושא, תוכל להבין איך כמה תמונות גדולות יותר מאחרים למרות כמות פיקסלים הם תופסים על המסך. הזמן הוא קצר, אז בואו לקחת צלילה מהירה לתוך העקרונות הבסיסיים מאחורי דחיסת התמונה.
שיטות, גישות, אלגוריתמים גאלור.
זה תמים לחשוב שיש רק דרך אחת לדחוס תמונה. ישנן שיטות שונות, כל אחת עם גישה ייחודית לבעיה נפוצה, וכל גישה בשימוש באלגוריתמים שונים להגיע למסקנה דומה. כל אלגוריתם מיוצג על ידי פורמט קובץ (PNG, JPG, GIF וכו '). לעת עתה, אנחנו הולכים לדבר על שיטות המשמשים בדרך כלל כדי לדחוס תמונות, אשר יסביר מדוע חלק מהם תופסים כל כך הרבה פחות מקום.
דחיסה ללא אובדן
כאשר אתה חושב על המילה "lossless" בהקשר של דחיסת התמונה, אתה כנראה חושב על שיטה שמנסה הכי קשה שלה לשמור על איכות תוך שמירה על גודל תמונה קטן יחסית. זה קרוב מאוד לאמת. כשיטה, דחיסה ללא הפסד ממזער עיוות ככל האפשר, שמירה על בהירות התמונה. זה עושה זאת על ידי בניית אינדקס של כל פיקסלים וקיבוץ בצבע זהה פיקסלים יחד. זה קצת כמו איך עובד קובץ דחיסה, אלא אנחנו מתמודדים עם יחידות קטנות יותר של נתונים.
DEFLATE הוא אחד האלגוריתמים הנפוצים ביותר עבור סוג זה של עבודה. זה מבוסס על שני אלגוריתמים אחרים (Huffman ו LZ77, אם אתה תולעת ספרים) ויש לו מאוד ניסו- and- אמת של הקבצה נתונים שנמצאו בתוך תמונות. במקום לרוץ רק לאורך הנתונים ולאחסן מספר מופעים של פיקסל באותו צבע ליחידת נתונים אחת (הידועה בשם קידוד באורך ריצה), היא תופסת מחרוזות כפולות שנמצאות בקוד כולו ומציינת "מצביע" עבור כל עותק שנמצא. בכל מקום שבו מחרוזת מסוימת של נתונים (פיקסלים) נמצאת בשימוש תכוף, היא מחליפה את כל הפיקסלים האלה עם סמל משוקלל שמדחס עוד יותר את הכל.
שימו לב איך עם אורך קידוד ו DEFLATE, אף אחד הפיקסלים הם למעשה אכלו או נאלץ לשנות את הצבע. שימוש בשיטה זו גורם לתמונה זהה למקור הגולמי. ההבדל היחיד בין שני טמון כמה שטח הוא נלקח בפועל על הכונן הקשיח שלך!
דחיסה מאובטחת
כפי שהשם מרמז, דחיסה lossy עושה תמונה לאבד חלק מהתוכן שלה. כאשר לוקחים רחוק מדי, זה באמת יכול להפוך את התמונה לבלתי ניתנת לזיהוי. אבל lossy לא אומר שאתה מחסל פיקסלים. יש למעשה שני אלגוריתמים נפוץ לדחוס תמונות בדרך זו: שינוי קידוד ו subrompling chroma . הראשון נפוץ יותר בתמונות והאחרונים בווידיאו.
עם קידוד המרה, צבעי התמונה ממוצעים באמצעות נוסחה מתמטית מיוחדת הנקראת "שינוי קוסינוס דיסקרטית". התמונה סובלת אובדן צבע עשוי להציג חפצים (פיקסלים מוזר בנקודות אקראיות של התמונה) כאשר נעשה שימוש מופרז. האלגוריתם המסוים הזה מפצה על הגמלוניות שלו עם יתרון חזק: אתה יכול להכתיב רק כמה איכות אתה רוצה להישאר עם התמונה. עם דחיסה lossless, הקרוב ביותר שאתה יכול לבוא על מניפולציה איכות הוליסטית היא על ידי הגדרת מספר הצבעים כל תמונה צריכה להיות.
דגימה כרום מקבלת גישה אחרת. במקום ממוצע של בלוקים קטנים של צבע, אשר עשויים גם להשפיע על בהירות של תמונה, זה בזהירות מנסה לשמור על בהירות זהה בכל התחומים. זה טריקים העיניים שלך לא בקלות להבחין כל לטבול באיכות. זה באמת נהדר עבור דחיסה של אנימציות, ולכן הוא משמש יותר בזרמי וידאו. זה לא אומר שגם תמונות אינן משתמשות באלגוריתם זה.
אבל רגע, יש עוד! גוגל גם לקח זריקה על אלגוריתם lossy חדש, המכונה WebP. במקום מידע צבע ממוצעים, הוא חוזה את צבעו של פיקסל על ידי הסתכלות על שברי המקיף אותו. הנתונים שנכתב בפועל לתוך התמונה דחוס וכתוצאה מכך הוא ההבדל בין הצבע החזוי לבין הצבע בפועל. בסופו של דבר, רבים של תחזיות יהיה מדויק, וכתוצאה מכך אפס. ובמקום להדפיס חבורה שלמה של אפסים, זה פשוט דוחס את כולם לסמל אחד המייצג אותם. הדיוק של התמונה משופר והדחיסה מפחיתה את גודל התמונה ב -25% בממוצע בהשוואה לאלגוריתמים אחרים של אובדן, על פי גוגל.
זה הזמן לשאלות ודיון!
אם אתה חדש בעולם של קבצי תמונה, אתה כנראה למצוא לפחות קצת מידע זה מבלבל. אם יש לך שאלה, פרסם אותה בהערות ואנו נעשה כמיטב יכולתנו לענות עליה. אחרת, אתם מוזמנים לדון בזה!