OpenCV، وهي اختصار لمكتبة الرؤية الحاسوبية مفتوحة المصدر، هي مكتبة قوية ومتعددة الاستخدامات مفتوحة المصدر تُستخدم على نطاق واسع في الذكاء الاصطناعي (AI) والتعلم الآلي (ML). وهي توفر مجموعة شاملة من الأدوات والخوارزميات المصممة خصيصًا لمهام الرؤية الحاسوبية في الوقت الحقيقي ومعالجة الصور وتحليل الفيديو. بالنسبة لممارسي تعلّم الآلة، يعمل OpenCV كمجموعة أدوات أساسية للتعامل مع البيانات المرئية، مما يتيح المهام بدءًا من تحميل الصور الأساسية ومعالجتها إلى فهم المشهد المعقد. وتعزز طبيعته مفتوحة المصدر، التي تحتفظ بها OpenCV.org، مجتمعًا كبيرًا وتطويرًا مستمرًا، مما يجعله تقنية أساسية في هذا المجال. وهي متاحة بسهولة عبر العديد من المنصات بما في ذلك ويندوز ولينكس وماك أو إس Android iOS وتوفر واجهات للغات مثل Python وC++C وJava وMATLAB.
الملاءمة في الذكاء الاصطناعي والتعلم الآلي
يلعب OpenCV دورًا حاسمًا في خط أنابيب الذكاء الاصطناعي والتعلم الآلي، خاصةً عند التعامل مع المدخلات المرئية. فهو يوفر أدوات أساسية للمعالجة المسبقة للبيانات، وهي خطوة حاسمة قبل إدخال الصور أو مقاطع الفيديو في نماذج التعلم الآلي. تتضمن خطوات المعالجة المسبقة الشائعة التي يعالجها OpenCV تغيير الحجم، وتحويل مساحة اللون (مثل BGR إلى RGB، وغالبًا ما تكون ضرورية للنماذج المدربة على أوامر ألوان محددة)، وتقليل الضوضاء باستخدام مرشحات مثل الضبابية الغاوسية، وتطبيق تحويلات مختلفة لتحسين جودة الصورة أو استخراج الميزات ذات الصلة. تؤثر هذه المعالجة المسبقة بشكل كبير على أداء نماذج التعلم العميق (DL).
يُستخدم OpenCV بشكل متكرر مع أطر عمل التعلم الآلي الشائعة مثل PyTorch و TensorFlow لبناء تطبيقات السيرة الذاتية المتكاملة. في حين تركز هذه الأطر على بناء الشبكات العصبية وتدريبها، يتعامل OpenCV مع المدخلات/المخرجات والمعالجة وغالبًا ما يعالج البيانات المرئية بعد المعالجة، مثل رسم المربعات المحدودة أو أقنعة التجزئة التي تتنبأ بها نماذج مثل Ultralytics YOLO. إن كفاءته في معالجة تدفقات الفيديو في الوقت الفعلي تجعله لا غنى عنه للتطبيقات التي تتطلب تحليلاً مرئيًا فوريًا، مثل الاستدلال في الوقت الفعلي لاكتشاف الأجسام أو تقدير الوضع.
الميزات والقدرات الرئيسية
يوفر OpenCV مجموعة واسعة من الوظائف (أكثر من 2500 خوارزمية)، تغطي كلاً من تقنيات الرؤية الحاسوبية الكلاسيكية ودعم تكامل التعلم العميق الحديث. تشمل القدرات الرئيسية ما يلي:
- إدخال/إخراج الصور والفيديو: قراءة وكتابة مختلف الصور(JPEG، PNG، TIFF) وتنسيقات الفيديو(AVI، MP4).
- معالجة الصور: العمليات الأساسية مثل تغيير الحجم، والقص(انظر دليل اقتصاص الكائنات)، والتدوير، وتحويلات مساحة اللون، والتصفية، والتحويلات المورفولوجية.
- اكتشاف الميزات ووصفها: تنفيذ خوارزميات مثل SIFT و SURF (خوارزميات مملوكة وغالبًا ما يتم استبدالها بـ ORB في الإصدارات الحديثة) و FAST لتحديد النقاط الرئيسية في الصور.(وثائق كشف ميزات OpenCV).
- اكتشاف الكائنات: على الرغم من أنه لا يقوم بتدريب النماذج بنفسه، إلا أنه يوفر أدوات لتشغيل أجهزة الكشف المدربة مسبقًا (مثل شلالات Haar للكشف عن الوجوه) ومعالجة المخرجات من نماذج DL (مثل رسم المربعات من YOLO11 تنبؤات).
- تحليل الفيديو: يتضمن أدوات لتحليل الحركة مثل التدفق البصري، وطرح الخلفية، وخوارزميات تتبع الأجسام(انظر وضع التتبع).
- معايرة الكاميرا وإعادة البناء ثلاثي الأبعاد: وظائف لفهم هندسة الكاميرا وإعادة بناء المشاهد ثلاثية الأبعاد(دليل معايرة الكاميرا).
- وحدة التعلم الآلي: يتضمن تطبيقات لبعض خوارزميات التعلم الآلي الكلاسيكية مثل آلات دعم المتجهات (SVM) و K-Nearest Neighbours (KNN)، على الرغم من أن مهام التعلم العميق تعتمد عادةً على أطر عمل مخصصة. كما يوفر أيضًا وظائف لتحميل وتشغيل النماذج المصدرة بتنسيقات مثل ONNX.(وثائق تصدير النماذج).
OpenCV مقابل المفاهيم ذات الصلة
من المفيد التمييز بين OpenCV والمصطلحات ذات الصلة:
- الرؤية الحاسوبية (CV): السيرة الذاتية هي المجال العلمي الواسع المعني بتمكين الآلات من تفسير المعلومات المرئية. OpenCV هو أداة أو مكتبة تستخدم لتنفيذ تطبيقات السيرة الذاتية، وليس المجال نفسه.
- معالجة الصور: يركز هذا بشكل أساسي على معالجة الصور (مثل تحسين التباين وإزالة الضوضاء). يوفر OpenCV وظائف معالجة صور واسعة النطاق ولكنه يتضمن أيضًا مهام ذات مستوى أعلى مثل التعرف على الأشياء وفهم المشهد، والتي تندرج تحت رؤية الكمبيوتر.
- أطر تعلم الآلة (PyTorch و TensorFlow): صُممت هذه الأطر في المقام الأول لبناء وتدريب ونشر الشبكات العصبية ونماذج التعلم الآلي الأخرى. يكمل OpenCV هذه الأطر من خلال توفير الأدوات الأساسية للتعامل مع البيانات المرئية قبل إدخالها في النموذج (المعالجة المسبقة) وبعد الاستدلال (التصور وما بعد المعالجة). على الرغم من أن OpenCV لديه بعض قدرات التعلم الآلي، إلا أنه ليس محور تركيزه الأساسي مقارنةً بهذه الأطر المخصصة. يستخدم Ultralytics HUB، على سبيل المثال، أطر عمل مثل PyTorch لتدريب النموذج وقد يستخدم OpenCV ضمنيًا أو صراحةً لمعالجة البيانات.
التطبيقات الواقعية
إن تعدد استخدامات OpenCV يجعلها موجودة في كل مكان في العديد من تطبيقات الذكاء الاصطناعي/تعلم الآلة:
- المركبات ذاتية القيادة: في السيارات ذاتية القيادة وأنظمة مساعدة السائق المتقدمة (ADAS)، غالبًا ما يُستخدم OpenCV للمعالجة الأولية لبيانات الكاميرا و LiDAR. تشمل المهام اكتشاف المسارات، والتعرف على العوائق من خلال مطابقة الميزات أو اكتشاف الكفاف، والتعرف على إشارات المرور (غالبًا ما يتم تغذية الصور المعالجة إلى مصنف)، ودمج الصور لأنظمة الرؤية المحيطية. على سبيل المثال، قد تتم معالجة إطارات الكاميرا الخام مسبقًا (تصحيح التشويه وتعديل السطوع) باستخدام OpenCV قبل إدخالها في نموذج تعلّم عميق مثل YOLOv8 لاكتشاف السيارات والمشاة.(استكشف تقنية Waymo).
- تحليل الصور الطبية: يساعد OpenCV في تحميل تنسيقات التصوير الطبي المختلفة (مثل DICOM، وغالبًا بمساعدة مكتبات أخرى)، وتحسين تباين الصور لرؤية أفضل للعيوب الشاذة، وتجزئة المناطق ذات الأهمية (مثل الأورام أو الأعضاء) باستخدام تقنيات مثل خوارزميات العتبة أو خوارزميات مستجمعات المياه، وتسجيل الصور الملتقطة في أوقات مختلفة أو من طرائق مختلفة. ثم يتم تحليل هذه البيانات التي تمت معالجتها مسبقًا في كثير من الأحيان بواسطة نماذج متخصصة في التعلم الآلي للتشخيص أو تخطيط العلاج.(الذكاء الاصطناعي في الأشعة - RSNA).
تشمل التطبيقات الأخرى الروبوتات(دمج الرؤية الحاسوبية في الروبوتات)، والمراقبة(أنظمة الإنذار الأمني)، والواقع المعزز، ومراقبة الجودة في التصنيع، والزراعة (على سبيل المثال، مراقبة صحة المحاصيل). توفر وثائقUltralytics العديد من الأمثلة حيث يمكن استخدام وظائف OpenCV لخطوات ما قبل أو بعد المعالجة بالاقتران مع نماذج YOLO .