|
||||
|
||||
אני חושב שהבעייה היא שלי. הייתי צריך לברר למה אתה מתכוון בנקודה צפה מול לא. כשאני אומר "נקודה צפה" אני מתכוון שעם מספר ביטים (בדרך כלל 32) אפשר לייצג ערך לא חסום (כמעט) ע"ח הדיוק. למה זה אמור לעזור לך יותר מהערך הרגיל של הביטים הללו? מספר הקומבינציות של אחדים ואפסים נשאר קבוע. בעייה של דגימה, בניסוח מתמטי, היא בעייה של העתקה מקטע ממשי, נאמר [0,1], למספר סופי של רמות, נאמר 256. בבעייה כזו, אתה צריך להחליט שני דברים - איפה מחליטים לעבור רמה, ומה מייצגת כל רמה כזו. לדוגמא, עבור דגימת תמונת רמות אפור לביט בודד, בצורה נאיבית, היית יכול לבחור שכל הערכים עד חצי עוברים לאפס, וכל הערכים מחצי לאחד עוברים לאחד. בנוסף היית יכול לומר שאפס פרושו רמת אפור של 0 (שחור), ו1 פרושו הצגה של 1 (לבן), נגיד. אבל אז תקבל תמונה מאד חדה, ולא נעימה לעין, אז אולי עדיף להחליט ש0 פרושו 1/4 (אפור כהה) ו1 פרושו 3/4 (אפור בהיר)? אולי יש לך מעט מאד נקודות עם רמת אפור גבוהה מ1/2, ולכן עדיף להחליט שכל מה שגבוה מ0.4 הוא דווקא 1, כדי לקבל תמונה ברורה יותר? והמשחק הזה הוא המשחק שמשחק הדוגם שלך. אם יש לך הרבה נקודות בערכים נמוכים, פשוט תקדיש להם הרבה רמות החלטה, ולא תהיה בעייה של רזולוציה. אבל, כל זה נכון רק אם אתה יודע מראש איך מפולג האות (איפה האקשן), ולכן עדיף לך לשמור אותו קודם ב24 ביט, בלי לשחק משחקים, ולקוות שאתה לא מאבד הרבה, ואז למצוא את הייצוג הטוב ביותר. |
|
||||
|
||||
אנחנו מסכימים בדבר ההגדרה של נקודה צפה- X ביטים מגדירים את המעריך והשאר, 32 - X, מתאר את המנטיסה. היופי בנקודה צפה זה שהדיוק היחסי נשאר לכל אורך הסקלה- בשיטת הנקודה הקבועה , אם עובדים ברזולוציה של 24 ביט ליד הקצה התחתון, ומודדים ערך של 5 , כל שגיאת עיגול תקפיץ את האות ב 20% ( 6 ל5 ). לעומת זאת, בנקודה צפה, הדיוק היחסי הוא כגודל המנטיסה לכל אורך הסקלה. נכון הדבר שבנקודה צפה אינך יכול להבדיל בין מיליון ומליון ואחד, אבל למי איכפת? לפחות אפשר להבחין בין אחד לשניים. אני עדיין חושד שהסיבה היא יותר פרוזאית - החומרה לעיבוד אות עובד ב אינטיגר. |
|
||||
|
||||
אז לא התנסחתי בבהירות מספקת. נעבוד שנייה ב8 ביט. החלטנו כבר שFF זה לבן, ו00 שחור.אף אחד לא אמר שההבדל שתראה בין 00 ו01 זהה להבדל בין 01 ו02 - ייתכן ש01 מייצג שחור-פחות-קצת, אבל 02 מייצג שחור-פחות-שלוש-קצת. פשוט כי אין המון "אקשן" ליד השחור, אז החלטנו לוותר על רזולוציה. ייתכן שליד הלבן כבר יש לנו קפיצות של קצת חצי, או קצת רבע, פשוט כי שם היה הרבה מידע. כך שאם יש לך 32 ביט, יש לך אפשרות לייצג 32^2 רמות, בלי קשר למשמעות שאתה מייחס להן - גם כך וגם כך אתה צריך לענות על השאלה מה כל קומבינציה אומרת. |
|
||||
|
||||
הבנתי שאתה אתה אומר שבפועל נקודה צפה(כמו שאני הגדרתי) זה מקרה פרטי של ההחלטת המיפוי. נזכרתי שבאמת יש שני תקנים, אירופאי ואמריקאי, למיפוי אמפליטודה של דיבור ל 8 ביט באופן כמעט לוגריתמי( חוק מו וחוק A ?). |
|
||||
|
||||
רגע, אם אני רוצה להכפיל חלק מהדגימות פי 2, אני צריך לקחת כל דגימה, לבדוק במפה מה זה אומר 1e3222 (נגיד שזה אומר 9), להכפיל פי 2 (קיבלנו 18) ואז לבדוק איזה ערך במיפוי שווה ל- 18 (אה, 200318). ואת זה אני עושה לכל דגימה בנפרד. לעומת זאת בנקודה צפה הכל נשאר ליניארי (מקסימום צריך להגדיל/להקטין את האקספוננט). הניחוש שלי ללמה משתמשים בנקודה קבועה הוא פשוט כי לא צריך יותר מכך. שבבי DSP של נקודה צפה יקרים יותר ואיטיים יותר מאחיהם בני הנקודה הקבועה. אם אפילו לא התעורר עדיין הצורך ב- 32 ביט, כנראה שהעסק עובד מספיק טוב גם כך. |
|
||||
|
||||
הממירים (A2D,D2A) עובדים עם שלמים. קשה לייצג פורמט נקודה צפה באמצעות חומרה, בייטים מתרגמים ישירות לאות חשמלי ואילו מידע FP יומר קודם לערך שהממיר יוכל לעבוד איתו. FP יועיל בדיוק פנימי של המעבד, בהקטנת שגיאות מצטברות וכו' |
|
||||
|
||||
החלק הראשון נכון (אבל למה שתרצה לעשות כזו פעולה מוזרה?), אבל מה פתאום שבנקודה צפה הכל ישאר לינארי? אתה עדיין צריך לתת פירוש לכל קומבינציה של ביטים, או שאתה נשאר עם מיפוי בקפיצה אחידה (שהוא לא כל כך רע, ומשתמשים בו במספר פורמטים. בעיקר אלה שתופסים מעט מקום). |
|
||||
|
||||
למה שארצה? נניח שאני רוצה להגביר חלק מהאות? נשמעת לי פעולה די נפוצה. בנקודה צפה אתה מקבל את כל היתרונות שבמיפוי לוגריתמי (ויותר!). המחיר הוא מרחב (עוד ביטים לייצוג האקספוננט בהנחה שהערך נשאר 24 ביט) וזמן (פעולות נקודה-צפה איטיות יותר). אמנם אתה לא מקבל בחינם כל מיפוי מוזר שתעלה על דעתך אך בהנחה שלרוב עובדים עם מיפוי סביר (כלומר חלק), אתה תהיה בסדר. אמנם אתה נשאר עם מיפוי בקפיצה אחידה, אבל הקפיצה היא הרבה יותר קטנה (ביחס של האקספוננט הקטן ביותר שאתה יכול לייצג). |
|
||||
|
||||
כשרוצים להגביר חלקים מהאות רוצים להגביר חלק מה*תדרים* שלו, לא חלק מהתמונה. מה שאתה הצעת זו פשוט הבהרה של חלק מהתמונה, בלי להשיג כל שיפור בקונטרסט, פעולה שלא תעזור לאף אחד. אבל שוין, זה סתם באופן צדדי. באשר לפסקה השנייה שלך, אתה פשוט משווה לא נכון. לא משווים בין הצגה של 24 ביט והצגה של 24 ביט + 8 ביט לאקספוננט, אלא בין זה לבין הצגה של 32 ביט, לעומתה אין שום שיפור. ברור שאם תוסיף עוד מקום לייצוג תוכל להשיג שיפור, על כך אין שום ויכוח. |
|
||||
|
||||
זה פשוט לא נכון. לפעמים אתה רוצה לבצע פעולות בזמן ולפעמים בתדר (אתה כל הזמן מדבר על תמונות, מה עושה מסנן הגברת קונטרסט בתוכנת הצפיה החביבה עליך?). גם פעולת תדר תעשה לעתים על ידי קונבולוציה בזמן הדורשת כפלים. בקשר לפסקה השניה שלך, מותר לי להשוות בין מה שאני רוצה. שים לב שהמסקנה שלי היא שכרגע בשיקול מעשי 24 ביט בנקודה קבועה עדיפים על 24+8 בנקודה צפה בגלל זמן העיבוד ומחיר החומרה. בנוסף, ל- 32 ביט בנקודה קבועה יש חסרונות גם ביחס ל- 24+8 (מה קורה כשדגימה אחת היא 0x10000000.0 והשניה היא 0x0.00000001?). על הפסקה האחרונה שלך באמת אין ויכוח. |
|
||||
|
||||
כשאתה מגביר קונטרסט אתה עושה שיוויון היסטוגרמה - אוסף את כל הפיקסלים לגרף, ומותח אותו על כל הציר. זה דומה לקוונטיזציה מחדש. בנוסף, להזכירך, בתמונות אתה לא עושה פעולות בזמן, רק במרחב. עכשיו, אתה באמת יכול להשוות בין מה שבא לך, השאלה היא אם אתה עונה על השאלה, ומה מקבלים מההשוואה שלך. מה שהקורא הנבוך שאל היה בקשר לטיב המתקבל, ובמובלע על שימוש בנקודה צפה וקבועה באותו מספר ביטים. מבחינת טיב, עדיף נקודה צפה של 32 ביט על קבועה של 24, למרות שאתה כמובן צודק בקשר לשיקולי המחיר והזמן. מה שלא נכון הוא שיש לך חסרונות לנקודה קבועה מול צפה במפר ביטים שווה - אתה כל הזמן מניח קוונטיזציה במרווח קבוע שלא לצורך. אם יש לך שתי נקודות כפי שהצגת, כנראה שאחת תצא שחורה, והשנייה לבנה, תלוי במפה שלך ובאלגוריתם הקווינטוט. |
חזרה לעמוד הראשי | המאמר המלא |
מערכת האייל הקורא אינה אחראית לתוכן תגובות שנכתבו בידי קוראים | |
RSS מאמרים | כתבו למערכת | אודות האתר | טרם התעדכנת | ארכיון | חיפוש | עזרה | תנאי שימוש | © כל הזכויות שמורות |