בתשובה למשה דורון, 16/05/03 15:30
מילא 24bit, אבל 96KHz? 146800
טוב, איך מכווצים תמונה אני יודע, ואני גם יכול לראות איך זה תקף לקולות. יכול להיות שאני חוזר על מה שאתה כבר יודע, אבל נתחיל מהתחלה:

נניח שיש לנו תמונת רמות אפור עם 8 ביט - בייט אחד, לפיקסל (ההכללה לצבע קלה - פשוט 3 תמונות של רמות אדום, כחול וירוק). נניח שהיא בגודל של 64 על 64 פיקסל. כדי לשמור אותה ישירות (נגיד בBMP) צריך 64 בריבוע בייט. איך נכווץ? נשמור רק את השורה הראשונה ואת הטור הראשון בתמונה במלואם (64*2 בייט), ונמצא נוסחת שיערוך שאומרת לנו מה הערך בפיקסל הנוכחי כפונקציה של הפיקסל משמאלו, מעליו, ושני הפיקסלים באלכסונים העליונים. נתחיל לעבוד משמאל לימין ומלמעלה למטה, כשאנו משערכים כל פעם את הערך בפיקסל הנוכחי.
עכשיו, ברור שאין נוסחת קסם שתתן לנו את התמונה - אז נשמור עבור כל פיקסל את ה*שגיאה* מהנוסחה, וכך נקבל את הערך האמיתי באותו פיקסל. אם הנוסחה טובה (וניתן תמיד למצוא את המיטבית, זו בעייה פתורה) אז השגיאה תתפוס הרבה פחות מ8 ביט, יותר לכיוון ה5, ונחסוך המון מקום.

ככה, על רגל אחת, עובד כיווץ.

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

מה זה DC computation? זה טריק כדי להוסיף עוד כיווץ על כיווץ. מסתבר (ממה שקישרת, ואם הבנתי נכון) שאם נפרק את התמונה למרכיב הDC שלה לבד, ולתדרים גבוהים בנפרד, אז את מרכיב הDC קל לשחזר ע"ס רק טור אחד עם מעט שגיאה, ואת הAC משחזרים בנוסחה נפרדת, בשיטת הזיג-זג כפי שהוצגה שם.

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

איך עושים אותו דבר לקול? אני רק משער כאן, אבל אני מניח שהכוונה היא לשמור את הDC (הממוצע של האות, במקרה זה) בנפרד, ולשחזר את האות-פחות-התוחלת, בשיטה שהצגתי קודם.

חזרה לעמוד הראשי המאמר המלא

מערכת האייל הקורא אינה אחראית לתוכן תגובות שנכתבו בידי קוראים