דחיסת אות ecg בעזרת אלגוריתם matching pursuit
DESCRIPTION
דחיסת אות ECG בעזרת אלגוריתם Matching Pursuit. שי אלפסי אילן בנדור. מטרות. מטרת הפרוייקט לקרב את האלגוריתם לזמן אמת ובחינת ביצועי האלגוריתם תחת תנאים אלו. הצעות לשיפור האלגוריתם עבור מימוש מתקדם יותר. למה צריך ECG ?. מאפשר אינדיקציה טובה על תפקוד השרירים באיזורים שונים בלב. - PowerPoint PPT PresentationTRANSCRIPT
בעזרת אלגוריתםECGדחיסת אות Matching Pursuit
שי אלפסי
אילן בנדור
מטרות
מטרת הפרוייקט לקרב את האלגוריתם לזמן •אמת ובחינת ביצועי האלגוריתם תחת תנאים
אלו.
הצעות לשיפור האלגוריתם עבור מימוש מתקדם •יותר.
?ECGלמה צריך
מאפשר אינדיקציה טובה על תפקוד השרירים •באיזורים שונים בלב.
פשוט למדידה.•
?ECGלמה לדחוס
ביטים 11 ערוצים במקביל , 12מדידה של • שעות :24 דגימות בשניה , 1000לדגימה ,
בזמן אמת.ECGהעברת מדידות •
Matching Pursuit
יצירת מילון המורכב מאטומי זמן-תדר מהצורה:•
xRggxx II1
00, :gaborפונקציית המילון נבנות על ידי פונקצית •
בנוסף לאטומי זמן-תדר המילון מורכב גם • , הנבנות גם Diracמפונקציית פורייה ופונקציות
עם תחום שונה של gaborהן בעזרת פונקציית .s,p,kערכים עבור
Matching Pursuit)המשך( לסגמנטים. ECGפירוק אות ה•
עבור כל סגמנט מבצעים תהליך איטרטיבי של הטלת האות על •פונקציות המילון , ומציאת הפונקציה המתאימה ביותר , בצורה
הבאה :
כאשר הוא השארית המתקבלת בכל איטרציה באופן הבא :•
Matching Pursuit)המשך(
.inner product ו s,p,kשמירת פרמטרי הפונקציות שנבחרו •
מעבר לסגמנט הבא כאשר מתקיים התנאי:•
איטרציות האות ניתן לייצוג בצורה הבאה : m בסוף התהליך לאחר •
Matching Pursuit)המשך(
בתהליך הפריסה יוצרים את הפונקציות שנבחרו •מהמילון בעזרת הפרמטרים.
משחזרים את האות בעזרת הפונקציות • .(inner product)והמכפלה הפנימית
יישום האלגוריתם
על מנת לקרב ++Cיישום האלגוריתם התבצע ב •את התוצאות ל"זמן אמת" ככל שניתן.
המימוש מורכב משלושה חלקים עיקריים :•
דחיסת האות , פריסת האות ובדיקת השגיאה (PRD).
תהליך הדחיסה
כיוונון עדין(fine_tunning)
חיפוש בתת מילון(search_region)
תוכנית ראשית
דחיסת וקטור(compress_vector)
דחיסת סגמנט(compress_segment)
ECGקריאת וקטורי (read_signal)
יצירת מילון פונקציות
(create_dictionary)
חישוב וקטור שארית
(get_remainder_vec)
(mainתוכנית ראשית )
main
קלט :
נתוני משתמש הכוללים :
שם קובץ קלט.•
שם קובץ פלט. #•
גודל פונקצית מילון. #•
דיוק הדחיסה. #•
מס' עמודות לדחיסה. #•
דיוק הכיוונון העדין. #•
# - נתונים אופציונליים.
הפעלת המודולים המבצעים:
יצירת מילון.•
.ECG קריאת וקטורי •
.i דחיסת וקטור •
קריאת נתוני המשתמש והשלמת הנתונים האופציונליים, קריאה למודולים המפורטים והמתנה תפקידי המודול:לסיומם.
יצירת מילון פונקציות
Create_dictionary
קלט :
מס' הדגימות בכל פונקציה • (N.)
קלט :
הראשון struct מצביע ל-•במילון.
. ECG יצירת המילון שעל פיו יפורקו אותות ה-תפקיד המודול : •
המילון מורכב מפונקציות גאבור , פונקציות דיראק ופונקציות פורייה.•
.num_of_funcs = 4*N*)log_2)N(-1(+2*N מס' הפונקציות במילון נקבע ע"פ : •
( , וקטור הדגימות של s,p,k מכיל : פרמטרים נחוצים ליצירת הפונקציה ) struct , כאשר כל structs המילון הינו מערך •הפונקציה. ונתוני עזר נוספים.
ECGקריאת וקטורי
Read_signal
קלט :
שם קובץ המכיל דגימות •ECG.ערוכות בוקטורים
מספר הוקטורים אותם יש •לקרוא.
מערך מספרי הוקטורים •לקריאה.
פלט:
מערך וקטורים.•
קריאת הדגימות במספרי העמודות הנתונים במערך הקלט והכנסתם לוקטרים המוחזרים המערך תפקיד המודול: •הוקטורים.
כל וקטור במערך המוחזר מכיל דגימות מנקודת מדידה בודדת.•
דחיסת וקטור
Compress_vector
קלט :
אינדקס הוקטור.•
.ECG וקטור דגימות •
פרמטר כיוונון עדין.•
מצביע למילון הפונקציות.•
מספר הפונקציות במילון.•
שם קובץ הפלט.•
פלט :
קובץ המכיל את נתוני •הדחיסה של וקטורי
הקלט.
ביצוע דחיסה של וקטור הקלט ע"י חלוקתו לסגמנטים באורך פונקציות המילון וקריאה מחזורית תפקיד המודול :למודול המבצע את דחיסת הסגמנט. בסיום דחיסת הוקטור מודפסים נתוני הדחיסה לקובץ.
דחיסת סגמנט
Compress_segmentקלט :
.ECG סגמנט נתוני •
מספר הפונקציות המילון.•
פרמטר כיוונון עדין.•
פלט :
.S וקטור ערכי •
.P וקטור ערכי •
.K וקטור ערכי •
וקטור ערכי המכפלות •הפנימיות. . matching pursuit המודול מבצע דחיסה של הסגמנט הנתון ע"פ אלגוריתם תפקיד המודול : •
פרמטר הכיוונון מאפשר לקבוע לכמה קטעים יחולק המקטע בו נמצאה המ"פ הגדולה ביותר בתהליך הכיוונון העדין. •
לאחר כל איטרציה נרשמים נתוני הפונקציה שנבחרה ותוצאת המ"פ לוקטורי הפלט. •
. search_region המודול מבצע את חיפוש הפונקציה במילון ע"י הפונקציה •
המודול תוכנן כך שיוכל לתמוך בהפעלה מקבילית.•
שדות הקלט והפלט מצויים במבנה יחיד הנשלח ומוחזר מהמודול.•
חיפוש בתת מילון
Search_region
קלט :
מצביע למילון הפונקציות.•
.ECG סגמנט נתוני •
מספר הפונקציות שיש לסרוק.•
אינדקס הפונקציה ממנה •להתחיל.
פלט :
של הפונקציה S,P,K ערכי •שהניבה ערך מ"פ גבוה ביותר.
ערך המ"פ.•
אינדקס הפונקציה שנבחרה.•
שנשלח והחזרת פרטיו.ECG חיפוש הפונקציה המניבה ערך מ"פ הגבוה ביותר עם סגמנט נתוני ה- תפקיד המודול :•
שדות הקלט והפלט מצויים במבנה יחיד הנשלח ומוחזר מהמודול )במבנה זה מצויים שדות נוספים שאינם רלבנטיים •למודול זה(.
כיוונון עדין
Fine_tunning
קלט :
אינדקס הפונקציה שהניבה מ"פ •מקסימלית עד כה.
מצביע למילון הפונקציות.•
של S,P,K )בעזרתו חושבו j נתון עזר •הפונקציה(.
דיוק הכיוונון העדין. •
פלט :
בעזרתם S,P,K פרמטרי •נוצרה הפונקציה המכווננת.
ערך המ"פ המרבית.•
וקטור ערכי הפונקציה •המכווננת.
של פונקציה המניבה ערך מ"פ גבוה יותר מהפונקציה הטובה ביותר במילון )אם S,P,K מציאת פרמטרי תפקיד המודול : •אפשר( והחזרת פרמטרים אלה, ערך המ"פ החדש ווקטור ערכי הפונקציה החדשה.
ובמקרה של P , במקרה של פונקצית דיראק הכיוונון נעשה על K ו – S,P במקרה של פונקצית גאבור הכיוונון נעשה על •.Kפונקציות פוריה הכיוונון נעשה על
ניתן למנוע את הכיוונון העדין ע"י שליחת ערך אפס בתור דיוק הכיוונון העדין למודול דחיסת הסגמנט.•
חישוב וקטור שארית
Get_remainder_vec
קלט :
וקטור דגימות הפונקציה •
שהניבה מ"פ מרבית.
.ECG סגמנט ערכי דגימות •
ערך מ"פ מרבית.•
)norm)seg – mean)seg (ערך -•
פלט :
וקטור שארית.•
דגל סיום. •
: בצוע חשוב וקטור השארית ובדיקת תנאי סיום תפקיד המודול :•
• PRECISION.הינו משתנה גלובלי המוגדר ע"י התוכנית הראשית
תהליך הפריסה
תוכנית ראשית
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)(
תוכנית ראשית
תוכנית ראשית
Main)( קלט מהמשתמש:שמ/ות קבצ/ים הנוצרו על ידי תהליך הדחיסה.•
שם קובץ פלט שיכיל את הווקטור/ים המשוחזרים • ( . decompress_vector )בררית מחדל
) בררית מחדל DECOMP_LEVEL ערך עבור •0. )
:תפקיד לקרוא את הנתונים מהמשתמש.•
עבור כל קובץ קלט. decompress_vector להפעיל את הפונקצייה •
לקובץ decompress_vectorלהדפיס את האותות המשוחזרים המתקבלים מפונקציה •הפלט.
:בניית וקטורפלט לStruct מסוג vector_t המכיל שם קובץ מהמשתמש
ווקטור ריק
: בניית וקטורקלט מStruct מסוג vector_t המכיל את הווקטור
המשוחזר
בניית וקטור
בניית וקטור
Build_vector)(
:תפקיד לקרוא את הנתונים מקובץ הקלט)המכיל את נתוני הדחיסה( .•
עבור כל אחד מהסגמנטים.build_segment להפעיל את הפונקצייה •
לאחר סיום בניית כל הסגמנטים להרכיב את האות המשוחזר ולהתזירו לתוכנת •הראשית.
קלט מהתוכנית הראשית:Struct מסוג vector_t המכיל שם קובץ מהמשתמש ווקטור
ריק
פלט לתוכנית הראשית : Struct מסוג vector_t המכיל את הווקטור
המשוחזר
בניית סגמנטפלט ל :Struct מסוג build_segment_s המכיל את
נתוני הדחיסה עבור כל סגמנט וסגמנט ריק.
:קלט מבניית סגמנטStruct מסוג build_segment_s המכיל
את את הסגמנט המשוחזר.
בניית סגמנט
בניית סגמנט
Build_segment)(
:תפקיד מסוג struct ) הפונקצייה משחזרת סגמנט על פי הנתונים שהיא מקבלת כקלט•
build_segment_s.) לסגמנט המשוחזר .structמאתחלת את הסגמנט ב • לבניית וקטור.struct מחזירה את ה •
בניית וקטור:קלט מStruct מסוג build_segment_s המכיל את נתוני הדחיסה עבור כל סגמנט וסגמנט
ריק.
פלט לבניית וקטור:Struct מסוג build_segment_s המכיל את את הסגמנט
המשוחזר.
בדיקת שגיאה
חישוב השגיאה הממוצעת באחוזים באופן הבאתפקיד::
ו- ORGכאשר המקורי האות זהו REC– האות זהו המשוחזר.
תוכנית ראשית
קלט: קובץ המכיל את האות המקורי .•
קובץ המכיל את האות המשוחזר. •
פלט: השגיאה הממוצעת הכללית מודפסת למסך •
( .prd_res.txtולקובץ פלט )
מודפס וקטור המכיל את השגיאה עבור כל • . (prd_vector.txt)דגימה
תוצאות
השוואת מקטעי האות לפני דחיסה ואחרי פריסה•
2000 2050 2100 2150 2200 2250 2300 2350 2400 2450 2500800
850
900
950
1000
1050
1100
1150
Original signal (blue)
Reconstructed signal (green)
1:10,יחס דחיסה 1% דגימות, שגיאה מירבית 256מילון בן
2000 2050 2100 2150 2200 2250 2300 2350 2400 2450 25000
0.02
0.04
0.06
0.08
0.1
0.12
0.14
0.16
0.18
פילוג שגיאת האנרגיה
תוצאות )המשך(
1:23,יחס דחיסה 5% דגימות, שגיאה מירבית 256מילון בן
פילוג שגיאת האנרגיה
2000 2050 2100 2150 2200 2250 2300 2350 2400 2450 2500750
800
850
900
950
1000
1050
1100
1150
Original signal (blue)
Reconstructed signal (green)
2000 2050 2100 2150 2200 2250 2300 2350 2400 2450 25000
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
תוצאות )המשך(
ניתוח התוצאות התבצע על פי שני קבצי •ECG מתוך בסיס הנתונים MIT - BIH:
. A– יקרא קובץ mitdb\109.matקובץ 1.
.B – יקרא קובץ cudb\cu01.matקובץ 2.
תוצאות )המשך(
השפעת מספר הפונקציות •במילון
05
10152025303540
576 1408 3328 7680 17408
ת ו קצי פונ מספר
הס
חיד
ס ח
י
A בץ קו B בץ קו
יחס דחיסה כתלות במספר הפונקציות
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
576 1408 3328 7680 17408
ת ו קצי פונ מספר
תניו
ש
מית
ריג
לור
צי
A בץ קו B בץ קו
זמן הדחיסה כתלות במספר הפונקציות
תוצאות )המשך(
השפעת שגיאת הדחיסה•
יחס הדחיסה כתלות בשגיאת הדחיסה
זמן הדחיסה כתלות בשגיאת הדחיסה
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
1 2 3 4 5 6 7 8 9 10
)%( סה הדחי את שגי
תניו
ש
מית
ריג
לור
צי
A בץ קו B בץ קו
0
5
10
15
20
25
30
35
1 2 3 4 5 6 7 8 9 10
)%( סה דחי את שגי
הס
חיד
ס ח
י
A בץ קו B בץ קו
תוצאות )המשך(
השפעת גודל המילון על השגיאה הממוצעת •
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
32 64 128 256 512
ת( מו )דגי ט סגמנ דל גו
)%(
אה שגי
A בץ קו B בץ קו
שגיאת דחיסה ממוצעת לסגמנט כתלות בגודל סגמנט
דיון
על סמך התוצאות ניתן לראות שככל שאחוז השגיאה : יחס דחיסה•הנדרש עולה ומספר הפונקציות במילון גדל , משתפר יחס הדחיסה . כמו
עבור שגיאה נדרשת של 1:37כן יחס הדחיסה המקסימלי שהתקבל הוא פונקציות .17408 ומילון בעל 5%
MP FOP Fan
11.843 7.4 10.46 יחס הדחיסה
הטבלה מתייחסת לאלגוריתם תחת התנאים הבאים :
PRD < 3.2% , SNR > 65 , RMS < 25
להלן השוואה עם מספר אלגוריתמים נוספים :
דיון )המשך(
על מנת להשוות נתון זה לאלגוריתמים שגיאת דחיסה :• של אלגוריתמים אלו .SNR ו RMSאחרים , נתייחס גם ל
SNR RMS PRD שיטת דחיסה
84.7 11.8 1.7% Fan
78.8 15.9 2.2% First Order Prediction
79.0826 12.5028 2.33% Matching Pursuit
1:4הנתונים בטבלה מתיחסים עבור יחס דחיסה של
סיכום
אופיינים.ECGתוצאות טובות עבור אותות •
הוספת פונקציות למילון עבור אותות שונים.•
הוספת אופטימיזציות לחיפוש במילון לצימצום •זמן הדחיסה.