מסמך מסכם :תופי טם-טם המשתתפים בפרויקט: תם הוברמן – hubermant@gmail.com דן איבגי – danevgi@gmail.com פירוט על הרעיון: תופי טם-טם הם זוג תופים שלכל שני צלילים שונים שהוא יכול להפיק כתלות במיקום המכה שנותנים לתוף .מטרת הפרויקט שלנו הייתה לדמות תיפוף בתופים אלו בעזרת מכשיר הטלפון .השימוש באפליקציה יעשה ע"י הצבה של המכשיר עם המצלמה מופנית כלפי מעלה ,והשמעת קולות בהתאם לתנועות תיפוף שתתבצע מעל המכשיר. -1תופי טם-טם להמחשה -2דוגמה לשימוש באפליקציה ממשק: הממשק לאפליקציה הוא מינימלי ביותר .מרגע בחירת האפליקציה יהפוך המסך הקדמי למצלמה מרגע זה יש להפנות את המסך כלפי מעלה (לעבר התקרה) ולהציב את הידיים מעליו. כעת ניתן לראות שהאפליקציה מזהה נכון את הידיים (כל יד מוקפת בצבע שונה) מרגע זה ניתן לבצע תנועת תיפוף והרעש המתאים יושמע. אפשר לשים לב לשני אלמנטים בממשק שנועדו לפיתוח והבנת האפליקציה ,הראשון הוא סימון מרכזי המאסה של כל יד (דבר שמאפשר לנו להעריך באיזה תוף מדובר – ראו סעיף "מימוש") , והשני הוא הצגת נתוני המצלמה .נתוני המצלמה מאפשרים לנו לבדוק את יעילות האלגוריתמים בהם אנו משתמשים על מנת לזהות את התיפוף ובעזרתם שומרים אנו על כך שהאפליקציה תרוץ בזמן אמת. מימוש: על מנת לבצע את המשימה החלטנו לפרק אותה לכמה שלבים: .1 .2 .3 .4 .5 הרכשת התמונה מהמצלמה למכשיר ביצוע סגמנטציה עבור הידיים ניתוח הסגמנטים שהתקבלו על מנת לזהות כל יד ומעל איזה "תוף" היא נמצאת זיהוי מגמת התנועה של היד – האם היד מתקדמת לעבר התוף או מתרחקת ממנו. השמעת צליל התוף המתאים בהינתן זיהוי מכה. השלבים הראשון והאחרון הם שלבים ללא עיבוד תמונה ועיקרם עבודה מול ה frameworkשמערכת ההפעלה מספקת. את יתר השלבים האחרים ניסינו לממש במספר צורות שונות ,ולשלב בניהן תוך כדי שמירה על מאפייני הפתרון הנדרשים (שעיקרם עיבוד התמונה בקצב מהיר ,ושמירה על פתרון שעמיד בתנאי תקרה שונים). עבור סגמנטציה של הידיים מהרקע העברנו את התמונה לגווני אפור ,הפעלנו פעולת טשטוש על מנת להוריד רעשים והפכנו את התמונה לשחור לבן לפי קביעת ערך סף לרמת האפור שהתקבלה. לאחר מכן הנחנו שהידיים יהיו שני הקונטורים הגדולים ביותר שהתקבלו בתמונה לאחר העיבוד -וכך מצאנו אותם. את זיהוי מיקום היד מעל התופים ביצענו ע"י חישוב מרכז המאסה של כל יד והבנה מעל איזה חלק של התמונה הוא מתקבל (צד ימין או צד שמאל) .את חישוב מרכז המאסה ביצענו ע"י חישוב המומנט של הפיקסלים המייצגים את היד. את זיהוי מגמת היד ביצענו על ידי מעקב אחרי גודל השטח (כמות הפיקסלים) של כל אחת מהידיים. כאשר ההנחה היא שגודל השטח בין שתי תמונות של יד מסוימת גדל היד מתקדמת לעבר המצלמה וכאשר הוא קטן היא מתרחקת .תחת הנחה זו אנו יודעים "להכות בתוף" כאשר הגודל משנה מגמה מגדל לקטן .לאחר ניסויים עם הנחה זו גילנו שהיא אינה תואמת את המציאות תמיד – גדלי הידיים נוטים להשתנות גם כשכלל לא מתבצעת תנועה מכוונת של הידיים .בשל כך הוספנו בדיקה לפני החלטה על שינוי מגמה של יד מסוימת הבודקת שההפרש בין הגודל הקודם של היד לערך החדש עובר סף מסוים. על מנת לשמור על ביצוע תהליך עיבוד התמונה בזמן אמת אנחנו דואגים להקטין את התמונה לפני תהליך העיבוד (כרגע הקטנת התמונה היא בסדר גודל של פי 11מהתמונה המקורית). תוצאות: עקב אופיי של הפרויקט -לא נוכל להראות את התוצאה הסופית (כי את התוצאה הסופית ניתן רק לשמוע) ,ולכן נציג הדגמות של השלבים השונים: .1הדגמה של תהליך הסגמנטציה של הידיים: .2הדגמה של תהליך זיהוי מרכז המאסה של כל יד והבדלה בין צד ימין לצד שמאל: מגבלות: לאפליקציה מספר מגבלות עקב ההנחות שנקטנו במהלך הפיתוח. .1בתהליך הסגמנטציה ,ההנחות שהידיים יעברו את השלב של הפעלת ערך סף ,או שהידיים הם שני הקונטורים הגדולים ביותר לעיתים מתגלות כלא נכונות. 1מקרה בו זוהה אובייקט אחר כיד 2מקרה בו עקב ביצוע ערך הסף היד "התחברה" עם אובייקט אחר .2בתהליך מעקב אחר מגמת היד ,לעיתים ערך הסף שהוספנו על מנת למנוע הרעשה עקב שינויים בקנה מידה קטן מונעים השמעה נכונה של צלילים. 3מקרה בו אצבעות היד חרגו מהתמונה -אפקט שמקטין את שטח היד למרות שהתנועה היא לכיוון המצלמה 4מקרה בו היד רחוקה מידי מהמצלמה ולכן השינוי בשטח כף היד עקב התיפוף קטן מערך הסף שנקבע :מקורות 9 OpenCV Tutorials for Hand Gesture Detection and Recognition http://www.intorobotics.com/9-opencv-tutorials-hand-gesture-detectionrecognition/ OpenCV's API documentation http://docs.opencv.org Google's Android API http://developer.android.com/training/index.html
© Copyright 2024