Download presentation
Presentation is loading. Please wait.
1
דחיסת אות ECG בעזרת אלגוריתם Matching Pursuit שי אלפסי אילן בנדור
2
מטרות מטרת הפרוייקט לקרב את האלגוריתם לזמן אמת ובחינת ביצועי האלגוריתם תחת תנאים אלו. הצעות לשיפור האלגוריתם עבור מימוש מתקדם יותר.
3
למה צריך ECG ? מאפשר אינדיקציה טובה על תפקוד השרירים באיזורים שונים בלב. פשוט למדידה.
4
למה לדחוס ECG ? מדידה של 12 ערוצים במקביל, 11 ביטים לדגימה, 1000 דגימות בשניה, 24 שעות : העברת מדידות ECG בזמן אמת.
5
Matching Pursuit יצירת מילון המורכב מאטומי זמן-תדר מהצורה: פונקציית המילון נבנות על ידי פונקצית gabor : בנוסף לאטומי זמן-תדר המילון מורכב גם מפונקציית פורייה ופונקציות Dirac, הנבנות גם הן בעזרת פונקציית gabor עם תחום שונה של ערכים עבור s,p,k.
6
Matching Pursuit (המשך) פירוק אות הECG לסגמנטים. עבור כל סגמנט מבצעים תהליך איטרטיבי של הטלת האות על פונקציות המילון, ומציאת הפונקציה המתאימה ביותר, בצורה הבאה : כאשר הוא השארית המתקבלת בכל איטרציה באופן הבא :
7
Matching Pursuit (המשך) שמירת פרמטרי הפונקציות שנבחרו s,p,k ו inner product. מעבר לסגמנט הבא כאשר מתקיים התנאי: בסוף התהליך לאחר m איטרציות האות ניתן לייצוג בצורה הבאה :
8
Matching Pursuit (המשך) בתהליך הפריסה יוצרים את הפונקציות שנבחרו מהמילון בעזרת הפרמטרים. משחזרים את האות בעזרת הפונקציות והמכפלה הפנימית (inner product).
9
יישום האלגוריתם יישום האלגוריתם התבצע ב C++ על מנת לקרב את התוצאות ל"זמן אמת" ככל שניתן. המימוש מורכב משלושה חלקים עיקריים : דחיסת האות, פריסת האות ובדיקת השגיאה (PRD).
10
תהליך הדחיסה כיוונון עדין (fine_tunning) חיפוש בתת מילון (search_region) תוכנית ראשית דחיסת וקטור (compress_vector) דחיסת סגמנט (compress_segment) קריאת וקטורי ECG (read_signal) יצירת מילון פונקציות (create_dictionary) חישוב וקטור שארית (get_remainder_vec)
11
תוכנית ראשית ( main ) main קלט : נתוני משתמש הכוללים : שם קובץ קלט. שם קובץ פלט. # גודל פונקצית מילון. # דיוק הדחיסה. # מס ' עמודות לדחיסה. # דיוק הכיוונון העדין. # # - נתונים אופציונליים. הפעלת המודולים המבצעים : יצירת מילון. קריאת וקטורי ECG. דחיסת וקטור i. תפקידי המודול : קריאת נתוני המשתמש והשלמת הנתונים האופציונליים, קריאה למודולים המפורטים והמתנה לסיומם.
12
יצירת מילון פונקציות Create_dictionary קלט : מס ' הדגימות בכל פונקציה (N). קלט : מצביע ל -struct הראשון במילון. תפקיד המודול : יצירת המילון שעל פיו יפורקו אותות ה -ECG. המילון מורכב מפונקציות גאבור, פונקציות דיראק ופונקציות פורייה. מס ' הפונקציות במילון נקבע ע " פ : num_of_funcs = 4*N*(log_2(N)-1)+2*N. המילון הינו מערך structs, כאשר כל struct מכיל : פרמטרים נחוצים ליצירת הפונקציה ( s,p,k), וקטור הדגימות של הפונקציה. ונתוני עזר נוספים.
13
קריאת וקטורי ECG Read_signal קלט : שם קובץ המכיל דגימות ECG ערוכות בוקטורים. מספר הוקטורים אותם יש לקרוא. מערך מספרי הוקטורים לקריאה. פלט : מערך וקטורים. תפקיד המודול : קריאת הדגימות במספרי העמודות הנתונים במערך הקלט והכנסתם לוקטרים המוחזרים המערך הוקטורים. כל וקטור במערך המוחזר מכיל דגימות מנקודת מדידה בודדת.
14
דחיסת וקטור Compress_vector קלט : אינדקס הוקטור. וקטור דגימות ECG. פרמטר כיוונון עדין. מצביע למילון הפונקציות. מספר הפונקציות במילון. שם קובץ הפלט. פלט : קובץ המכיל את נתוני הדחיסה של וקטורי הקלט. תפקיד המודול : ביצוע דחיסה של וקטור הקלט ע " י חלוקתו לסגמנטים באורך פונקציות המילון וקריאה מחזורית למודול המבצע את דחיסת הסגמנט. בסיום דחיסת הוקטור מודפסים נתוני הדחיסה לקובץ.
15
דחיסת סגמנט Compress_segment קלט : סגמנט נתוני ECG. מספר הפונקציות המילון. פרמטר כיוונון עדין. פלט : וקטור ערכי S. וקטור ערכי P. וקטור ערכי K. וקטור ערכי המכפלות הפנימיות. תפקיד המודול : המודול מבצע דחיסה של הסגמנט הנתון ע " פ אלגוריתם matching pursuit. פרמטר הכיוונון מאפשר לקבוע לכמה קטעים יחולק המקטע בו נמצאה המ " פ הגדולה ביותר בתהליך הכיוונון העדין. לאחר כל איטרציה נרשמים נתוני הפונקציה שנבחרה ותוצאת המ " פ לוקטורי הפלט. המודול מבצע את חיפוש הפונקציה במילון ע " י הפונקציה search_region. המודול תוכנן כך שיוכל לתמוך בהפעלה מקבילית. שדות הקלט והפלט מצויים במבנה יחיד הנשלח ומוחזר מהמודול.
16
חיפוש בתת מילון Search_region קלט : מצביע למילון הפונקציות. סגמנט נתוני ECG. מספר הפונקציות שיש לסרוק. אינדקס הפונקציה ממנה להתחיל. פלט : ערכי S,P,K של הפונקציה שהניבה ערך מ " פ גבוה ביותר. ערך המ " פ. אינדקס הפונקציה שנבחרה. תפקיד המודול : חיפוש הפונקציה המניבה ערך מ " פ הגבוה ביותר עם סגמנט נתוני ה -ECG שנשלח והחזרת פרטיו. שדות הקלט והפלט מצויים במבנה יחיד הנשלח ומוחזר מהמודול ( במבנה זה מצויים שדות נוספים שאינם רלבנטיים למודול זה ).
17
כיוונון עדין Fine_tunning קלט : אינדקס הפונקציה שהניבה מ " פ מקסימלית עד כה. מצביע למילון הפונקציות. נתון עזר j ( בעזרתו חושבו S,P,K של הפונקציה ). דיוק הכיוונון העדין. פלט : פרמטרי S,P,K בעזרתם נוצרה הפונקציה המכווננת. ערך המ " פ המרבית. וקטור ערכי הפונקציה המכווננת. תפקיד המודול : מציאת פרמטרי S,P,K של פונקציה המניבה ערך מ " פ גבוה יותר מהפונקציה הטובה ביותר במילון ( אם אפשר ) והחזרת פרמטרים אלה, ערך המ " פ החדש ווקטור ערכי הפונקציה החדשה. במקרה של פונקצית גאבור הכיוונון נעשה על S,P ו – K, במקרה של פונקצית דיראק הכיוונון נעשה על P ובמקרה של פונקציות פוריה הכיוונון נעשה על K. ניתן למנוע את הכיוונון העדין ע " י שליחת ערך אפס בתור דיוק הכיוונון העדין למודול דחיסת הסגמנט.
18
חישוב וקטור שארית Get_remainder_vec קלט : וקטור דגימות הפונקציה שהניבה מ " פ מרבית. סגמנט ערכי דגימות ECG. ערך מ " פ מרבית. ערך -) norm(seg – mean(seg) פלט : וקטור שארית. דגל סיום. תפקיד המודול : בצוע חשוב וקטור השארית ובדיקת תנאי סיום : PRECISION הינו משתנה גלובלי המוגדר ע"י התוכנית הראשית.
19
תהליך הפריסה תוכנית ראשית Main() בניית וקטור Build_vector() בניית סגמנט Build_segment() בניית וקטור Build_vector() בניית סגמנט Build_segment() בניית סגמנט Build_segment() בניית סגמנט Build_segment() בניית סגמנט Build_segment() בניית סגמנט Build_segment() בניית וקטור Build_vector() בניית וקטור Build_vector() בניית וקטור Build_vector() בניית וקטור Build_vector()
20
תוכנית ראשית Main() קלט מהמשתמש: שמ/ות קבצ/ים הנוצרו על ידי תהליך הדחיסה. שם קובץ פלט שיכיל את הווקטור/ים המשוחזרים (בררית מחדל decompress_vector ). ערך עבור DECOMP_LEVEL ( בררית מחדל 0). תפקיד : לקרוא את הנתונים מהמשתמש. להפעיל את הפונקצייה decompress_vector עבור כל קובץ קלט. להדפיס את האותות המשוחזרים המתקבלים מפונקציה decompress_vector לקובץ הפלט. פלט ל בניית וקטור : Struct מסוג vector_t המכיל שם קובץ מהמשתמש ווקטור ריק קלט מ בניית וקטור : Struct מסוג vector_t המכיל את הווקטור המשוחזר
21
בניית וקטור Build_vector() תפקיד : לקרוא את הנתונים מקובץ הקלט(המכיל את נתוני הדחיסה). להפעיל את הפונקצייה build_segment עבור כל אחד מהסגמנטים. לאחר סיום בניית כל הסגמנטים להרכיב את האות המשוחזר ולהתזירו לתוכנת הראשית. קלט מהתוכנית הראשית: Struct מסוג vector_t המכיל שם קובץ מהמשתמש ווקטור ריק פלט לתוכנית הראשית : Struct מסוג vector_t המכיל את הווקטור המשוחזר פלט ל בניית סגמנט : Struct מסוג build_segment_s המכיל את נתוני הדחיסה עבור כל סגמנט וסגמנט ריק. קלט מבניית סגמנט: Struct מסוג build_segment_s המכיל את את הסגמנט המשוחזר.
22
בניית סגמנט Build_segment() תפקיד : הפונקצייה משחזרת סגמנט על פי הנתונים שהיא מקבלת כקלט ( struct מסוג build_segment_s ). מאתחלת את הסגמנט ב struct לסגמנט המשוחזר. מחזירה את ה struct לבניית וקטור. קלט מ בניית וקטור : Struct מסוג build_segment_s המכיל את נתוני הדחיסה עבור כל סגמנט וסגמנט ריק. פלט לבניית וקטור: Struct מסוג build_segment_s המכיל את את הסגמנט המשוחזר.
23
בדיקת שגיאה תפקיד: חישוב השגיאה הממוצעת באחוזים באופן הבא : כאשר ORG זהו האות המקורי ו- REC – זהו האות המשוחזר. תוכנית ראשית קלט: קובץ המכיל את האות המקורי. קובץ המכיל את האות המשוחזר. פלט: השגיאה הממוצעת הכללית מודפסת למסך ולקובץ פלט (prd_res.txt). מודפס וקטור המכיל את השגיאה עבור כל דגימה (prd_vector.txt).
24
תוצאות השוואת מקטעי האות לפני דחיסה ואחרי פריסה מילון בן 256 דגימות, שגיאה מירבית 1%,יחס דחיסה 1:10 פילוג שגיאת האנרגיה
25
תוצאות (המשך) מילון בן 256 דגימות, שגיאה מירבית 5%,יחס דחיסה 1:23 פילוג שגיאת האנרגיה
26
תוצאות (המשך) ניתוח התוצאות התבצע על פי שני קבצי ECG מתוך בסיס הנתונים MIT - BIH : 1.קובץ mitdb\109.mat – יקרא קובץ A. 2.קובץ cudb\cu01.mat – יקרא קובץ B.
27
תוצאות (המשך) השפעת מספר הפונקציות במילון יחס דחיסה כתלות במספר הפונקציות זמן הדחיסה כתלות במספר הפונקציות
28
תוצאות (המשך) השפעת שגיאת הדחיסה יחס הדחיסה כתלות בשגיאת הדחיסה זמן הדחיסה כתלות בשגיאת הדחיסה
29
תוצאות (המשך) השפעת גודל המילון על השגיאה הממוצעת שגיאת דחיסה ממוצעת לסגמנט כתלות בגודל סגמנט
30
דיון יחס דחיסה : על סמך התוצאות ניתן לראות שככל שאחוז השגיאה הנדרש עולה ומספר הפונקציות במילון גדל, משתפר יחס הדחיסה. כמו כן יחס הדחיסה המקסימלי שהתקבל הוא 1:37 עבור שגיאה נדרשת של 5% ומילון בעל 17408 פונקציות. MPFOPFan 11.8437.410.46 יחס הדחיסה הטבלה מתייחסת לאלגוריתם תחת התנאים הבאים : PRD 65, RMS < 25 להלן השוואה עם מספר אלגוריתמים נוספים :
31
דיון (המשך) שגיאת דחיסה : על מנת להשוות נתון זה לאלגוריתמים אחרים, נתייחס גם ל RMS ו SNR של אלגוריתמים אלו. SNRRMSPRD שיטת דחיסה 84.711.81.7% Fan 78.815.92.2% First Order Prediction 79.082612.50282.33% Matching Pursuit הנתונים בטבלה מתיחסים עבור יחס דחיסה של 1:4
32
סיכום תוצאות טובות עבור אותות ECG אופיינים. הוספת פונקציות למילון עבור אותות שונים. הוספת אופטימיזציות לחיפוש במילון לצימצום זמן הדחיסה.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.