32
תתתתת תתתECG תתתתת תתתתתתתתMatching Pursuit יי ייייי יייי ייייי

דחיסת אות ECG בעזרת אלגוריתם Matching Pursuit

  • Upload
    art

  • View
    59

  • Download
    0

Embed Size (px)

DESCRIPTION

דחיסת אות ECG בעזרת אלגוריתם Matching Pursuit. שי אלפסי אילן בנדור. מטרות. מטרת הפרוייקט לקרב את האלגוריתם לזמן אמת ובחינת ביצועי האלגוריתם תחת תנאים אלו. הצעות לשיפור האלגוריתם עבור מימוש מתקדם יותר. למה צריך ECG ?. מאפשר אינדיקציה טובה על תפקוד השרירים באיזורים שונים בלב. - PowerPoint PPT Presentation

Citation preview

Page 1: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

בעזרת אלגוריתםECGדחיסת אות Matching Pursuit

שי אלפסי

אילן בנדור

Page 2: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

מטרות

מטרת הפרוייקט לקרב את האלגוריתם לזמן •אמת ובחינת ביצועי האלגוריתם תחת תנאים

אלו.

הצעות לשיפור האלגוריתם עבור מימוש מתקדם •יותר.

Page 3: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

?ECGלמה צריך

מאפשר אינדיקציה טובה על תפקוד השרירים •באיזורים שונים בלב.

פשוט למדידה.•

Page 4: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

?ECGלמה לדחוס

ביטים 11 ערוצים במקביל , 12מדידה של • שעות :24 דגימות בשניה , 1000לדגימה ,

בזמן אמת.ECGהעברת מדידות •

Page 5: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

Matching Pursuit

יצירת מילון המורכב מאטומי זמן-תדר מהצורה:•

xRggxx II1

00, :gaborפונקציית המילון נבנות על ידי פונקצית •

בנוסף לאטומי זמן-תדר המילון מורכב גם • , הנבנות גם Diracמפונקציית פורייה ופונקציות

עם תחום שונה של gaborהן בעזרת פונקציית .s,p,kערכים עבור

Page 6: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

Matching Pursuit)המשך( לסגמנטים. ECGפירוק אות ה•

עבור כל סגמנט מבצעים תהליך איטרטיבי של הטלת האות על •פונקציות המילון , ומציאת הפונקציה המתאימה ביותר , בצורה

הבאה :

כאשר הוא השארית המתקבלת בכל איטרציה באופן הבא :•

Page 7: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

Matching Pursuit)המשך(

.inner product ו s,p,kשמירת פרמטרי הפונקציות שנבחרו •

מעבר לסגמנט הבא כאשר מתקיים התנאי:•

איטרציות האות ניתן לייצוג בצורה הבאה : m בסוף התהליך לאחר •

Page 8: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

Matching Pursuit)המשך(

בתהליך הפריסה יוצרים את הפונקציות שנבחרו •מהמילון בעזרת הפרמטרים.

משחזרים את האות בעזרת הפונקציות • .(inner product)והמכפלה הפנימית

Page 9: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

יישום האלגוריתם

על מנת לקרב ++Cיישום האלגוריתם התבצע ב •את התוצאות ל"זמן אמת" ככל שניתן.

המימוש מורכב משלושה חלקים עיקריים :•

דחיסת האות , פריסת האות ובדיקת השגיאה (PRD).

Page 10: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

תהליך הדחיסה

כיוונון עדין(fine_tunning)

חיפוש בתת מילון(search_region)

תוכנית ראשית

דחיסת וקטור(compress_vector)

דחיסת סגמנט(compress_segment)

ECGקריאת וקטורי (read_signal)

יצירת מילון פונקציות

(create_dictionary)

חישוב וקטור שארית

(get_remainder_vec)

Page 11: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

(mainתוכנית ראשית )

main

קלט :

נתוני משתמש הכוללים :

שם קובץ קלט.•

שם קובץ פלט. #•

גודל פונקצית מילון. #•

דיוק הדחיסה. #•

מס' עמודות לדחיסה. #•

דיוק הכיוונון העדין. #•

# - נתונים אופציונליים.

הפעלת המודולים המבצעים:

יצירת מילון.•

.ECG קריאת וקטורי •

.i דחיסת וקטור •

קריאת נתוני המשתמש והשלמת הנתונים האופציונליים, קריאה למודולים המפורטים והמתנה תפקידי המודול:לסיומם.

Page 12: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

יצירת מילון פונקציות

Create_dictionary

קלט :

מס' הדגימות בכל פונקציה • (N.)

קלט :

הראשון struct מצביע ל-•במילון.

. ECG יצירת המילון שעל פיו יפורקו אותות ה-תפקיד המודול : •

המילון מורכב מפונקציות גאבור , פונקציות דיראק ופונקציות פורייה.•

.num_of_funcs = 4*N*)log_2)N(-1(+2*N מס' הפונקציות במילון נקבע ע"פ : •

( , וקטור הדגימות של s,p,k מכיל : פרמטרים נחוצים ליצירת הפונקציה ) struct , כאשר כל structs המילון הינו מערך •הפונקציה. ונתוני עזר נוספים.

Page 13: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

ECGקריאת וקטורי

Read_signal

קלט :

שם קובץ המכיל דגימות •ECG.ערוכות בוקטורים

מספר הוקטורים אותם יש •לקרוא.

מערך מספרי הוקטורים •לקריאה.

פלט:

מערך וקטורים.•

קריאת הדגימות במספרי העמודות הנתונים במערך הקלט והכנסתם לוקטרים המוחזרים המערך תפקיד המודול: •הוקטורים.

כל וקטור במערך המוחזר מכיל דגימות מנקודת מדידה בודדת.•

Page 14: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

דחיסת וקטור

Compress_vector

קלט :

אינדקס הוקטור.•

.ECG וקטור דגימות •

פרמטר כיוונון עדין.•

מצביע למילון הפונקציות.•

מספר הפונקציות במילון.•

שם קובץ הפלט.•

פלט :

קובץ המכיל את נתוני •הדחיסה של וקטורי

הקלט.

ביצוע דחיסה של וקטור הקלט ע"י חלוקתו לסגמנטים באורך פונקציות המילון וקריאה מחזורית תפקיד המודול :למודול המבצע את דחיסת הסגמנט. בסיום דחיסת הוקטור מודפסים נתוני הדחיסה לקובץ.

Page 15: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

דחיסת סגמנט

Compress_segmentקלט :

.ECG סגמנט נתוני •

מספר הפונקציות המילון.•

פרמטר כיוונון עדין.•

פלט :

.S וקטור ערכי •

.P וקטור ערכי •

.K וקטור ערכי •

וקטור ערכי המכפלות •הפנימיות. . matching pursuit המודול מבצע דחיסה של הסגמנט הנתון ע"פ אלגוריתם תפקיד המודול : •

פרמטר הכיוונון מאפשר לקבוע לכמה קטעים יחולק המקטע בו נמצאה המ"פ הגדולה ביותר בתהליך הכיוונון העדין. •

לאחר כל איטרציה נרשמים נתוני הפונקציה שנבחרה ותוצאת המ"פ לוקטורי הפלט. •

. search_region המודול מבצע את חיפוש הפונקציה במילון ע"י הפונקציה •

המודול תוכנן כך שיוכל לתמוך בהפעלה מקבילית.•

שדות הקלט והפלט מצויים במבנה יחיד הנשלח ומוחזר מהמודול.•

Page 16: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

חיפוש בתת מילון

Search_region

קלט :

מצביע למילון הפונקציות.•

.ECG סגמנט נתוני •

מספר הפונקציות שיש לסרוק.•

אינדקס הפונקציה ממנה •להתחיל.

פלט :

של הפונקציה S,P,K ערכי •שהניבה ערך מ"פ גבוה ביותר.

ערך המ"פ.•

אינדקס הפונקציה שנבחרה.•

שנשלח והחזרת פרטיו.ECG חיפוש הפונקציה המניבה ערך מ"פ הגבוה ביותר עם סגמנט נתוני ה- תפקיד המודול :•

שדות הקלט והפלט מצויים במבנה יחיד הנשלח ומוחזר מהמודול )במבנה זה מצויים שדות נוספים שאינם רלבנטיים •למודול זה(.

Page 17: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

כיוונון עדין

Fine_tunning

קלט :

אינדקס הפונקציה שהניבה מ"פ •מקסימלית עד כה.

מצביע למילון הפונקציות.•

של S,P,K )בעזרתו חושבו j נתון עזר •הפונקציה(.

דיוק הכיוונון העדין. •

פלט :

בעזרתם S,P,K פרמטרי •נוצרה הפונקציה המכווננת.

ערך המ"פ המרבית.•

וקטור ערכי הפונקציה •המכווננת.

של פונקציה המניבה ערך מ"פ גבוה יותר מהפונקציה הטובה ביותר במילון )אם S,P,K מציאת פרמטרי תפקיד המודול : •אפשר( והחזרת פרמטרים אלה, ערך המ"פ החדש ווקטור ערכי הפונקציה החדשה.

ובמקרה של P , במקרה של פונקצית דיראק הכיוונון נעשה על K ו – S,P במקרה של פונקצית גאבור הכיוונון נעשה על •.Kפונקציות פוריה הכיוונון נעשה על

ניתן למנוע את הכיוונון העדין ע"י שליחת ערך אפס בתור דיוק הכיוונון העדין למודול דחיסת הסגמנט.•

Page 18: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

חישוב וקטור שארית

Get_remainder_vec

קלט :

וקטור דגימות הפונקציה •

שהניבה מ"פ מרבית.

.ECG סגמנט ערכי דגימות •

ערך מ"פ מרבית.•

)norm)seg – mean)seg (ערך -•

פלט :

וקטור שארית.•

דגל סיום. •

: בצוע חשוב וקטור השארית ובדיקת תנאי סיום תפקיד המודול :•

• PRECISION.הינו משתנה גלובלי המוגדר ע"י התוכנית הראשית

Page 19: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

תהליך הפריסה

תוכנית ראשית

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)(

Page 20: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

תוכנית ראשית

תוכנית ראשית

Main)( קלט מהמשתמש:שמ/ות קבצ/ים הנוצרו על ידי תהליך הדחיסה.•

שם קובץ פלט שיכיל את הווקטור/ים המשוחזרים • ( . decompress_vector )בררית מחדל

) בררית מחדל DECOMP_LEVEL ערך עבור •0. )

:תפקיד לקרוא את הנתונים מהמשתמש.•

עבור כל קובץ קלט. decompress_vector להפעיל את הפונקצייה •

לקובץ decompress_vectorלהדפיס את האותות המשוחזרים המתקבלים מפונקציה •הפלט.

:בניית וקטורפלט לStruct מסוג vector_t המכיל שם קובץ מהמשתמש

ווקטור ריק

: בניית וקטורקלט מStruct מסוג vector_t המכיל את הווקטור

המשוחזר

Page 21: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

בניית וקטור

בניית וקטור

Build_vector)(

:תפקיד לקרוא את הנתונים מקובץ הקלט)המכיל את נתוני הדחיסה( .•

עבור כל אחד מהסגמנטים.build_segment להפעיל את הפונקצייה •

לאחר סיום בניית כל הסגמנטים להרכיב את האות המשוחזר ולהתזירו לתוכנת •הראשית.

קלט מהתוכנית הראשית:Struct מסוג vector_t המכיל שם קובץ מהמשתמש ווקטור

ריק

פלט לתוכנית הראשית : Struct מסוג vector_t המכיל את הווקטור

המשוחזר

בניית סגמנטפלט ל :Struct מסוג build_segment_s המכיל את

נתוני הדחיסה עבור כל סגמנט וסגמנט ריק.

:קלט מבניית סגמנטStruct מסוג build_segment_s המכיל

את את הסגמנט המשוחזר.

Page 22: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

בניית סגמנט

בניית סגמנט

Build_segment)(

:תפקיד מסוג struct ) הפונקצייה משחזרת סגמנט על פי הנתונים שהיא מקבלת כקלט•

build_segment_s.) לסגמנט המשוחזר .structמאתחלת את הסגמנט ב • לבניית וקטור.struct מחזירה את ה •

בניית וקטור:קלט מStruct מסוג build_segment_s המכיל את נתוני הדחיסה עבור כל סגמנט וסגמנט

ריק.

פלט לבניית וקטור:Struct מסוג build_segment_s המכיל את את הסגמנט

המשוחזר.

Page 23: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

בדיקת שגיאה

חישוב השגיאה הממוצעת באחוזים באופן הבאתפקיד::

ו- ORGכאשר המקורי האות זהו REC– האות זהו המשוחזר.

תוכנית ראשית

קלט: קובץ המכיל את האות המקורי .•

קובץ המכיל את האות המשוחזר. •

פלט: השגיאה הממוצעת הכללית מודפסת למסך •

( .prd_res.txtולקובץ פלט )

מודפס וקטור המכיל את השגיאה עבור כל • . (prd_vector.txt)דגימה

Page 24: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

תוצאות

השוואת מקטעי האות לפני דחיסה ואחרי פריסה•

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

פילוג שגיאת האנרגיה

Page 25: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

תוצאות )המשך(

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

Page 26: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

תוצאות )המשך(

ניתוח התוצאות התבצע על פי שני קבצי •ECG מתוך בסיס הנתונים MIT - BIH:

. A– יקרא קובץ mitdb\109.matקובץ 1.

.B – יקרא קובץ cudb\cu01.matקובץ 2.

Page 27: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

תוצאות )המשך(

השפעת מספר הפונקציות •במילון

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 בץ קו

זמן הדחיסה כתלות במספר הפונקציות

Page 28: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

תוצאות )המשך(

השפעת שגיאת הדחיסה•

יחס הדחיסה כתלות בשגיאת הדחיסה

זמן הדחיסה כתלות בשגיאת הדחיסה

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 בץ קו

Page 29: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

תוצאות )המשך(

השפעת גודל המילון על השגיאה הממוצעת •

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

32 64 128 256 512

ת( מו )דגי ט סגמנ דל גו

)%(

אה שגי

A בץ קו B בץ קו

שגיאת דחיסה ממוצעת לסגמנט כתלות בגודל סגמנט

Page 30: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

דיון

על סמך התוצאות ניתן לראות שככל שאחוז השגיאה : יחס דחיסה•הנדרש עולה ומספר הפונקציות במילון גדל , משתפר יחס הדחיסה . כמו

עבור שגיאה נדרשת של 1:37כן יחס הדחיסה המקסימלי שהתקבל הוא פונקציות .17408 ומילון בעל 5%

MP FOP Fan 

11.843 7.4 10.46 יחס הדחיסה

הטבלה מתייחסת לאלגוריתם תחת התנאים הבאים :

PRD < 3.2% , SNR > 65 , RMS < 25

להלן השוואה עם מספר אלגוריתמים נוספים :

Page 31: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

דיון )המשך(

על מנת להשוות נתון זה לאלגוריתמים שגיאת דחיסה :• של אלגוריתמים אלו .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הנתונים בטבלה מתיחסים עבור יחס דחיסה של

Page 32: דחיסת אות  ECG  בעזרת אלגוריתם Matching Pursuit

סיכום

אופיינים.ECGתוצאות טובות עבור אותות •

הוספת פונקציות למילון עבור אותות שונים.•

הוספת אופטימיזציות לחיפוש במילון לצימצום •זמן הדחיסה.