فهرست محتوا
برای پاسخ به سوال اینکه OpenCV چیست؟ اجازه دهید ابتدا بینایی کامپیوتر را مورد بررسی قرار دهیم. بینایی کامپیوتر فرآیندی است که از طریق آن ما میتوانیم توسط کامپیوتر درکی از تصاویر و فیلمها داشته باشیم. اینکه آنها چگونه ذخیرهشدهاند و ما چطور میتوانیم دادهها را دریافت و آنها را دستکاری کنیم. بینایی کامپیوتر اساس و یا بهصورت گستردهای در هوش مصنوعی مورداستفاده قرار میگیرد. بینایی کامپیوتر نقش به سزایی در خودروهای خودران، روباتیک و همچنین در برنامههای اصلاح تصویر دارد. یکی از کتابخانههای مورداستفاده در حوزه بینایی کامپیوتر OpenCV است.
OpenCV کتابخانهای عظیم و متنباز برای بینایی کامپیوتر، یادگیری ماشین و پردازش تصویر است که اکنون نقش اصلی را در انجام عملیات به لحظه در سامانهها ایفا میکند. بدینوسیله میتوان تصاویر و فیلمها را برای تشخیص اشیا، چهره یا دست خط مورد پردازش قرارداد. OpenCV با کتابخانههای متنوعی مانند Numpy یکپارچه میشود. کتابخانههای پایتون قادر هستند تا ساختار آرایههای OpenCV را مورد تجزیهوتحلیل قرار دهند. بهمنظور تشخیص الگوی تصویر و ویژگیهای متفاوت ما از فضای وکتور و عملیات ریاضی بر روی ویژگیها استفاده میکنیم.
نسخه ۱.۰ از OpenCV تحت گواهی BSD صادر شد که برای هر دو کاربرد دانشگاهی و تجاری رایگان است. OpenCV دارای پشتیبانی از زبانهای C++، C، پایتون و جاوا اسکریپت است و از سیستمعاملهای ویندوز، لینوکس، مک، iOS و اندروید پشتیبانی میکند. OpenCV طراحیشده است تا تمرکز اصلی آن بر روی برنامههای به لحظه (بلادرنگ) و پردازش مؤثر باشد. همهچیز تحت زبان C/C++ بهینهشده برای برخورداری از پردازش چندهستهای است.
از تصویر اصلی بالا، دادههای بسیاری میتواند استخراج نمود. مانند تعداد پا، نوع مجسمه، چهره و …
OpenCV در سال ۱۹۹۹ توسط گری برادسکی در اینتل متولد شد. نخستین نسخه OpenCV در سال ۲۰۰۰ منتشر شد. وادیم به گری برای مدیریت تیم روسی نرمافزار OpenCV ملحق شد. OpenCV در سال ۲۰۰۵ در پروژه خودرو Stanley به کار برده شد؛ جایی که توانست جایزه رقابت DARPA Grand را از آن خود کند. سپس توسعه OpenCV تحت نظر ویلو گاراج و گری برادسکی و وادیم پیساروسکی ادامه یافت. هماکنون OpenCV الگوریتمهای مختلفی در حوزه بینایی کامپیوتر و یادگیری ماشین پشتیبانی میکند و روزبهروز بر گستره آن افزوده میشود.
مسئلههای زیادی است که میتوان آنها را توسط OpenCV حل نمود. بعضی از آنها در زیر فهرست شدهاند:
پردازش تصویر روشی برای اجرای عملیات مخصوص بر روی تصویر بهمنظور دریافت تصویر بهینهشده و یا استخراج اطلاعات مفید از تصویر است. اگر ما درباره اساس تعریفی پردازش تصویر صحبت کنیم. پس پردازش تصویر عبارت از آنالیز و دستکاری تصویر دیجیتال، مخصوصاً برای دستیابی به کیفیت بالاتر است.
ازآنجاییکه تصویر ممکن است توسط تابع دوبعدی f(x, y) تعریف شود. جایی که x و y مختصات فضایی تصویر هستند و دامنه هر جفت نقطه (x, y) ، شدت یا سطح خاکستری آن نقطه از تصویر نامیده میشود.
بهعبارتدیگر یک تصویر چیزی فراتر از ماتریس دوبعدی نیست (سهبعدی در مورد تصاویر رنگی) که توسط توابع ریاضی f(x, y) در هر نقطهای که مقدار پیکسل تصویر دادهشده است؛ تعریف میگردد. مقدار پیکسل تعریف میکند که هر پیکسل چقدر باید روشن باشد و رنگ آن چگونه باید باشد.
پردازش تصویر اصولاً پردازش سیگنالی است که ورودی آن تصویر و خروجی آن تصویری است که طبق ویژگیهای مخصوص مورد نیاز تصویر، مورداستفاده قرار میگیرد.
پردازش تصویر اصولاً شامل گامهای زیر میشود:
۱.واردکردن تصویر
۲.آنالیز و دستکاری تصویر
۳.خروجی که میتواند تصویری دیگر و یا گزارشی بر مبنای آنالیز تصویر باشد
تصویر زیر را در نظر بگیرید:
انسانها بهراحتی میتوانند تصویر بالا را مورد پردازش قرار دهند و اطلاعات داخل آن را استخراج کنند. اما اگر ما از کامپیوتر بپرسیم “آیا این تصویر یک مسجد است؟” کامپیوتر نمیتواند هیچگونه پاسخی به سؤال یادشده بر مبنای اطلاعات خود بدهد.
کامپیوتر، تصویر را با مقادیر پیکسلهایی بین ۰ تا ۲۵۵ فراخوانی میکند. برای تمام تصاویر رنگی، سه کانال رنگی اصلی قرمز، سبز و آبی وجود دارد.