27
پردازش تصویر باfaradars.org/fvimg9405 مدرس: نیالهام شعبانی ا هوش مصنوعی دانشجوی دکترایصفهانه انشگا داسه اول جل: ی با آشنایOpenCV ﻓﺮادرسFaraDars.org

آموزش پردازش تصویر با OpenCV - بخش یکم

Embed Size (px)

Citation preview

Page 1: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

الهام شعبانی نیا:مدرسدانشجوی دکترای هوش مصنوعی

دانشگاه اصفهان

:جلسه اول

فرادرسOpenCVآشنایی با

FaraDars.org

Page 2: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

OpenCVچیست؟

•OpenCV(بازمتنماشینبینایی)وتصویرحلیلتبرایشدهسازیبهینهالگوریتمصدهاازبیششاملبازمتنکتابخانهیک

.استویدیو

ابزارعنوانبهماشینبیناییدهندگانتوسعهومحقیقجامعهسویاززیادیمیزانبه،1999سالدرآنمعرفیزماناز•

.استشدهپذیرفتهپایهتوسعه

•OpenCVشددادهتوسعهبردسکیگریسرپرستیبهتیمیکوسیلهبهاینتلدرابتدادر.

کنند،میفادهاستپردازندهازشدیداًکهبیناییکاربردهایتوسعهارتقاءوبیناییزمینهدرتحقیقتوسعهمنظوربهکاراین•

.شدانجام

اتفاقOpenCV2کاربهشروعبا2009دربعدیمهمنسخه.شدمعرفی2006سالدر1.0نسخهبتا،نسخهسرییکازبعد•

.داشتهمراهبه++Cواسطدرخصوصبهرازیادیتغییراتکه.افتاد

.(2015ژانویه)استبتا3.0نسخهآخرینآموزشی،مجموعهاینتهیهزماندراکنون•2

فرادرس

FaraDars.org

Page 3: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

چیست؟بینایی ماشین

.استتصاویردرکوتحلیلقدرتبهرایانهوماشینسازیتوانمندماشین،بیناییازهدف•

.شودمیفراهماوچشمانتوسطانساندرالعادهفوقتواناییاین•

.شودمیفراهمدیجیتالهایدوربینطریقازبصریاطالعاترباتیاوماشیندر•

.استاعدادازماتریسیبیند،میماشینآنچه•

وفردوجودونهمچ.نمایددرکمیتواندانسانکهاستباالییسطحمفاهیمبهاعدادماتریساینتبدیلماشینبیناییوظیفه•

.غیرهوصحنهدرونهایانسانواشیاارتباطاتتشخیصصحنه،درخاصشیئییا

.استرتصاویتحلیلبرایباالسطحهایمدلساختسپسوتصاویردرپایینسطحهایویژگیباکارمستلزمکاراین•

.استماشینبیناییدرعمومیمشکالتازگیرد،قرارپردازشموردبایستیمعموالکهاطالعاتزیادحجم•

3

فرادرس

FaraDars.org

Page 4: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

OpenCV یاMatlab

4

OpenCV متلب

استفادهسهولت

سرعت اجرا

هزینه

درخصوصبهآناجرایسرعتدرOpenCVاصلیمزیت•

آنبودنرایگانوبودنبازمتنالبتهودرنگبیکاربردهای

.است

هایمالگوریتبرخیکردنامتحاندنبالبهتنهاکهصورتیدر•

کوچکدادههایپایگاهرویبرخصوصبهماشینبینایی

.باشدبهتریگزینهمتلبشایدهستید،

ایندهدهتوسعهیاوماشینبیناییمتخصصیکعنوانبهاما•

باآشناییدارد،راکاربردیهایبرنامهتوسعهقصدکه

OpenCVاستالزامی.

فرادرس

FaraDars.org

Page 5: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

اهداف دوره آموزشی

نیازموردعناصرارائهعوض،دراما.نیستOpenCVهایکالسوتوابعدرشدهارائههایگزینهوجزئیاتتمامپوششماهدف•

.استپایهازخودهایبرنامهساختبرای

دنبالراماشینبیناییدرمهمهایالگوریتمازبرخیتوصیفوتصاویرتحلیلدراساسیمفاهیممامجموعهایندرهمچنین•

.کنیممی

.شویدآشناویدیووتصویرتحلیلدنیایباتادادخواهدفرصتشمابهمجموعهاین•

مراجعهOpenCVآنالینمستنداتبهدهد،انجامشمابرایتواندمیکتابخانهکهآنچهمورددرجدیدخبرهایازاطالعبرای•

:کنید

http://opencv.org/documentation.html

5

فرادرس

FaraDars.org

Page 6: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

مراجع درس

6

ابتصویرپردازشوماشینبیناییکاربردیهایبرنامه"کتاب-1

OpenCV2"-یانکدانشگاهیانتشارات-سخندانونیاشعبانی:مترجمان

93-رایان

-نصیریمحمدیونیاشعبانی:مترجمان"OpenCVآموزش"کتاب-2

90–رایانکیاندانشگاهیانتشارات

فرادرس

FaraDars.org

Page 7: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

پیش نیاز درس

++Cبامقدماتیآشنایی1.

رتصویپردازشاولیهمفاهیمباآشنایی2.

سگونزالتصویرپردازشکتاب

7

فرادرس

FaraDars.org

Page 8: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

دیدخواهید دوره آنچه در این

باراایسادههایبرنامهچگونهکهدهدمینشانشمابهوکردهمعرفیراOpenCVکتابخانه،تصاویربابازی.1جلسه•

.کنیدایجاد++Cویژوالماکروسافتتوسعههایمحیطازاستفاده

.دهدیمارائههاپیکسلتمامرویعملیکانجامبرایراتصویرپویشمختلفهایروشجلسهاین،تصاویرباکار.2جلسه•

.کنیدتعریفتصویریکدرراعالقهموردناحیهچگونهکهگرفتخواهیدیادهمچنین

-مینشانماشبهجلسهاین.آموزدمیراتصویرکردنفیاتروفرکانستحلیلاصولشمابه،تصاویرفیلترکردن.3جلسه•

ارائهتصویرقمشتعملگردوجلسهایندر.شونداعمالتصاویررویبرتوانندمیگذرباالوگذرپایینفیلترهایچگونهکهدهد

.الپالسینوگرادیان:شودمی

8

فرادرس

FaraDars.org

Page 9: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

دیدخواهید دوره آنچه در این

ازتوانمیچگونهوکردهمحاسبهراتصویرهایهیستوگرامچگونهکهدهدمینشانشمابه،هاهیستوگرامباهاپیکسلشمارش.4جلسه•

انجامراتصویریبازیابوتشخیصبندی،ناحیهکهاندشدهارائههاهیستوگرامبراساسمختلفیکاربردهای.کرداستفادهتصاویرویرایشبرایهاآن

.دهندمی

لسهجایندر.دهدمیقراربررسیموردراریاضیشناسیریختمفهوم،شناسیریختعملگرهایباتصویرتبدیالت.5جلسه•

.شودمیاستفادهتصویرنواحیوهاگوشهها،لبهتشخیصبرایهاآنازکهشوندمیارائهمختلفیعملگرهای

ه چگونه دهد ککند و توضیح میهای هندسی تصویر تمرکز می، بر روی تشخیص ویژگیاستخراج خطوط، کانتورها و اجزا. 6جلسه •

.کانتورها، خطوط و اجزاء متصل تصویر را استخراج کنید

9

فرادرس

FaraDars.org

Page 10: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

دیدخواهید دوره آنچه در این

کهدهدمیحتوضیهمچنین.کندمیتوصیفرامتفاوتیویژگینقاطگرهایتشخیص،عالقهموردنقاطانطباقوتشخیص.7جلسه•.دادقراراستفادهموردتصویردوبیننقاطانطباقبرایومحاسبهتوانمیراویژگینقاطگرهایتوصیفچگونه

.کندمیفراهمراآنهایقابپردازشوویدیویدنبالهیکنوشتنوخواندنبرایچارچوبی،ویدیوییهایدنبالهپردازش.8جلسه•برابردرکمتحرزمینهپیشاشیاءوکردهردیابیبعدقاببهقابیازراویژگینقاطتوانمیچگونهکهدهدمینشانشمابههمچنین

.کرداستخراجرادوربین

10

فرادرس

FaraDars.org

Page 11: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

برای چه کسانی مناسب است؟دوره این

هایبرنامهساختبرایراOpenCVکتابخانهازاستفادهچگونگیداردقصدکههستید++Cکارتازهنویسبرنامهاگریک•

.استمناسبشمابرایمجموعهاینبیاموزد،ماشینبیناییکاربردی

مفیدنیز،شوندآشناماشینبینایینویسیبرنامهمفاهیمبادارندقصدکهایحرفهافزارنرمدهندگانتوسعهبرایهمچنین•

.بودخواهد

.کرداستفادهنیزدانشگاهسطحدرماشینبیناییهایدرسدرتوانمیمجموعهایناز•

البته.وردآمیفراهمماشینبنیاییوتصویرپردازشمحققانوتکمیلیتحصیالتدانشجویانبرایخوبیمرجعمجموعهاین•

.استنیازمورد++Cازپایهدانشیک

11

فرادرس

FaraDars.org

Page 12: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

OpenCVنصب کتابخانه

12

فرادرس

FaraDars.org

Page 13: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

OpenCVنصب کتابخانه

آنالینمستنداتکتابخانه،نسخهآخرینتوانیدمیhttp://opencv.orgآدرسبهOpenCVرسمیسایتوببهمراجعهبا•.کنیدپیداراOpenCVبهراجعدیگرمفیدمنابعبسیاریو

-میآنجااز.بروید(ویندوزیاLinux/Unix/Mac)خودنظرموردپلتفرمبهمربوطدانلودصفحهبهOpenCVسایتوباز•

.کنیددانلودراOpenCVبستهتوانید

راخودویندوزIDEنصباجراییبستهکهداریدهمراانتخاباینکنید،میکاراستودیوویژوالباوویندوزتحتشمااگر•برایکهشدهکامپایلقبلاز(binaries)هایدودوییهمهبلکهمنبع،کتابخانهتنهانهنصب،برنامهایناجرای.کنیددانلود

.کنیداستفادهOpenCVازتاایدآمادهشماحالت،ایندر.کندمینصبهمراداریدنیازخودهایبرنامهساخت

13

فرادرس

FaraDars.org

Page 14: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

OpenCVنصب کتابخانه

.کنیدپیداراهاپوشهازایمجموعهتوانیدمینصبپوشهایندر•:قبیلازهاییپوشه•

،OpenCVمستنداتشاملdocپوشه–،includeهایفایلهمهشاملincludeپوشه–(استبازمتنکتابخانهایناست،درستبله)منبعهایفایلهمهشاملmodulesپوشه–.کنیدآغازراخودکارتاکنندمیکمکشمابهکهزیادیهایمثالشاملsamplesپوشهو–

14

فرادرس

FaraDars.org

Page 15: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

OpenCVبخش های مختلف کتابخانه

:استشدهتقسیمبخشچندبهOpenCVکتابخانه،2.2نسخهزماناز•پایهمحاسباتیابعتووساختارهادادهخصوصبهکتابخانههستهتوابعشاملopencv_coreماژول•اصلیتصویرپردازشتوابعشاملopencv_imgprocماژول•کاربرواسطتوابعباتصویرهمراهوویدیونوشتنوخواندنبرایتوابعیشاملopencv_highguiماژول•.اینقطهویژگیانطباقچارچوبواینقطهویژگیگرهایتوصیفودهندهاتشخیصشاملopencv_features2dماژول•.استریوتوابعونماییدوهندسهتخمیندوربین،کالیبراسیونشاملopencv_calib3dماژول•زمینهپیشاستخراجهایکالسوتوابعوویژگیردیابیحرکت،تخمینشاملopencv_videoماژول•انسانوصورتهایدهندهتشخیصقبیلازشیئدهندهتشخیصتوابعشاملopencv_objdetectماژول•هندسیمحاسباتیهایالگوریتم،(opencv_ml)ماشینیادگیریتوابعشاملدیگریکمکیهایماژولهمچنین•

(opencv_flann)دارندوجودکتابخانهدرغیرهو.

15

فرادرس

FaraDars.org

Page 16: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

OpenCVبخش های مختلف کتابخانه

OpenCVکدهایمعموالبنابراین.(داردقرارincludeپوشهدرکه)دارندخودباهمراهسرآیندفایلیکهاماژولاینهمه•

C++باincludeمثالبرای.شودمیآغازنیازموردهایماژولکردن:

•#include <opencv2/core/core.hpp>

•#include <opencv2/imgproc/imgproc.hpp>

•#include <opencv2/highgui/highgui.hpp>

:بودشدهآغاززیرصورتبهکهشدیدروبروOpenCVازکدیبااحتماالاگر•

•#include "cv.h"

.کندمیاستفادههاماژولشکلبهآنساماندهیازپیشOpenCVقدیمیسبکازکهاستدلیلاینبه•

16

فرادرس

FaraDars.org

Page 17: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

با ماکروسافتOpenCVایجاد یک پروژه ++Cویژوال

17

فرادرس

FaraDars.org

Page 18: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

؟++Cچرا ماکروسافت ویژوال

پلتفرمجاایندرما.داریدنیازمناسب(IDE)توسعهمحیطیکبهOpenCVکتابخانهکمکبهخودهایبرنامهتوسعهبرای•پروژهیکدتوانیمیچگونهکهدادخواهیمنشانشمابهادامهدر.کنیممیپیشنهادرااستودیوویژوالیعنیماکروسافتمشهور

.کنیدایجادابزاراینبارا

ارائهایگونهبهچیزهمهمجموعهایندرحقیقتدر.کنیداستفادههم++cبهمربوطهایIDEدیگرازتوانیدمیالبته•حالایناب.هستیدآزادانتخابدرکامالشمابنابراین.باشدخاصیعاملسیستمیاوخاصمحیطهرازمستقلکهشدخواهد

استفادهشماست،عاملسیستموکامپایلرمناسبکهOpenCVکتابخانهشدهکامپایلنسخهازبایدکهباشیدداشتهخاطربه.کنید

توانیدمی.کنیدایجادویندوزبرایراOpenCVکاربردیهایبرنامهبراحتیتوانیدمی++Cویژوالماکروسافتازاستفادهبا•.کنیدایجادزیباگرافیکیواسطیکباهمراهراتریپیچیدهبسیارهایبرنامهیاوکنسولیسادهبرنامهیک

18

فرادرس

FaraDars.org

Page 19: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

؟++Cچرا ماکروسافت ویژوال

نسخهدیگرحالاینباکرد،خواهیماستفاده2013استودیوویژوالازما.کردخواهیمایجادکنسولیسادهبرنامهیکاینجادر•مشترکیاصولازدارند،مختلفهاینسخهدرهاگزینهومنوهادرکهزیادیهاییشباهتدلیلبهنیزماکروسافتهای

.کنندمیپیرویتوسعهمحیط++Cکهکنیدتنظیمایگونهبهراآنتوانیدمیکنید،میاجراباراولینبرایرااستودیوویژوالکهزمانی•

.بودخواهد++Cویژوالحالتدرکنید،میبازراIDEکهبارهرروشاینبه.بشودشمافرضپیش

19

فرادرس

FaraDars.org

Page 20: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

++Cبه ماکروسافت ویژوال OpenCVضافه کردن کتابخانها

ویژوالبرایبایدکنیم،اجراوکامپایلراخودOpenCVآیندهبرنامهبتوانیماینکهبرایاولاما•C++هایکتابخانهمحلOpenCVهایفایلوincludeهایروشاینکاربرای.کنیممشخصرا

.دیدخواهیمهمباراسادهراهیکاینجادرکه.داردوجودمختلفی:شاملکارمراحل•

systemبهکتابخانهافزودن-1 PATHهایفایلکردنکپییاوdllویندوزپوشهدرIncludeمسیرتنظیم-2 DirectoriesدرpropertiesپروژهLibraryمسیرتنظیم-3 DirectoriesدرpropertiesپروژهAdditionalمسیرتنظیم-4 Dependenciesدرpropertiesپروژه

20

فرادرس

FaraDars.org

Page 21: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

++Cبه ماکروسافت ویژوال OpenCVضافه کردن کتابخانها

:شاملکارمراحل•

systemبهکتابخانهافزودن-1 PATHکردنکپییاوویندوزپوشهدرdllهایفایل

Open Control Panel → System → Advanced system

settings → Advanced Tab → Environment

variables...

Add the directory …\opencv\build\x86\vc12\bin to your system path

21

فرادرس

FaraDars.org

Page 22: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

++Cبه ماکروسافت ویژوال OpenCVضافه کردن کتابخانها

:شاملکارمراحل•

Create a new project and set up Visual C++

File → New → Project... → Visual C++ → Empty Project

click Ok. Visual C++ will create an empty project.

22

فرادرس

FaraDars.org

Page 23: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

++Cبه ماکروسافت ویژوال OpenCVضافه کردن کتابخانها

:شاملکارمراحل•

Includeمسیرتنظیم-2 Directoriesدرpropertiesپروژه

Click project and select Properties → configuration Properties → VC++

Directories.

Select Include Directories to add a new entry and type…\opencv\build\include

23

فرادرس

FaraDars.org

Page 24: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

++Cبه ماکروسافت ویژوال OpenCVضافه کردن کتابخانها

:شاملکارمراحل•

Libraryمسیرتنظیم-3 Directoriesدرpropertiesپروژه

Back to the Property dialog, select Library Directories to add a new entry

and type

…\opencv\build\x86\vc12\lib

Click Ok to close the dialog.

24

فرادرس

FaraDars.org

Page 25: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

++Cبه ماکروسافت ویژوال OpenCVضافه کردن کتابخانها

:شاملکارمراحل•Additionalمسیرتنظیم-4 Dependenciesدرpropertiesپروژه

Back to the property dialog, select Linker → Input → Additional Dependencies to add new entries. On the popup dialog, type the files below:

opencv_ts300d.lib

opencv_world300d.lib

Note that the filenames end with "d" (for "debug"). Also note that if you have installed another version of OpenCV (say 2.4.9) these filenames will end with 249d instead of 300d

25

فرادرس

FaraDars.org

Page 26: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

++Cبه ماکروسافت ویژوال OpenCVضافه کردن کتابخانها

آغازرانویسیکدوکردهایجادراخودبرنامهsourceهایفایلاستکافیتنظیماتانازپس•.نمایید

Right click your project and select Add → New Item... → Visual C++ → C++ File.

Name your file and click ok.

26

فرادرس

FaraDars.org

Page 27: آموزش پردازش تصویر با OpenCV - بخش یکم

باتصویر پردازش

faradars.org/fvimg9405

27

فرادرس این اسالید ها بر مبنای نکات مطرح شده در « آموزش پردازش تصویر با »

.تهیه شده است

.نماییدلینک زیر مراجعه برای کسب اطالعات بیشتر در مورد این آموزش به

faradars.org/fvimg9405

باتصویر پردازش

faradars.org/fvimg9405

فرادرس

FaraDars.org