|
|
||
|---|---|---|
| .. | ||
| lab | ||
| OpenCV.ipynb | ||
| README.md | ||
README.md
مقدمة إلى رؤية الحاسوب
رؤية الحاسوب هي مجال يهدف إلى تمكين الحواسيب من فهم الصور الرقمية على مستوى عالٍ. هذا تعريف واسع جدًا، لأن الفهم يمكن أن يعني أشياء مختلفة، مثل العثور على كائن في صورة (اكتشاف الكائنات)، فهم ما يحدث (اكتشاف الأحداث)، وصف الصورة بالنص، أو إعادة بناء مشهد ثلاثي الأبعاد. هناك أيضًا مهام خاصة تتعلق بصور البشر: تقدير العمر والمشاعر، اكتشاف وتحديد الوجوه، وتقدير الوضعية ثلاثية الأبعاد، على سبيل المثال.
اختبار ما قبل المحاضرة
واحدة من أبسط مهام رؤية الحاسوب هي تصنيف الصور.
غالبًا ما تُعتبر رؤية الحاسوب فرعًا من الذكاء الاصطناعي. في الوقت الحاضر، يتم حل معظم مهام رؤية الحاسوب باستخدام الشبكات العصبية. سنتعلم المزيد عن النوع الخاص من الشبكات العصبية المستخدمة في رؤية الحاسوب، الشبكات العصبية التلافيفية، خلال هذا القسم.
ومع ذلك، قبل تمرير الصورة إلى شبكة عصبية، في كثير من الحالات يكون من المنطقي استخدام بعض التقنيات الخوارزمية لتحسين الصورة.
هناك العديد من مكتبات بايثون المتاحة لمعالجة الصور:
- imageio يمكن استخدامها لقراءة/كتابة تنسيقات الصور المختلفة. كما تدعم ffmpeg، وهي أداة مفيدة لتحويل إطارات الفيديو إلى صور.
- Pillow (المعروفة أيضًا باسم PIL) أكثر قوة، وتدعم أيضًا بعض التلاعبات بالصور مثل التشويه، وضبط الألوان، والمزيد.
- OpenCV مكتبة قوية لمعالجة الصور مكتوبة بلغة C++، وأصبحت المعيار الفعلي لمعالجة الصور. لديها واجهة بايثون مريحة.
- dlib مكتبة C++ تنفذ العديد من خوارزميات التعلم الآلي، بما في ذلك بعض خوارزميات رؤية الحاسوب. لديها أيضًا واجهة بايثون، ويمكن استخدامها لمهام صعبة مثل اكتشاف الوجوه ومعالم الوجه.
OpenCV
تُعتبر OpenCV المعيار الفعلي لمعالجة الصور. تحتوي على العديد من الخوارزميات المفيدة، المطبقة بلغة C++. يمكنك أيضًا استدعاء OpenCV من بايثون.
مكان جيد لتعلم OpenCV هو دورة تعلم OpenCV. في منهجنا، هدفنا ليس تعلم OpenCV، بل عرض بعض الأمثلة على كيفية استخدامها ومتى.
تحميل الصور
يمكن تمثيل الصور في بايثون بسهولة باستخدام مصفوفات NumPy. على سبيل المثال، الصور ذات التدرج الرمادي بحجم 320x200 بكسل يتم تخزينها في مصفوفة بحجم 200x320، بينما الصور الملونة بنفس الأبعاد سيكون لها شكل 200x320x3 (لثلاث قنوات لونية). لتحميل صورة، يمكنك استخدام الكود التالي:
import cv2
import matplotlib.pyplot as plt
im = cv2.imread('image.jpeg')
plt.imshow(im)
تقليديًا، تستخدم OpenCV ترميز BGR (أزرق-أخضر-أحمر) للصور الملونة، بينما تستخدم بقية أدوات بايثون الترميز الأكثر شيوعًا 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، وهو غالبًا ما يكون مفضلًا على ضبط السطوع أو التباين. - تطبيق تحويلات مختلفة على الصورة:
- التحويلات الخطية يمكن أن تكون مفيدة إذا كنت بحاجة إلى دمج الدوران، تغيير الحجم، وتشويه الصورة وتعرف مواقع المصدر والوجهة لثلاث نقاط في الصورة. التحويلات الخطية تحافظ على الخطوط المتوازية.
- التحويلات المنظورية يمكن أن تكون مفيدة عندما تعرف مواقع المصدر والوجهة لأربع نقاط في الصورة. على سبيل المثال، إذا التقطت صورة لوثيقة مستطيلة باستخدام كاميرا هاتف ذكي من زاوية معينة، وترغب في جعل الصورة مستطيلة للوثيقة نفسها.
- فهم الحركة داخل الصورة باستخدام التدفق البصري.
أمثلة على استخدام رؤية الحاسوب
في OpenCV Notebook، نقدم بعض الأمثلة على كيفية استخدام رؤية الحاسوب لأداء مهام محددة:
- معالجة صورة لكتاب بطريقة برايل. نركز على كيفية استخدام التقسيم العتبي، اكتشاف الميزات، التحويل المنظوري، وتلاعبات NumPy لفصل رموز برايل الفردية لتصنيفها لاحقًا بواسطة شبكة عصبية.
![]() |
![]() |
![]() |
|---|
صورة من OpenCV.ipynb
- اكتشاف الحركة في الفيديو باستخدام الفرق بين الإطارات. إذا كانت الكاميرا ثابتة، فإن الإطارات من تغذية الكاميرا يجب أن تكون متشابهة جدًا. بما أن الإطارات تمثل كمصفوفات، فقط عن طريق طرح تلك المصفوفات لإطارين متتاليين سنحصل على الفرق بين البكسلات، والذي يجب أن يكون منخفضًا للإطارات الثابتة، ويزداد عندما تكون هناك حركة كبيرة في الصورة.
صورة من OpenCV.ipynb
-
اكتشاف الحركة باستخدام التدفق البصري. التدفق البصري يسمح لنا بفهم كيفية تحرك البكسلات الفردية في إطارات الفيديو. هناك نوعان من التدفق البصري:
- التدفق البصري الكثيف يحسب الحقل المتجهي الذي يظهر لكل بكسل إلى أين يتحرك.
- التدفق البصري المتناثر يعتمد على أخذ بعض الميزات المميزة في الصورة (مثل الحواف)، وبناء مسارها من إطار إلى آخر.
صورة من OpenCV.ipynb
✍️ دفاتر أمثلة: OpenCV جرب OpenCV عمليًا
لنقم ببعض التجارب مع OpenCV من خلال استكشاف OpenCV Notebook
الخاتمة
في بعض الأحيان، يمكن حل مهام معقدة نسبيًا مثل اكتشاف الحركة أو اكتشاف أطراف الأصابع باستخدام رؤية الحاسوب فقط. لذلك، من المفيد جدًا معرفة التقنيات الأساسية لرؤية الحاسوب، وما يمكن أن تفعله مكتبات مثل OpenCV.
🚀 التحدي
شاهد هذا الفيديو من برنامج AI Show لتتعرف على مشروع Cortic Tigers وكيف قاموا ببناء حل قائم على الكتل لتبسيط مهام رؤية الحاسوب عبر روبوت. قم ببعض البحث عن مشاريع أخرى مشابهة تساعد في إدخال المتعلمين الجدد إلى هذا المجال.
اختبار ما بعد المحاضرة
المراجعة والدراسة الذاتية
اقرأ المزيد عن التدفق البصري في هذا الدليل الرائع.
التكليف
في هذا المختبر، ستقوم بتصوير فيديو يحتوي على إيماءات بسيطة، وهدفك هو استخراج حركات أعلى/أسفل/يسار/يمين باستخدام التدفق البصري.
إخلاء المسؤولية:
تم ترجمة هذا المستند باستخدام خدمة الترجمة الآلية Co-op Translator. بينما نسعى لتحقيق الدقة، يرجى العلم أن الترجمات الآلية قد تحتوي على أخطاء أو معلومات غير دقيقة. يجب اعتبار المستند الأصلي بلغته الأصلية هو المصدر الموثوق. للحصول على معلومات حساسة أو هامة، يُوصى بالاستعانة بترجمة بشرية احترافية. نحن غير مسؤولين عن أي سوء فهم أو تفسيرات خاطئة ناتجة عن استخدام هذه الترجمة.




