Checkers Cheaters Eliran Moyal & Moti Berger

Similar documents
Practical Session No. 13 Amortized Analysis, Union/Find

ASP.Net MVC + Entity Framework Code First.

קשירות.s,t V שני צמתים,G=(V,E) קלט: גרף מכוון מ- s t ל- t ; אחרת.0 אם יש מסלול מכוון פלט: הערה: הגרף נתון בייצוג של רשימות סמיכות.

מכונת מצבים סופית תרגול מס' 4. Moshe Malka & Ben lee Volk

A R E Y O U R E A L L Y A W A K E?

המבנה הגאומטרי של מידה

Rules Game (through lesson 30) by Nancy Decker Preparation: 1. Each rule board is immediately followed by at least three cards containing examples of

מבוא לתכנות ב- JAVA תרגול 7

תצוגת LCD חיבור התצוגה לבקר. (Liquid Crystal Display) המערכת.

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 102 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 5

טכנולוגיית WPF מספקת למפתחים מודל תכנות מאוחד לחוויית בניית יישומיי

Reflection Session: Sustainability and Me


Hebrew Ulpan HEB Young Judaea Year Course in Israel American Jewish University College Initiative

Patents Basics. Yehuda Binder. (For copies contact:

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

תרגול מס' 01 אלגוריתם דיניץ

Advisor Copy. Welcome the NCSYers to your session. Feel free to try a quick icebreaker to learn their names.

A JEW WALKS INTO A BAR: JEWISH IDENTITY IN NOT SUCH JEWISH PLACES

Ron Famini, Lior Bar,

עץ תורשה מוגדר כך:שורש או שורש ושני בנים שכל אחד מהם עץ תורשה,כך שערך השורש גדול או שווה לסכום הנכדים(נכד-הוא רק בן של בן) נתון העץ הבא:

Name Page 1 of 6. דף ט: This week s bechina starts at the two dots in the middle of

תרגול 8. Hash Tables

הוראות הפעלה לשעון GG-1000 מספר מנגנון 5476

תוכן העניינים: פרק סדרות סיכום תכונות הסדרה החשבונית:... 2 תשובות סופיות:...8 סיכום תכונות הסדרה ההנדסית:...10

מדריך לניהול VPS טריפל סי מחשוב ענן בע"מ.

הצגת המשחק תלמידים משחקים סיום. פתיחה 12 min. min. min. min פתיחה. Copyright 2015

סוטמה ףא ןוויכ תיתימא ריוא תוריהמ סוטמה ביתנ תיעקרק תוריהמ

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

תושירדהו הדובעה תרדגה

מדריך למשתמש התקנה עצמית

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

A Long Line for a Shorter Wait at the Supermarket

THINKING ABOUT REST THE ORIGIN OF SHABBOS

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

תרגול 11 תור עץ חיפוש בינארי

שילוב אנימציה באתר תזוזת אלמנט לפי טיימר ולוח צירים

ANNEXURE "E1-1" FORM OF IRREVOCABLE STANDBY LETTER OF CREDIT PERFORMANCE OF CONTRACT (WHERE PRICES ARE NOT LINKED TO AN ESCALATION FORMULA)

מדריך למשתמש התקנה עצמית

שאלות חזרה לקראת מבחן מפמ"ר אינטרנט וסייבר

State Pattern מימוש מכונת מצבים (FSM) מבוא בעיה תמיכה ועדכונים עדכון מס' 48 מאי 2002

מבוא למדעי המחשב תרגיל מספר 4

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 134 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 37

קריאת גרפים. לצפייה בפתרון בווידאו לתרגילים שבחוברת, כנסו ל "קריאת גרפים" בשאלון 801 שבאתר 116

ניפוי שגיאות )Debug( מאת ישראל אברמוביץ

חוק זכויות הסוכן חוק חוזה סוכנות )סוכן מסחרי וספק(

Yetzer Shalom: Inclinations of Peace

מדריך למשתמש בשירות. yes MultiRoom

NATIONAL COUNCIL OF YOUNG ISRAEL. Shavuot Nation JEWISH EDITION. Compiled by Gabi Weinberg Teen Program Director

דיאלוג מומחז בין מרטין בובר וקרל רוג'רס

בראשית פרק טו פסוק א אחר הדברים האלה היה דבר ה' אל אברם במחזה לאמר אל תירא אברם אנכי מגן לך שכרך הרבה מאד:

Name Page 1 of 5. ,דף ד: This week s bechina starts at the bottom of שיר של חול

פתרון בעיית צביעת הגרפים בעזרת אלגוריתם גנטי ואלגוריתמי Beam-Search

Depth-First Search DFS

מושגים בסיסיים תלמידים והורים יקרים,

בוחן בתכנות בשפת C בצלחה

Genetic Tests for Partners of CF patients

Computer Structure. Exercise #1 יש להגיש את התשובות הסופיות על גבי טופס זה.

מדריך משתמש מערכת GISNet V3

WISDOM FROM ALL MY TEACHERS: CHALLENGES AND INITIATIVES IN CONTEMPORARY TORAH EDUCATION URIM Publications, 2003 Copyright ATID.

בהגדרות ה AP..connections

ראש השנה דף. 1. A) Our משנה says,... שנראה בעליל בין שלא נראה בעליל.בין Based on this,פסוק what does the word עליל mean?

מנגנון 5522 מידע על המנגנון מצב תצוגת שעה

יסודות מבני נתונים. תרגול :9 ערימה - Heap

מערכים Haim Michael. All Rights Reserved.

מבחן בגרפיקה ממוחשבת תש"ע סמסטר א' מועד א'

DNS פרק 4 ג' ברק גונן מבוסס על ספר הלימוד "רשתות מחשבים" עומר רוזנבוים 1

Name Page 1 of 7. This week s bechina starts on 26b, 29 lines from the bottom and ends at the end of 27b.

Hebrew Adjectives. Hebrew Adjectives fall into 3 categories: Attributive Predicative Substantive

ב "ה. ABC s of Judaism. Fundamentals of Jewish Thought and Practice. June 2007 Tammuz 5767 Jewish Educational Institute Chabad Brisbane

עקרונות תכנות מונחה עצמים

WHAT ATHEISM HAS LEARNED FROM RELIGION

מבוא לרשתות - תרגול מס' 11 Transparent Bridges

In the previous two classes, we discovered the spiritual dimension of our Self, the soul that

SPSS 10.0 FOR WINDOWS

מבנה ההרצאה חלק א' 1 (הסבר על הסימולטור.Torcs 2 (הסבר על תחרות EvoStar 2010 ביחד עם הדגמה של.GA חלק ב' הסבר על המאמר

רזולוציה, ,DPI משה רונן ספטמבר 2007

מבוא למחשב בשפת Matlab

אנגלית (MODULE E) בהצלחה!

WHAT IS THE PSHAT OF A METAPHORICAL MITZVAH?

חטיבת המינרלים החיוניים תתמקד בשוקי האגרו וחטיבת הפתרונות המיוחדים תשמש כחטיבה התעשייתית; כיל דשנים מיוחדים תשולב בחטיבת המינרלים החיוניים;

פרק מושגים חדשים שימוש בפונקציות לשם מה?

הקיטסיגול הרבחה יעדמל בלושמה גוחה

NJ NCSY Winter Regional פירסומי ניסא Publicizing the Miracle of Hanukah

WHERE TO GIVE Tzedakah Learning Pod Session 5 April/May 2011

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

מבוא לחישוב נומרי הכנה לקראת המבחן

הטכנולוגיה בחינוך ד ר קובי גל אוניברסיטת בן גוריון בנגב

מספר השאלון: Thinking Skills נספח: כישורי חשיבה )לפרק ראשון ושני( א נ ג ל י ת (MODULE F) ספרות )מילון הראפס אנגלי-אנגלי-ערבי(

Transgender in Halacha

סה"כ נקודות סה"כ 31 נקודות סה"כ 21 תוכן עניינים של פתרון המבחן. לולאת for )נתון אלגוריתם... מעקב, פלט

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

תוצאות סקר שימוש בטלפון

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

מבני נתונים תרגיל 4 פתרון

סוגי פניות בתוכנית הלימודים עיוני משולב מעשי 180 דקות 4 שיעורים

1. מספרים מרוכבים צורות אלגברית ווקטורית של מספרים מרוכבים. הוא זוג סדור. הגדרה 1.1. מספר מרוכב z של מספרים ממשיים. ו- y

***Place an X if Closed גמרא (if no indication, we ll assume Open חזרה (גמרא of the :דף times

חידת קופרניקוס: למה חלפו 0222 שנה עד לגילוי שכדור הארץ מסתובב סביב השמש? הרצאה של ד"ר בועז כץ

שיעור.1 בונים מבנים מקוביות

Transcription:

Checkers Cheaters Eliran Moyal & Moti Berger מבוא 1 בפרוייקט שלנו ממשנו זיהוי לוח דמקה וכלי המשחק עליו יחד עם הצגת המהלך האופטימלי במהירות רבה. המשימה התחלקה למספר תתי משימות: זיהוי לוח המשחק. זיהוי כלי המשחק. מציאת המהלך האופטימלי והצגתו. ממשק השחקן מצלם את לוח הדמקה על ידי לחיצה על המסך. לאחר מכן, יוצג במרכז המסך לוח המשחק כאשר עליו יוצג חץ אחד או יותר במרווח זמן של 055 מילישניות בין חץ לחץ על מנת להמחיש את הצעד האופטימלי. על מנת לצלם את לוח הדמקה פעם נוספת, יש ללחוץ על כפתור ה- Retry הנמצא מימין ללוח הדמקה )כפתור זה יופיע רק לאחר הצילום ויעלם לאחר לחיצה עליו(. כמו כן, על מנת לתמוך בתצורת משחק בה ישנם מלכים, יש ללחוץ על כפתור ה- Place Kings הנמצא משמאל ללוח הדמקה )כפתור זה יופיע רק לאחר הצילום(. לאחר לחיצה זו, על השחקן ללחוץ על כלי המשחק שברצונו להצהיר עליהם כמלכים. לאחר שסיים השחקן לסמן את המלכים )שלו ושל היריב(, עליו ללחוץ על כפתור ה-.Solve כפתור זה מופיע במקום כפתור ה- Place Kings לאחר שזה נלחץ. לאחר שכפתור ה- Solve נלחץ, הוא יעלם ובמקומו יופיע כפתור ה- Place Kings בשנית. הועמדה לרשות השחקן היכולת להתאים את הפרמטרים של האלגוריתם )ראה בהמשך( על מנת להתאים אותו ללוחות ותנאי תאורה משתנים. על מנת לגשת לפרמטרים אלה, על המשתמש ללחוץ על הכפתור המציג את התפריט ולבחור ב-.Settings 1 אופטימלי ביחס להיוריסטיקות שבחרנו להשתמש בהן על מנת להעריך את טיב המצב הנוכחי של הלוח.

הFLOW : 1. מסך אשר מראה את המצלמה, נלחץ על כל מקום לצילום 2. קבלת מהלך אופטימלי ע"י חץ ירוק: 3. לאחר לחיצה על סימון מלכים )PlaceKings( נוכל ללחוץ על חיילים והודעה על הפיכתם למלך תופיע

4. נלחץ על SOLVE ומהלך אופטימלי אשר מתחשב במלכים יופיע:

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

זיהוי לוח המשחק מתבצע ע"י פונקציה שלנו בשם.findCheckersBoardWithFilter הפונקציה מבצעת את הדברים הבאים: אם הפרמטר החמישי של הפונקציה )usebinaryfilterbefore( הוא,True אזי 1. מייצרת תמונה בינארית ע"י שימוש בפונקציה threshold של הספרייה Imgproc על מנת ליצור ערכים אחידים יותר בנקודות המקסימום בלי binaryfilter אם יש תאורה חזקה על צד אחד של הלוח נקודות המקסימום במקום אחד בלוח שונות ממקום אחר. בונה פילטר כפי שתואר לעיל יחד עם נורמליזציה לאיבריו חלוקה ב kernelsize^2 2/ 2. על מנת לא לחרוג מערכי הלבן )200( הפילטר הוא מהצורה: 1 1 1 1 1 1 1 1 1 1 1 1 [ 1 1 1 1 ] 20x20 כאשר המטריצה )המגדירה את הפילטר( מחולקת ל- 4 בלוקים בגודל 10x10, כאשר שני בלוקים מכילים 1 נמצאים על האלכסון הראשי ושני הבלוקים האחרים המכילים 1- נמצאים על האלכסון המשני. 3. משתמשת בפונקציה filter2d של הספרייה Imgproc על מנת להעביר את הפילטר על פני התמונה. 4. מוצאת את כל הנקודות שעברו את סף מסוים )מוגדר על ידי הפרמטר filterthresh מהקונפיגורציה, דיפולטי 255( 0. מסירה נקודות רחוקות מדי )מתייחסים אליהם כאל רעש(. הפרמטר הרביעי לפונקציה זו הוא maxdistbetweentwopoints והוא מגדיר מהו המרחק המקסימלי בין שתי נקודות )הוגדר hard-coded ל- 05 ב-,)MainActivity אם יש נקודה שנמצאת במרחק גדול מזה מנקודה אחרת היא מסוננת 6. אם בשלב הזה לא נמצאו לפחות 8 נקודות, לא ניתן יהיה למצוא את הלוח ועל כן מוצגת הודעה מתאימה לשחקן ועליו לצלם את לוח הדמקה פעם נוספת. 7. אחרת, מאתרים את ארבעת הנקודות החיצוניות ביותר ואת הנקודה הנמצאת באלכסון מכל אחת מהנקודות החיצוניות על מנת לקבל את המרחק ביניהן ולהשליך אותו לכיוון השני. המרחק הזה מהנקודות החיצוניות )בכיוון המנוגד לכיוון בו נמצאות הנקודות הפנימיות יותר( הוא המרחק אל פינות הלוח. 8. מבצעת הטלה פרספקטיבית מארבעת הנקודות הללו לארבע פינות של ריבוע בגודל 455 על 455 במטרה ליצור לוח הזהה בזוויותיו ללוח המקורי. זיהוי כלי המשחק: לאחר שזיהינו את לוח המשחק, אנו יודעים את גודלו ומכאן גם את גודלה של כל משבצת. אנחנו מניחים כי כלי המשחק שיעשה בהם שימוש אינם עולים בגודלם על המשבצות )כמובן מניחים שכלי המשחק הם בצורת עיגול(. האלגוריתם שבו השתמשנו על מנת לזהות עיגולים פועל טוב יותר כאשר ישנו חסם על גודלו של העיגול שאותו רוצים למצוא, דבר שאנו יכולים בקלות לדעת בשלב הזה. זיהוי כלי המשחק מתבצע ע"י פונקציה שלנו בשם.findAllCircles הפונקציה מקבלת את הפרמטרים הבאים: 1. תמונה של לוח המשחק לאחר עיבוד ראשוני )פלט של פונקצית זיהוי לוח המשחק(. 2. סף עבור.Canny 3. סף עבור זיהוי מרכזי העיגולים פרמטר לhoughcircles אשר מגדיר את הסף לזיהוי העיגול על פי כמות הנקודות שנמדדו מהרדיוס.

הפונקציה מחזירה רשימה של מרכזי עיגולים ורדיוס של העיגול המינימלי. זיהוי העיגולים מתבצע באופן הבא: השתמשנו בפונקציה HoughCircles של הספרייה.Imgproc נרחיב על הפרמטרים העיקריים: המרחק המינימלי בין שני עיגולים הוא 85% מגודל של משבצת. רדיוס מינימלי עבור עיגול הוא 35% מגודל של משבצת. רדיוס מקסימלי עבור עיגול הוא 45% מגודל של משבצת. - נבחר אחרי אופטימיזציות על כמה סף נמוך עבור זיהוי מרכזי העיגולים 20 תמונות כך שמזהים את השחורים ועם כמות קטנה של.false alarms בהמשך, ב-,MainActivity אנו בודקים אם פונקצית זיהוי כלי המשחק החזירה למעלה מ- 24 עיגולים. במידה וכן, אנחנו מציגים הודעה אינפורמטיבית ומפסיקים את האלגוריתם שכן מצב זה אינו תקין )מספר מקסימלי של כלי משחק בדמקה במצב תקין הוא 12 לכל שחקן(. באותה מידה, אם לא נמצאו עיגולים כלל, מוצגת הודעה אינפורמטיבית לשחקן והאלגוריתם נעצר. מציאת המהלך האופטימלי והצגתו: מימשנו את אלגוריתם החיפוש Minimax ואת האופטימיזציה שלו.Alpha-Beta כמו כן, הגדרנו מספר יוריסטיקות: ככל שכמות כלי משחק רבים יותר, כך מצב משחק טוב יותר. ככל שיש יותר כלי משחק בסכנת אכילה, כך מצב המשחק רע יותר. ככל שהשחקנים נמצאים קרוב יותר לבית של היריב וככל שיש יותר מלכים, כך מצב המשחק טוב יותר. הגדרנו היוריסטיקה נוספת המשלבת את שלושת היוריסטיקות הללו כאשר השפעתה של כל יוריסטיקה על התוצאה הסופית הוא שונה. באלגוריתם החיפוש אנו מסתכלים כברירת מחדל 4 מהלכים קדימה )ניתן לשינוי במסך ההגדרות( על מנת לא לעכב את תצוגת המהלך האופטימלי לשחקן. במידה ולשחקן יש מהלך אותו הוא יכול לבצע, תוצג לו אנימציה של המהלך באמצעות חצים. הצגת המהלך: אנו טוענים תמונה של חץ הנמצא בזווית של 40 מעלות נגד כיוון השעון. מכיוון שמהלך הוא רשימה של צעדים )כאשר צעד מוגדר כהתקדמות למשבצת קרובה או אכילה של כלי משחק אחד של השחקן היריב(, עבור כל אחד מהם אנחנו מחשבים את הזווית של הצעד ומסובבים את תמונת החץ בהתאם. סיבוב התמונה נעשה ע"י בניית מטריצת סיבוב באמצעות הפונקציה getrotationmatrix2d של הספרייה Imgproc והסיבוב עצמו ע"י הפונקציה warpaffine של הספרייה.Imgproc לאחר מכן, אנחנו מרחיבים את התמונה של החץ לאחר הסיבוב כך שהיא תהיה בגודל של תמונת הלוח. ההרחבה נעשית באמצעות הפונקציה copymakeborder של הספרייה.Imgproc הצמדת התמונה של החץ על תמונת לוח המשחק נעשית באמצעות הפונקציה.Core של הספרייה addweighted

תוצאות ומגבלות מגבלות האלגוריתם: כאשר הזווית בין הנורמל של לוח הדמקה לבין המצלמה היא גדולה מדי האלגוריתם מתקשה לזהות את העיגולים השחורים. יש לצלם כך שהמצלמה יחסית אנכית ללוח ולא הפילטר לא יעבוד. כאשר אין מספיק תאורה לא ניתן לזהות את המתאר של עיגולים שחורים על שחור. ביבליוגרפיה ויקיפדיה מצגות הקורס http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_circle/hough _circle.html