GIP – Geometric Image Processing Laboratory, Technion...

51
תתתתתת תתתתת תתתת תתתתתתת תתתתתRGB תתתתתת תתתתתתת( Eulerian Video Magnification (EVM תתתתתת: תתתתת תתתת, תתתתת תתתתתת, ת.ת.301314860 , תתתת:[email protected] תתתתת תתתתת, תתתתת תתתתתת, ת.ת.305745887 , תתתת:[email protected] תתתת תתתת, תתתת תתתתת, ת.ת.313347015 , תתתת:[email protected] תתתתת: תתת תתתת תתתת תתתתתתת תתתתת תתתתתת- תתתת תתתת תתתת:

Transcript of GIP – Geometric Image Processing Laboratory, Technion...

Page 1: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

ושימוש בטכניקתRGBפרויקט חילוץ דופק באמצעות מצלמת (Eulerian Video Magnification (EVM

:מבצעים , מייל:301314860יונתן עמיר, הנדסת מחשבים, ת.ז.

[email protected] , מייל:305745887דורון ארמון, הנדסת מחשבים, ת.ז.

[email protected] , מייל:313347015נריה מזוז, מדעי המחשב, ת.ז.

[email protected]

:מנחיםגיל שמאי ורון סלוסברג

ירון חונן - מהנדס המעבדה

:מועד2017 וחורף 2016הפרויקט התבצע בסמסטר אביב

Page 2: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

רקע - הטכנולוגיה הקיימת ובעיותיה.1

ה"בעיה" ●לחילוץ אלטרנטיביות שיטות בפיתוח מעוניינים ומדענים קלינאים נמצאים עליונה בעדיפות כאשר חדשות, בדרכים רפואיים מדדים

"( הכוללים דופק, קצב ואופיVital Signsמדדים רפואיים חיוניים )" נשימתי, סטורציה, טמפרטורה ולחץ דם. המטרה של הפרויקט היאבבתי הנעשית הקונבנציונלית המדידה לשיטת אלטרנטיבה להציע

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

שיטה זאת יכולה להחליף הן את מדידת הדופק במהלך שלבי הקבלהוהן עבור מתמשך אחריmonitoringשל הפציינט למוסד הרפואי

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

( פולשני לא במגע אם בין הפציינט contactsעם based non-invasive( או בצורה פולשנית )invasiveתוצר הלוואי של השיטות .)

"( מבוססי מגע הואVital Signsהקיימות למדידת מדדים חיוניים )"רפואיים מוסריםpatchesקילוף או תלישה של עור בכל פעם ש-

החיוניים המדדים כאשר נוחות חוסר גרימת ובכלליות מהמטופל לאורך ימים או שבועות באופן רציף.monitoringצריכים להיאסף ב-

הציוד את לייתר יכולה מגע ללא דופק חילוץ של בשיטה שימוש פשוטהRGBה"חומרתי" הקיים בבתי החולים ע"י שימוש במצלמת

2

Page 3: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

אשר עלותה נמוכה. שיטה זאת מציעה כמה יתרונות מרכזיים: מדידת דופק מוגבלת לרוב פיזיולוגית רק לאצבע המורה של הפציינט בכף היד באופן בו המכשיר הרפואי יכול ליפול כתוצאה מתזוזת החולה ו/או

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

סטנדרטי למדידת הדופק שלPulse Oximeterלא מסתמכות על frame סטנדרטית של מחשב נייד בעל RGBהמטופל אלא במצלמת

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

נקראת הדופק חילוץ לצורך Eulerianבחרנו Video Magnification או בקיצור EVMאשר פורסמה לראשונה ע"י צוות

אשר בסיסה הוא העצמת תנועות וצבעMITמפתחים מאוניברסיטת של קטעי וידאו סטנדרטיים.inputמ-

3

Page 4: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

. הפתרון שלנו – כיצד מתגבר על בעיות הקימות, והחדשנות שבו2

מטרת/ הגדרת הפרויקט: ● MITחלק א' - לימוד והבנת רקע תיאורטי של המאמר של חוקרי ○

. EVMבנושא שיטת חלק ב'-○

בהתבסס על אותו המאמר - יישום השיטה עבור חילוץ דופק■מצלמת עם אמת מפורטRGBבזמן לא אשר )מידע

במאמר(. פונקציות נוספות בתחום עיבוד תמונה עבור "פציינט3יצירת ■

בחדר מיון" 4

Page 5: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

שלב א' )עד מצגת אמצע(●קריאה ולימוד תיאורטי של יסודות עיבוד תמונה○EVMהבנה תיאורטית של המאמר הספציפי בנושא ○MATLAB( באמצעות offlineיישום חילוץ דופק )○ הצגת התוצאות המתקבלות תוך השוואה לתוצאות הצוות○

על סרטונים זהיםMITהמפרסם מ-של ○ videoויזואליזציה magnificationהפנים מאזור

)וידאו(שלב ב'●

)זמןCיצירת הפרויקט )של חילוץ הדופק( מחדש ב- ++○ אמת(

יצירת אלגוריתם ראשון - חילוץ דופק המתבסס על שיטת○EVM-מ רובינשטיין של הדוקטורט + מהמאמר MIT

(Peak Detection)בשיטת (90fpsשימוש במצלמה חיצונית עם קצב פריימים גבוהה )○

לשיפור דיוקדופק המתבסס על שיטת○ חילוץ - שני יצירת אלגוריתם

EVM( פוריה והתמרות DFTהמתאים התדר למציאת ) לדופק הקיים של ה"פציינט"

יצירת פאטצ' מתאים )בחירת אזור עניין ממוקד יותר בתוך○חלקים בפנים(

לצורך שיפור רמת הדיוקPCAשימוש ב- ○יצירת ○ - לפרויקט גרפי ממשק בניית threadsלצורך

והשני עבור לשיפור ביצועים: הראשון עבור חישוב דופק .real-timeהצגה ויזואלית בממשק ב-

face-recognitionשימוש ב- ○(real-time )וידאו face-detactionשימוש ב- ○

5

Page 6: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

ב-○ "פספורטface-detactionשימוש סטילס, )תמונות מתיק פציינט"(

(face-recognitionהזנת משתמשים חדשים בזמן אמת )○אוטומטי באופן מחדש זיהוים לצורך פרטיהם ושמירת

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

(face recognitionלמשתמש ) עבורMatlabיצירת פונקצית "הדמיית בדיקת רפואית" ב-○

הרובוטרפואיות○ "טעויות הבעיה את המתאר סרטון יצירת

ודיאגנוסטיות"יצירת סרטון המתאר את הבעיה "עומסים בחדרי מיון"○

שימוש במאמרים עבור כלים יישומיים - עיבוד תמונה:●○ - )עד פרזנטציית אמצע( MITהמאמר הראשי שניתחנו

EVMחילוץ נוספים אותם עליהם התבסס היישום○ ומחקרים מאמרים

)קראנו והצלבנו מידע( כפי שמופיע בטבלה:

קישורמה יישמנו מתוך המאמרשם מאמרמס מאמר ראשי )הדרישה1

עבור הפרויקט ליישום( -EVM של MIT

●Temporal processing

●Spatial decomposition

http://people.csai

l.mit.edu/mrub/

6

Page 7: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

Eulerian Video Magnification for Revealing Subtle Changes in the World

●magnification- לצורך ויזואליזציה

ניתוח המאמר והבנה●EVMתיאורטית של

papers/vidmag.pdf

דוקטורט של רובינשטיין2MIT

Analysis and Visualization of Temporal Variations in Video

השיטה של רובינשטיין● בתזה62מעמוד

Peakלמציאת peaks)מדידת ה-

של כל פיקסל בנפרד +ממוצע על כל ה-

peaksשל הפיקסלים השונים

לצורך קבלת הדופקבסופו של דבר(

http://people.csai

l.mit.edu/mrub/

papers/RubinsteinPhDThesis.

pdf

מאמר של צוות מגרמניה3

Heart rate monitoring in ultra-high-eld MRI using

frequency information

obtained from video signals of the

human skin compared to

electrocardiography and pulse oximetry

נסיון החלפת שיטת● peak detectionה-

עליה המליצו רובינשטיין

וה"איראנים" ושימושבהתמרות פוריה )

DFTבמקום )

https://www.degruyter.com/view/j/cdbme.2015.1.issue-1/cdbme-2015-0018/cdbme-2015-0018.pdf

עפ"י המאמר, הומלץ●מאמר של צוות מאיראן4 Peakלהשתמש ב-

Detection

https://www.researchgate.net/publication/269999734_RETRACTED_A_temporal_video-

7

Page 8: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

processing_method_to_improve_heart_rate_estimation

Xiaobai Liמאמר של 5

Remote Heart Rate Measurement From Face Videos Under Realistic Situations

patchשימוש ב- ●מאזור הסנטר

שימוש בערוץ הירוק● PCAשימוש ב- ●

http://www.cv-

foundation.org/

openaccess/

content_cvpr_2014/

papers/Li_Remote_Heart_Rate_2014_CVPR_paper.pd

f Mattמאמר של 6

Estrada

Amplification of Heart Rate in Multi-Subject Videos

patchשימוש ב- ●מאזור הסנטר

שימוש בערוץ הירוק●

https://web.stanford.edu/class/ee368/Project_Spring_1415/Reports/Stowers_Estrada.pdf

MITשני דוקטורנטים מ- 7 עליהם רובינשטיין המליץ להסתמך בנוגע ל שיטת

חילוץ הדופק

Eulerian Video Processing and Medical Applications

נסיון לקיחת● פאטצ'ים מאזור

המצח נסיון לקיחת●

פאטצ'ים מאזורהלחיים

https://dspace.mit.

edu/bitstream/

handle/1721.1/77452/826647

817-8

Page 9: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

MIT.pdf?sequence=

2

התייעצות על פיתוח:●(3צוות מגרמניה )מהפיתוח שמוצג במאמר מס' ○)התייעצות בנוגע לחשיבות nanitאסף גלזר מנכ"ל ○ fps

ורזולוציה, פתרון בעיות נוספות(

. שיקולי תכנון, תכנונים שנעשו על ידי הקבוצה3

(: Offline אלגוריתם ראשון – לפי התזה של רובינשטיין )גרסת

על הפריים הראשון, ונחתוך את הוידאו לפיface detection. נבצע 1 הקואורדינטות שהתקבלו.

:EVMשלבים מתוך ה-

. נבצע פירמידת גאוס על כל הפריימים ונשמור את השכבה הגבוהה2ביותר בפירמידה של פריים.

9

Page 10: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

לתדרים בטווח מסוים שנקבע מראש.temporal filtering. נבצע 3

שלבים בהשראת התזה:

פריימים עבור כל פיקסל. ערך הפיקסל15. יצירת חלונות בגודל של 4 ש"מתחשב" בשלושתPCA )לבסוף חישבנו red channelיהיה עצמת ה-

( שלו.RGBערוצי ה-

. עבור כל חלון של כל פיקסל, מחפשים פיק, ושומרים את מס' הפריים5שבו התרחש הפיק.

תמונה הממחישה זאת )מתוך התזה של רובינשטיין(:

על השליש האמצעי של6 רק ממוצע )חישוב קטום ממוצע חישוב . הערכים( על מיקומי הפיקים של כל פיקסל בחלון זמן מסוים, ובאמצעות

כך גילוי באיזה פריים היה פיק עבור אותו חלון זמן.

. חישוב של ממוצע הפרשי הזמן בין זוג פיקים עוקבים, ולאחר מכן7

=bpmחילוץ הדופק ע"י הנוסחה: 60diffAvgfps

.

10

Page 11: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

ובאמצעות מאמר שמצאנו – בהנחיית המנחים )גרסת 1 אלגוריתם שני Offline :)

על הפריים הראשון, ונחתוך את הוידאו לפיface detection. נבצע 1 הקואורדינטות שהתקבלו.

:video magnificationשלבים מתוך ה

. נבצע פירמידת גאוס על כל הפריימים ונשמור את השכבה הגבוהה2ביותר בפירמידה של פריים

)שזה מתקשר0.83-2.5 לתדרים בטווח temporal filtering. נבצע 3 (150 ל-50לדופק בין

שלבים בהשראת המאמר:

שניות )5. ניצור חלונות זמן בגודל 4 5*fps.פריימים( עבור כל פיקסל שלו.green channelערך הפיקסל יהיה ה-

Hamming. עבור כל חלון של ערכי פיקסל בחלון זמן מסוים נבצע 5window.)ונכפיל אותו עם החלון המקורי )איבר-איבר

על החלון שהתקבל.DFT. נחשב 6

נחלץ את התדר המקסימלי ונמיר אותו לדופק )DFT. מתוצאת ה- 7 BPM = 60*Hz)

. נעשה ממוצע קטום על כל ערכי הדופק של הפיקסלים שהתקבלו8עבור חלון מסוים, והתוצאה שהתקבלה היא הדופק עבור חלון זמן זה.

1 . https://www.degruyter.com/view/j/cdbme.2015.1.issue-1/cdbme-2015-0018/cdbme-2015-0018.pdf11

Page 12: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

. ניסויים - מהלך, שיטה, בעיות ואופן התגברות עליהן4

- עד מצגת אמצע שלב א' קריאה ולימוד תיאורטי של יסודות עיבוד התמונה●

ברמה○ אקדמי מאמר ולנתח לקרוא עלינו היה הראשון בשלב גבוהה )פעם ראשונה בתואר(

תרגמנו את המאמר○ התחלנו לרכז את כל המושגים התיאורטיים שלא הכרנו מתחום○

במאמרים בהרחבה עליהם ולקרוא התמונה עיבוד נוספים/אינטרנט/סרטונים וכו'

עומד○ מה להבין וניסינו המתמטיים המודלים את ניתחנו מאחוריהם )בהתבסס על ידע קודם שהיה לנו מקורסים שונים: מד"ח וטורי פוריה, אנליזה נומרית, אלגברה ואלגברה מודרנית

וכו'(EVMהבנה תיאורטית של המאמר הספציפי בנושא ●

EVMהבנת העקרונות מאחורי השיטה להעצמת שינויים מזעריים - ○ סקירת היישומים השונים הקיימים בעולם תוך שימוש באלגוריתם○

זה )שחזור שיחה ע"י ויברציות של עצם דומם, חילוץ דופק, חילוץ וכו'(SLRקצב נשימות, ייצוב תמונה הנובע מתזוזת מצלמת

)מייסד skypeהתייעצות ב- ○ גלזר עם ד"ר אסף nanitבנוגע ) למאמרים השונים

קריאת הדוקטורט המלא של רובינשטיין על מנת להבין את תהליך○MITיישום חילוץ הדופק שלא מופיע במאמר הראשי של

( לשיטה הלגראנז'יתEVM שב- Eהשוואת השיטה האוילרית )ה- ○)אשר מוזכרות במאמר(

Spatial Decompositionלימוד ושימוש בשיטת ה- ○Temporal Processingלימוד ושימוש בשיטת ה- ○

12

Page 13: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

Magnification and Reconstructionלימוד ושימוש בשיטת ה- ○ מושגים אותם למדנו לצורך הבנת המאמר )חלק מתוך קובץ נפרד בו○

תרגמנו את המאמר( - הסבר וקישור להרחבות עליהם●spatial decompositionפירוק מרחבי – לחלק את המרחב =

פשוטים לתאים http://www.cs.duke.edu/courses/cps124/spring04/note

s/12_datastructures/notes.pdf●temporal filteringיכול מרחבי סינון בה לתמונה, בניגוד =

למשל לטשטש את התמונה או לחדד – סינון זמני עוסק בסינון שלרצף הוא המסונן שהאות כביכול, אומרת, )זאת תמונות רצף התמונות והסינון הוא של כל פיקסל ופיקסל בתמונה לפי השתנותו בזמן(.הסינון עצמו יכול לטשטש את השינויים הנעשים בחלוף הזמןלמשל(. ברוח שזז עלה תנועת )כמו התמונות רצף של http://stackoverflow.com/questions/20091946/temporal-filtering-and-their-concepts-in-image-signal-video-

processing ● spatio-temporal sensitivityרגישות לזיהוי תנועות לאורך –

שהעין היא הכוונה המאמר, של )בהקשר תמונות ברצף זמן לתפיסת נמוכה רגישות - נמוכה ביכולת מתאפיינת האנושית גבוהים(. בתדרים בתנועה שינויים http://delivery.acm.org/10.1145/390000/383748/p39-

yee.pdf?ip=132.68.62.8&id=383748&acc=ACTIVE%20SERVICE&key=0D17F1A88EABC760.73E0BAC401C36D1F.4D4702B0C3E38B35.4D4702B0C3E38B35&CFID=626103589&CFTOKEN=73311259&__acm__=146

5215853_1d7ccf66583e14da57d2d7f6f5501edc

13

Page 14: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

● time seriesרצף של תצפיות שנאמדו זו אחר זו, באינטרוול – נתון. זמן https://he.wikipedia.org/wiki/%D7%A1%D7%93%D7%

A8%D7%94_%D7%A2%D7%AA%D7%99%D7%AA●spatial poolingדרך לחשב ייצוג לתמונה, כאשר כל פיקסל –

בסביבתו. הפיקסלים של כפונקציה מחושב https://www.quora.com/What-is-spatial-pooling-in-

computer-vision●quantization noise.רעש" בתמונה שנובע מטעויות דגימה" –

https://en.wikipedia.org/wiki/Quantization_)signal_processing(#Quantization_noise_model

●brightness constancy assumptionזו ההנחה כי הבהירות – באזור מסוים קטן מספיק, תישאר זהה לכל אורך רצף התמונות,

למרות שייתכן ומיקום האזור ישתנה.● optical flowזהו זיהוי תנועה של אובייקט על פי בהירות ברצף –

תמונות. של http://cs.haifa.ac.il/hagit/courses/seminars/visionTopic

s/Presentations/Lecture06_Optical%20Flow.ppthttp://www.sci.utah.edu/~gerig/CS6320-S2013/

Materials/CS6320-CV-S2012-OpticalFlow-I.pdf●preceptioaly appealing motion aggregationמבחינה –

תפיסתית הגזמת תנועה מושכת / מעניינת )לא הסבר אלא תרגוםישיר מגוגל טרנסלייט(.

●motion segmentation,שנעים אובייקטים לאיתור משמש - משנים את מיקומיהם, בתוך רצף של מס' תמונות. המשמעות היא

הפרדת אובייקטים אלו מהרקע הסטטי.

14

Page 15: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

http://computervision.wikia.com/wiki/Motion_segmentation

●image in-paintingשיטה ל"שחזור" חלקים חסרים או פגומים – לשנות או להוריד ניתן שבאמצעותה שיטה ובנוסף בתמונה, אובייקטים לא רצויים בתמונה. השיטה מבצעת אינטרפולציה של

הערכים שליד האובייקט הלא רצוי ומחליפה אותו בערכים אלה.https://en.wikipedia.org/wiki/

Inpaintinghttp://www.slideshare.net/PulkitGoyal1/image-

inpainting● Single number ל בניגוד bandpass filteringכנראה –

כפרמטר הדופק חילוץ בין ההבדל המאמר( של )בקונטקסט וויזואליזציה שניתן לעשות בכלי מספרי יחיד לעומת חילוץ דופק

החדש שפותח ומוצג במאמר.●temporal aliasingאחרים תדרים אל תדרים - התחזות של

בעקבות דגימה שלא עומדת בתדר נייקוויסט. ניתן לראות זאת גםבאות אודיו וגם ברצף תמונות )וידאו( .

https://en.wikipedia.org/wiki/Aliasing●non-photorealisticקשור לתחום של אמנות דיגיטלית - עיבוד -

תמונות )כמו יצירת אפקטים( בצורה הדומה לשיטות שלא מנסותרישום, ציור, )כמו שהיא כפי האמיתית המציאות את להציג

אנימציה(.●Low pass filtering מקסימלי לסף מתחת תדרים )ביטול -

Aמסויים - התדרים הנלקחים הם רק התדרים שמעל הסף( - low-pass filter is a filter that passes signals with a frequency lower than a certain cutoff frequency and

15

Page 16: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

attenuates signals with frequencies higher than the cutoff frequency

מושגים נוספים:●●banpass filter●banpass signal●separable binomial filter●spatial frequancy cutoff●chrominance components ●YIQ●IIR bandpass●linear ramp transition●downsampled●quantization ●ideal banpass●in situ●photoplethysmogram●revealing board●second order IIR ●wide-sense stationary●grey card●feature tracking"( spatio-temporal sensitivityרגישות זמן-מרחב )"●●"( נמוכה בתדירות זמן של כפונקציה temporalסינון

pooling )" ●"quantization noise."

16

Page 17: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

של● לינארי קירוב על מסתמכת המתמטי המודל ניתוח brightness constancy assumption

●optical flow . ( הכוללת העצמה שלmultiscaleעבודה בגישה מערכתית )●

תנועה ללא מעקב או קירובי תנועה. ( ו-motion segmentationחלוקה לסגמנטים לפי תנועה )●

image in-paintingע"מ לקבל תמונה באיכות מספיק טובה )אשר מעלות סיבוכיות של האלגוריתם(

●Temporal processing ●localized spatial pooling ●bandpass filteringהאות את ולחשוף לחלץ ע"מ

אנליזת התחום הראשוני הזאת המתכתב/קשור עם הדופק. מאפשרת להעצים ולהציג את סיגנל הדופק במיקומים שונים

על הפנים. ●high-pass filtering ●spatio-temporal processing אוילרי ●Scale space● localized spatial pooling

MATLAB( באמצעות offlineיישום חילוץ דופק )● Video סיפקו קוד במאטלב שמממש את ה- MITבנוסף למאמר, ○

magnification.שלהם המימוש את להבין ניסינו זה בשלב . הרקע שלנו במאטלב לחלקנו היה קטן עד לא קיים, וזהו גם קושי

שנאלצנו להתמודד איתו. על○ לעבור והתחלנו השפה של הבסיסיים הדברים את למדנו

הקוד. בקוד היה הרבה שימוש בפונקציות מוכנות בעיבוד תמונה17

Page 18: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

שהיינו צריכים לקרוא עליהם ולהבין בדיוק מה הן עושות ואיך זהצריכים ללמוד על היינו בנוסף שנעשה בוFFTמשתלב בקוד,

שימוש.לאחר שהבנו בקווים כללים את המימוש שלהם ניגשנו לשלב הבא.○ ( - כעת היינו צריכים להוסיף קודofflineחילוץ דופק במאטלב )○

על מנת לחלץ דופק. על מנת לעשותMITמשלנו לקוד הקיים של זאת התחלנו לקרוא הרבה מאמרים בין אם באתר הפרויקט של

MITובין אם במקומות אחרים באינטרנט על דרכים לחילוץ דופק videoבאמצעות magnificationהרבה של שלב היה זה .

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

בדיעבד גילינו שניתן לקבל תוצאות טובות רק אם טווח התדרים○הוא טווח בסביבה קטנה סביבfilteringשעבורם אנחנו עושים

זה החלטנו ומשלב גם מה שהצגנו במצגת אמצע זה הדופק. למימוש realלעבור time -ב CPP.

מושגים רלוונטיים אותם למדנו לצורך יישום מאטלב:○●Laplacian/Gaussian pyramidהיא פירמידה כללי באופן -

smoothingדרך לייצוג תמונה כאשר בכל שלב בפירמידה עושים and subsamplingקטנה שלב כל של הרזולוציה כך )וע"י

ונוצרת הפירמידה(. פירמידת גאוס - לוקחים את התמונה המקורית ומפעילים עליה●

)מושג המתואר בהמשך( ומה שקיבלנו זהGaussian Blurאת של התמונה המקורית. ובכל שלב בפירמידה, כלlowpassגרסת

18

Page 19: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

שמתחתיו ברמה השכנים הפיקסלים כממוצע מחושב פיקסל בפירמידה.

פירמידת לפלסיאן - מחושבת באופן דומה לפירמידת גאוס, רק● שכל שלב בפירמידה הוא ההפרש בין התמונה המקורית לתמונה

עליה ה- lowpassשנעשה filteringהתהליך הזה ממשיך על . .bandpassמנת לקבל קבוצה של תמונות שהם

https://en.wikipedia.org/wiki/Pyramid_)image_processing(#Gaussian_pyramid

http://www.cs.utah.edu/~arul/report/node12.html●lowpass filtering , highpass filtering , bandpass

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

העלמתם לחלוטין.lowpassשאנחנו מסוימת סף רמת מעל שהם תדרים מסנן מגדירים.

highpass.מסנן תדרים שהם מתחת לרמת סף שאנחנו מגדירים bandpassהוא שילוב של שניהם, כלומר הוא מקבל כקלט גבול

עליון וגבול תחתון, והוא משאיר רק את התדרים שבתוך הגבולותהאלו.

https://en.wikipedia.org/wiki/Passband●downsample כל בודד פיקסל לדגום - nכלומר( פיקסלים

להשאיר רק את הפיקסלים שנמצאים במקומות שהן כפולות שלn כאשר את ,)nכך לצמצם את וע"י אנחנו מגדירים מראש,

דוגמאות: וכו'. רעשים להפחית התמונה,

19

Page 20: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

http://www.mathworks.com/help/signal/ref/downsample.html

●Gaussian Blurזהו אלגוריתם החלקה, שעושה את ההחלקה - ע"י שימוש בפונקציית גאוס.

מכיוון שהוא מסנן תדריםlowpass filterאלגוריתם זה נחשב כ גבוהים.

●FFT -ל יעיל )מימוש מהירה פורייה התמרת זאת - DFT,) ( והחלקה סינון באלגוריתמי בה filteringומשתמשים and

smoothing.)

הצגת התוצאות המתקבלות תוך השוואה לתוצאות הצוות המפרסם● על סרטונים זהיםMITמ-

מאזור הפנים )וידאו(video magnificationויזואליזציה של ●

- עד מצגת סיום שלב ב' )זמן אמת(Cיצירת המודל מחדש ב- ++●

,openCVהתקנת סביבת עבודה שלקחה הרבה זמן: עבודה עם ○לצורך ממשק גרפיQT, עבודה עם cMakeהתקנה באמצעות

(, תחילת בנייתQT)למרות שבסופו של דבר הפרויקט לא נבנה ב- ב- קוד בניית המשך באקליפס, visualקוד studioלצורך(

של בפרויקט שימוש תוך שהכנו הממשק עם התממשקות Luxand.)כפי שיוסבר בהמשך

השניrealtime" בשלב הראשון לשלב ה- offlineהמעבר מקוד "○ היה מסובך - בין השאר בגלל העובדה שלא הייתה לנו אפשרות

)להשוות לתוצאות דופק נכונות(.realtimeלדבג את הקוד ב- 20

Page 21: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

מסיבה זאת הגענו לשתי החלטות: אבל בעיקרrealtimeהעברנו בהדרגה את הפרויקט למצב ■

ב- offlineהתמקדנו בשיפור האלגוריתם של חילוץ הדופק . שלב זהMITמשום שכך זה קל יותר לדבג ולהשוות לתוצאות

,opencvלווה בהרבה בעיות שכללו בין היתר למידת הספרייה ל- מימוש videoמציאת magnifiacation -ב cppועוד

בעיות שנפרט בהמשך. שניתן לשים על האצבעFDA מאושר Pulse Oximeterקנינו ■

ב- התוצאות את לדבג מנת אותןreatimeעל ולהשוות לתוצאות הנמדדות ע"י המכשיר

בעיות נוספות בהן נתקלנו בשלב הזה:○כותב■ שרובינשטיין הזמן חלונות שני את לממש איך להבין

)לא במאמר(. חלון אחד של פריימים בו15עליהם בתזה נמצא בהמשך פיק/מקסימום של עצמת צבע, וחלון אחר של

שניות שלפיו נחשב את הדופק.5 opencvלהתעסק עם הפריימים ברמת הפיקסלים באמצעות ■

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

להצליח לבנות נכון פונקציה שתדע לזהות רק פיקים אמיתיים■ של עצמת הצבע ובנוסף להצליח למצוא אותם גם בתפר שבין

חלונות זמן רצופים. לפתור בעיה שוידאו שצילמנו גרם לקריסת התוכנה. בדיעבד■

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

.resizeבפונקציית 21

Page 22: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

להתחיל לבנות גם ממשק גרפי לתוכנה שישמש אותנו בהמשך■בודד/ בזמן אמת.patchלזיהוי פיקסל באזור מסוים בפנים

זאת באמצעות ניסינו לעשות Qtכאמור Creatorבעקבות המלצות שמצאנו באינטרנט אבל בסופו של דבר עשינו זאת

בויזואל סטודיו. דיבאגינג ארוך ושיפור התוצאות■לבדוק■ כדאי )הראשון( את האלגוריתם לשפר שכדי חשבנו

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

ולא זיהוי פיקים(.DFTהתמרות לא הבנו איך ניתן לעבוד רק עם ערוץ הצבע האדום בשלב■

הראשון. לאחר מכן רצינו לבדוק שאנחנו עובדים נכון עם ייצוגהצבע לערוץ להתייחס רק אפשר שאכן וגם הפיקסלים ערוצי בכל שימוש היה שבדקנו נוספות אפשרויות האדום.

( הייתהRGBהצבע שלנו שהאינטואיציה למרות בנפרד ) שהתוצאה של חילוץ הדופק )שקשור לזיהוי רמת האדמומיות

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

לעבוד היינו צריכים לחפש עוד מאמרים בספרות. בשלב הראשון בחרנו לעבוד לפי ההנחיות שלבעיה מרכזית -■

בשיטת peakרובינשטיין detectionשל המרכזית הבעיה . שימוש בשיטה זאת הייתה שהאלגוריתם לא יכול לעבוד נכון

22

Page 23: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

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

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

)ואז יש אצלנו בעיה/בעיות שצריך לגלות ולפתור(.שיטת ● על המתבסס דופק וחילוץ - ראשון אלגוריתם EVMיצירת

מ- רובינשטיין של הדוקטורט + )בשיטת MITמהמאמר peak detection)

●( גבוה פריימים עם קצב חיצונית לשיפור90fpsשימוש במצלמה ) בדיוק

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

אשרPT-Grayכמו נסיון ששווה לעשות. נעשה שימוש במצלמת ממצלמת הרשת בלפטופים שלנו )עד3לה קצב פריימים גבוה פי

90 fpsיותר. הדבר לא השפיע על תוצאות ( והיא גם איכותית הוא המליץnanitהמדידה. לאחר התייעצות עם ד"ר אסף גלזר מ-

סטנדרטית.fps 30לנו לחזור ולהשתמש במצלמת ועם מצלמות נוספות שהיוPT-Grayנעשה ניסוי עם מצלמת ה-○

זמינות עבורנו )בהמלצת המנחה רון - שימוש במצלמה של אייפוןעל מנת לקבל מספרslow motion+ שימוש בפונקציית ה-

23

Page 24: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

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

לכל כיוון(.bpm 20הערכים נעים ב +- והתמרותEVMיצירת אלגוריתם שני - וחילץ דופק המתבסס על שיטת ●

( שלDFTפוריה הקיים לדופק המתאים התדר למציאת ) ה"פציינט".

במאמרים המקוריים איתם עבדנו הייתה המלצה להעדפת שיטת○זאתpeak detectionה- על פני שיטות אחרות. המלצה

( ובמאמר של1הופיעה בדוקטורט של רובינשטיין )מאמר מס' (. לאחר התייעצות עם המנחים רון וגיל4הצוות מאיראן )מספר

ה- שיטת שניה שבה החלפנו את שיטה ליישם לנסות החלטנו peak detectionפוריה יציבות, בהתמרת לא שנתנה תוצאות

( שצוות מגרמניה3. בנוסף מצאנו במאמר )מס' FFT( DFTמסוג ) שיישם את שיטה זאת פרסם שהיא עובדת בצורה יציבה ומספקת

תוצאות איכותיות.

מתאיםPatchיצירת ● לפי המאמרים השונים אותם קראנו קיימות שיטות שונות לבחירת○

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

מכשיר עם בבדיקה המתקבל לדופק ביותר FDAהגבוהה סטנדרטי.

○Xiaobai Li, Jie Chen 'מס )מאמר שהתוצאה5 טענו - ) יצירת ע"י מתקבלת ביותר הסנטרpatchהאיכותית מאזור

)בצורת "חצי עיגול"(○Matt Estrada '( -6 והצוות מאוניברסיטת סטנפורד )מאמר מס

24

Page 25: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

מאזורpatchטענו שהתוצאה הטובה ביותר מתקבלת ע"י יצרת הסנטר )בצורת "חצי עיגול"(

○Hao-Yu Wu-והצוות מ MIT 'מאמר מס( ( - טענו שהתוצאות7 מאזור הלחיים והמצח.patchהטובות ביותר מתקבלות ע"י יצירת

ויצר פונקציה אשר יצרה מורכבpatchצוות זה הגדיל לעשות שהתקבל ע"י "משקול" האזורים הרלוונטיים ביותר לחילוץ דופק

שה- כך - הפנים בצורהpatchמאזור היה לא שהתקבל גיאומטרית )מלבן/חצי עיגול וכו'( אלא בצורה של אוסף נקודות בעלות משקל שונה כך שנקודה שקיבלה משקל גבוה תשפיע יותר

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

גיאומטריותpatchesב- )צורות לבצע נוכל כי ידענו אשר פשוטות(.

ה- ○ בניית בתהליך להתחיל מנת כלpatchesעל קודם היינו ויישום של קיים.face detectionמוכרחים להטמיע אלגוריתם

ועם דוגמאות שונות שחיפשנוOpenCVבהתחלה ניסינו לעבוד עם . רוב התוצאות של החיפוש לא עבדו בצורה מספיקGitHubב-

ולכן התחלנו לעבוד עם שונים אשר מכיליםSDKמדויקת -ים . בסופו של דבר הצלחנוface-detectionבתוכם פונקציות בנושא איך לעבוד עם של FaceSDKללמוד Luxandומשם התחלנו

כולל הגרפי הממשק את ו- face-detectionלבנות face-recognition.

גאומטריים מרובעיםpatchesכל עוד אנחנו ממשיכים לעבוד עם ○ שונים על כל הפנים, על אזורpatchesאו מלבניים, יכולנו ליצור

הלחיים, אזור המצח ואזור הסנטר. היה עלינו לקרואLuxandבשביל להבין איך להתקין ולעבוד עם ○

מידע בקישור: 25

Page 26: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

http://luxand.com/facesdk/ ובין השאר, מלבד קריאת מידע ושינוי של הפונקציות בהן עושים שימוש שם, גם להבין את השליטה בממשק הגרפי שעושה שימוש

כפי שמופיע בקישור:windows של DialogBoxב- https://msdn.microsoft.com/en-us/library/windows/

desktop/ms632588)v=vs.85(.aspx נתקלנו במס' בעיות כאשר הגענו לנקודה בה יש לשלב בין חישוב○

הדופק אל הממשק הגרפי. קודם כל היה צריך ליצור מחדש פרויקט ולהשתמש במדריך של■

Luxand .לאופן הגדרות הפרויקט ב- ■ בקודLuxandגם וגם אינטרנט במצלמת משתמשים

על מנת לקבל את הפריימים בזמן אמת.opencvהפרויקט ב- ולכן בסופו של דבר הפרויקט עובד כך זה הוביל להתנגשות

והתמונות נשלחותopencvשהשימוש במצלמה נעשה רק ב- . Luxandאל -

לכן גם בסופו של דבר הפאטצ' בו השתמשנו נוצר ע"י שימוש ב-■face-detection של opencv -למרות שיש שימוש ב( face-

detection -גם ב Luxand.) ראינו שהממשק הגרפי נתקע כל פעם כאשר מנסים לחשב את■

הדופק למשך כשתי שניות. לכן לא הייתה ברירה אלא לשנות threadsאת הקוד כך שהוא יעבוד באופן מקבילי. יצרנו שני

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

חיבור כל האלגוריתמים והפיצ'רים לכדי תוכנה אחת עובדת ● בזמן יישום חילוץ הדופק בזמן אמת ממקטע הוידאו בזמן אמת○

שניות של5 פריימים אשר ייצגו 150 של bufferהיה צורך לייצר 26

Page 27: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

לחלץ את הדופק נרצה פרונטלי של הפנים אשר מהם צילום של שיטת 30fpsבקצב הפעלת לאחר .EVM -ו temporal

bandpass filterנקבל את אותו מקטע וידאו עם תדרי הדופק )שזהHz0.83-2.5הרצויים מוגברים, המלצת המאמר בטווח

(. באמצעותBPM פעימות בדקה, 150 ל-50מתקשר לדופק בין "( נוכל להתחילfiltered videoקטע הוידאו הזה )נקרא לו בשם "

לחלץ את קצב הדופק בדרכים שונות. בשלב הראשון נמצע אתבעל וקטור ונייצר פריים בכל הצבעים ערכים150עצמת

ה- ממוצע את מה-intensityהמייצגים בזמן נקודה בכל ROI )region of interest( שלנו במקרה הנבחר, patchמאזור

" )נקרא לו בשם יצרנו "(pulse vectorהמצח. הווקטור אותו ערכים בהם נמצא ממוצע הערכים הרצויים בכל נקודה150מכיל

בזמן ולמעשה מכיל את המידע על קצב הדופק של הנבדק. ניתן להשתמש במספר שיטות על מנת לחלץ מה- pulseכעת

vector.את הדופק בזמן אמת שיטת היא הראשונה peakהשיטה detectionתוארה אשר

בצורה נרחבת בחלק הראשון של ספר הפרויקט. באמצעות שיטה ניתן להשתמשMITזאת שהוצגה בתזה של מיכאל רובינשטיין מ-

" pulseב- vector -ה את מתוכו ולזהות "peaksהשונים )בתוספת אופטימיזציה לזיהוי הפיקים תוך שימוש בממוצע קטום(

*60ולאחר מכן להשתמש בנוסחה numOfPeaks / WindowsSizeInSeconds

וכך נקבל את הדופק בפעימות לדקה. " היא שיטתpulse vectorהשיטה השנייה לחילוץ דופק מה- "

שתוארה גם כן בחלק הראשון של ספר הפרויקט.DFTהתמרות " למישורpulse vectorבשלב הראשון נבצע התמרה של ה- "

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

27

Page 28: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

המספר המקסימלי יתקבל באינדקס אשר מייצג את תדר הדופק. , את ההמרה לפעימות בדקה Hzהדופק המתקבל הוא ביחידות

bpm -ב התוצאה הכפלת ע"י תוצאות60נעשה לקבל כדי . טכניקות: בשתי נשתמש יותר בחלון1מדויקות נשתמש .

Hamming-לפני ביצוע ההתמרה )מעשית כופלים את ערכי ה pulse vector -בחלון ה (Hamming . 2-נפחית את רכיב ה .

DC" מה- pulse vectorהערכים של הממוצע הורדת ע"י " בווקטור. אחת מהבעיות במהלך הפרויקט הייתה שתוצאות חילוץ הדופק לא היו מספיק מדויקות. לאחר נסיונות רבים לפתור זאת

שיפר משמעותית את התוצאותDCגילינו שהשימוש בהפחתת ה- הבא: בקישור למצוא ניתן לכך )הסבר

http://blog.originlab.com/data-handling/how-to-remove-dc-offset-before-performing-fft)

28

Page 29: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

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

pulse vector"שלנו: על מנת לעשות זאת היה צורך לפתח מנגנון בקצב מהיר מספיק אשרpulse vectorאשר יאפשר לעדכן את ה-

יוכל לתת חיווי על הדופק המשתנה של הנבדק. החלטנו כי עדכון ה-pulse vector 30 יהיה הפתרון האופטימלי )בקצב של 1 כל שניהfps

pulse vector פריימים חדשים(, כאשר בעת עדכון ה-30מדובר על את ממנו את 30נמחק לו ונוסיף ביותר הישנים הפריימים 30

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

ובאפרthreadsלכך היה ליצור תוכנית מקבילית תוך שימוש בשני של פריימים באופן הבא:

29

Page 30: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

)"threadה- השמאלי capture and GUI threadרץ כל הזמן )" ושומר בבאפר פריימים מהמצלמה.

"( מבצע את חישוב הדופקprocessing thread הימני )"threadה- השמאלי )רק כאשרthread פריימים חדשים ע"י ה- 30כאשר נכנסים

פריימים(. כדי לעשות זאת הוא מעתיק אותם150כבר יש ברשותו פריימים(, מוחק אותם150לבאפר שלו )באפר אחר שיכול להכיל עד

" כדי שבאפר זה יוכלcapture and GUI thread"מבאפר הפריימים של להתמלא מחדש ולבסוף מחשב את הדופק לפי הבאפר בו שמורים

את 150 ממנו מוחקים פעם )כל פריימים הישנים30 הפריימים הפריימים החדשים(.30ומוסיפים את

לשיפור רמת הדיוק - המלצה של המנחים גיל ורוןPCAשימוש ב- ● אשר גם מיושמת במס' מאמרים שעוסקים בחילוץ דופק

במאמרים שונים קראנו על טענות שונות הנוגעות לבחירת הערוץ○המתאים ביותר לדגימת הדופק.

)מס' ○ הראשי שבמאמר לגלות של1הופתענו ובדוקטורט ) רובינשטיין לא דובר כלל על בחירת ערוץ, בפרט על בחירת הערוץהדופק )חילוץ אינטואיטיבית הכי הבחירה כמו שנראה האדום

מתאפשר בעקבות מחזור זרימת הדם באזור הפנים(.)מאמר מס' Xiaobai Li, Jie Chenמעבר לכך במאמר של ○ 5)

מס' )מאמר סטנפורד מאוניברסיטת הצוות של -6ובמאמר ) בלבד - הטענה הייתה ששימוש בוgreenהומלץ להשתמש בערוץ

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

לאורךRGBתחילה נציג את ההבדלים של השתנות עצמת ערוצי ○30

Page 31: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

ערכי )בגרף מוצגים של ממוצע הפיקסלים בפרייםRGBהזמן פריימים, אלה נתונים של אדם שצולם בוידאו במצלמת150עבור

אינטרנט של מחשב נייד באמצעות הרצת הפרויקט בזמן אמת(:

( וגם ב-Cלאחר הנחייה מגיל ורון, ביצענו בקוד בזמן אמת )++○Matlab-ב שימוש PCA פירוק )ע"י SVDלמצוא את על מנת )

( הערוצים שלושת של הערכים אתRGBשילוב ייתן אשר ) ( השילוב שהתקבל האמיתי. לדופק גבוהה הכי firstהקורלציה

principal component( מוצג בגרף הבא )בו יש טעות שתובהר בהמשך(.

ב- שלאורכוPCAהשימוש המרכזי הציר את למצוא מאפשר בין השאר ובכך גדולה( הערכים משתנים הכי הרבה )שונות הכי

לסנן רעשים ולקבל מידע משוקלל של כל הערוצים.

31

Page 32: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

בגרף הבא ערוץ משוקלל זה מוצג לצד הגרף הקודם )להשוואה○נוחה יותר(:

32

Page 33: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

עקום ה- ○ ניתוח עפ"י לראות והעקומים האחרים שלPCAניתן ( כי המתאם הכי גבוה קיים בין ערוץ ה-RGBהערוצים השונים )

Green -ובין ה PCAמה שמאשש את הטענה של הצוותים ממאמר ומאמר מס' 5מס' )בהנחה ששימוש ב- 6 PCAאכן משפר את

התוצאות כפי שכתוב במס' מאמרים(. לאחר קבלת התוצאות והצגתם למנחים גיל ורון, הם הפנו אותנו○

לשים לב שהיה עלינו להשתמש באותם הנתונים אך בסדר הפוך ביןשל מטריצתtransposeהשורות והעמודות, כלומר להשתמש ב- בגודל במטריצה )להשתמש במקום nx3הנתונים 3xnכאשר

(. לכן הוטענו לחשוב קודם שהקורלציה הכי גבוהה = 150nאצלנו . בחישוב החדש, כפי שנראה בהמשך,PCAהיא בין הערוץ הירוק ל-

:PCAדווקא הערוץ האדום הוא בעל הקורלציה הגבוהה ביותר ל-

33

Page 34: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

שנדגמו,○ הנקודות היטלי עם לעבוד לנו וגיל המליצו רון בנוסף בגרפים הבאים.RGB מימדי של נקודות Fשמוצגות ב"ענן"

נקודה כל מעל הפריימים מספרי גם רשומים הראשון בגרף ולכןfps 30 פריימים נדגמו בקצב של 150)המייצגים את הזמן -

שניות(:5סה"כ הנתונים התקבלו ב-

34

Page 35: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

)מזווית אחרת( כאשר הנקודות○ בגרף השני אלה אותן הנקודות והנקודות המסומנות המסומנות בכחול הן אותן הנקודות בדיוק,

first principalבירוק אלה אותן הנקודות לאחר ההטלה בכיוון של component - pc1:

35

Page 36: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

לאחר○ שקיבלנו המרכזי הציר על הנקודות היטלי עם עבודה עםPCAהפעלת ישר על מחדש לעבוד האפשרות את נותנת

36

Page 37: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

הנקודות על החישובים את ולבצע מימדים בשני דגימה נקודות שלפיו כמוצג בגרף הבא:

מחקר על שיטות נוספות

temporal processingלפי המאמר את ה- החלפת מסנן תדרים - .1 MITיש לעשות באמצעות מסנן תדרים אידאלי כפי שכתוב במאמר מ-

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

למסנן גאוסיאני הובילה לתוצאות פחות טובות.בתמונה הבאה מתוארת אופן פעולתו של מסנן גאוסיאני לדוגמה:

37

Page 38: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

.L2 normחישוב דופק בשיטה נוספת – הפרשי וקטורי סיגנל ו- . 2הסבר קצר על השיטה:

הסיגנל של שינויי עוצמת צבע העור הוא מחזורי, למשל:

משום שהוא מעיד באופן ישיר עלTאנחנו מעוניינים למצוא את המחזור .f = 1/Tהתדר

= נקבל את קצב הדופק: frame rate Frלאחר שנתחשב גם ב-

ונחסר את סיגנל זהlag = 1כדי לעשות זאת נזיז את הסיגנל בזמן ב- מהסיגנל המקורי ללא ההזזה.

לסיגנל ההפרש.L2 Normכעת נחשב , ואח"כ גם עבורlag = 2נפעל באותו האופן עבור הזזה בזמן, הפעם ב-

lag = 3.וכן הלאה

38

Page 39: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

נשים לב שככל שהבדל הזמנים מתקרב למחזור האמיתי של האות, כך ה-L2 Normנחפש את המינימום הראשון לכן יותר. נמוך להיות צפוי

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

-0המנחים הפנו אותנו לשים לב לכך שהתוצאה לא אמורה לדעוך ל, ושכדי לפתור זאת יש לנרמל באמצעות חלוקה במס' האיברים בסיגנל

39

Page 40: GIP – Geometric Image Processing Laboratory, Technion ...gip.cs.technion.ac.il/projects/uploads/64_preport_7.docx · Web viewבהתחלה ניסינו לעבוד עם OpenCV ועם

(.L2 Normההפרש )כאשר מחשבים את סיגנל לאחר הוספת שינוי זה במימוש התמונה הקודמת נראית כך:

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

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

40

first relevantlocal minimum