AI-For-Beginners/translations/he/lessons/4-ComputerVision/06-IntroCV
leestott 07e1ffa96b 🌐 Update translations via Co-op Translator 2025-08-28 22:12:36 +00:00
..
lab 🌐 Update translations via Co-op Translator 2025-08-28 22:12:36 +00:00
OpenCV.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 22:12:36 +00:00
README.md 🌐 Update translations via Co-op Translator 2025-08-28 22:12:36 +00:00

README.md

מבוא לראייה ממוחשבת

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

שאלון לפני ההרצאה

אחת המשימות הפשוטות ביותר בראייה ממוחשבת היא סיווג תמונות.

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

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

ישנן מספר ספריות Python זמינות לעיבוד תמונה:

  • imageio משמשת לקריאה/כתיבה של פורמטים שונים של תמונות. היא גם תומכת ב-ffmpeg, כלי שימושי להמרת פריימים של וידאו לתמונות.
  • Pillow (המוכרת גם כ-PIL) היא חזקה יותר, ותומכת גם במניפולציות על תמונות כמו עיוותים, התאמות פלטה, ועוד.
  • OpenCV היא ספריית עיבוד תמונה חזקה שנכתבה ב-C++, והפכה לסטנדרט דה-פקטו לעיבוד תמונה. יש לה ממשק נוח ב-Python.
  • dlib היא ספריית C++ שמיישמת אלגוריתמים רבים של למידת מכונה, כולל כמה אלגוריתמים של ראייה ממוחשבת. יש לה גם ממשק Python, והיא יכולה לשמש למשימות מאתגרות כמו זיהוי פנים ונקודות ציון בפנים.

OpenCV

OpenCV נחשבת לסטנדרט דה-פקטו לעיבוד תמונה. היא מכילה הרבה אלגוריתמים שימושיים, המיושמים ב-C++. ניתן להשתמש ב-OpenCV גם מ-Python.

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

טעינת תמונות

תמונות ב-Python מיוצגות בצורה נוחה על ידי מערכים של NumPy. לדוגמה, תמונות בגווני אפור בגודל 320x200 פיקסלים יאוחסנו במערך בגודל 200x320, ותמונות צבעוניות באותו גודל יהיו בעלות צורה של 200x320x3 (עבור 3 ערוצי צבע). כדי לטעון תמונה, ניתן להשתמש בקוד הבא:

import cv2
import matplotlib.pyplot as plt

im = cv2.imread('image.jpeg')
plt.imshow(im)

באופן מסורתי, OpenCV משתמשת בקידוד BGR (כחול-ירוק-אדום) לתמונות צבע, בעוד שאר הכלים ב-Python משתמשים בקידוד RGB (אדום-ירוק-כחול) המסורתי יותר. כדי שהתמונה תיראה נכון, יש להמיר אותה למרחב הצבעים RGB, או על ידי החלפת ממדים במערך NumPy, או על ידי קריאה לפונקציה של OpenCV:

im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)

אותה פונקציה cvtColor יכולה לשמש גם לביצוע המרות אחרות של מרחבי צבע, כמו המרת תמונה לגווני אפור או למרחב הצבעים HSV (גוון-רוויה-ערך).

ניתן גם להשתמש ב-OpenCV לטעינת פריימים של וידאו אחד-אחד - דוגמה לכך ניתנת בתרגיל OpenCV Notebook.

עיבוד תמונה

לפני שמעבירים תמונה לרשת נוירונים, ייתכן שתרצו לבצע מספר שלבי עיבוד מקדים. OpenCV יכולה לבצע פעולות רבות, כולל:

  • שינוי גודל התמונה באמצעות im = cv2.resize(im, (320,200),interpolation=cv2.INTER_LANCZOS)
  • טשטוש התמונה באמצעות im = cv2.medianBlur(im,3) או im = cv2.GaussianBlur(im, (3,3), 0)
  • שינוי בהירות וניגודיות של התמונה ניתן לבצע באמצעות מניפולציות על מערכי NumPy, כפי שמתואר בהערה הזו ב-Stackoverflow.
  • שימוש ב-סף על ידי קריאה לפונקציות cv2.threshold/cv2.adaptiveThreshold, שלעיתים קרובות עדיף על התאמת בהירות או ניגודיות.
  • יישום שינויים גיאומטריים שונים על התמונה:
    • שינויים אפיניים יכולים להיות שימושיים אם צריך לשלב סיבוב, שינוי גודל ועיוות בתמונה, ויודעים את מיקום המקור והיעד של שלוש נקודות בתמונה. שינויים אפיניים שומרים על קווים מקבילים.
    • שינויים פרספקטיביים יכולים להיות שימושיים כאשר יודעים את מיקום המקור והיעד של 4 נקודות בתמונה. לדוגמה, אם מצלמים מסמך מלבני באמצעות מצלמת סמארטפון מזווית מסוימת, ורוצים ליצור תמונה מלבנית של המסמך עצמו.
  • הבנת תנועה בתוך התמונה באמצעות זרימה אופטית.

דוגמאות לשימוש בראייה ממוחשבת

ב-OpenCV Notebook שלנו, אנו מציגים דוגמאות לשימוש בראייה ממוחשבת לביצוע משימות ספציפיות:

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

תמונה מתוך OpenCV.ipynb

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

תמונה של פריימים והפרשי פריימים

תמונה מתוך OpenCV.ipynb

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

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

תמונה של זרימה אופטית

תמונה מתוך OpenCV.ipynb

✍️ מחברות לדוגמה: OpenCV נסו את OpenCV בפעולה

בואו נעשה ניסויים עם OpenCV על ידי חקירת OpenCV Notebook.

סיכום

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

🚀 אתגר

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

שאלון לאחר ההרצאה

סקירה ולימוד עצמי

קראו עוד על זרימה אופטית במדריך המצוין הזה.

משימה

במעבדה זו, תצלמו וידאו עם מחוות פשוטות, והמטרה שלכם היא לחלץ תנועות למעלה/למטה/שמאלה/ימינה באמצעות זרימה אופטית.

תנועת כף יד

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