Professional Documents
Culture Documents
I7 Koi
I7 Koi
1
فهرست مطالب
• مثال تکمیلی
2
بخش یکم
معرفی موضوع و پیشنیازها
3
معرفی موضوع
• کتابخانهای چندسکویی است و توسط سیستم عاملهای ویندوز ،لینوکس iOS ،و اندروید پشتیبانی میشود.
4
معرفی موضوع
• یک محیط یکپارچه توسعه نرمافزار همهمنظوره ،سطح باال ،شیءگرا ،اِسکریپتی و متن باز است.
• فلسفه ایجاد آن تأکید بر دو هدف اصلی خوانایی باالی برنامههای نوشته شده و کوتاهی و بازدهی نسبی باالی آن
است.
• کلمات کلیدی و اصلی این زبان بهصورت حداقلی تهیه شدهاند و در مقابل کتابخانههایی
که در اختیار کاربر است بسیار وسیع هستند.
• سازمانهای بزرگی که از پایتون استفاده میکنند ،شامل گوگل ،یاهو و ناسا هستند.
5
پیشنیازها
6
بخش دوم
نصب کتابخانه OpenCV
7
بخش سوم
بارگذاری ،نمایش و ذخیره تصاویر
8
بارگذاری تصاویر
• تابع )( cv2.imreadبهمنظور خواندن تصاویر مورد استفاده قرار میگیرد .این تابع دارای دو شناسه اصلی است.
شناسه اول :مربوط به اسم و مسیر کامل عکس موردنظر.
cv2.IMREAD_UNCHANGED
نکته :بهجای استفاده از دستورات باال میتوان بهترتیب اعداد 0 ،۱و -۱را وارد نمود.
9
نمایش تصاویر
• تابع )( cv2.imshowبهمنظور نمایش تصاویر مورد استفاده قرار میگیرد .این تابع دارای دو شناسه اصلی است.
شناسه اول :نام پنجره تصویر که از نوع stringخواهد بود.
شناسه دوم :تصویر موردنظر.
• برای تعیین تغییرپذیر بودن یا نبودن سایز پنجره تصویر از تابع )( cv2.namedWindowاستفاده میشود.
شناسههای این تابع عبارتند از:
:cv2.WINDOW_AUTOSIZE پیشفرض پنجره و اندازه غیرقابل تغییر.
10
ذخیره تصاویر
• تابع )( cv2.imwriteبهمنظور ذخیره تصاویر مورد استفاده قرار میگیرد .این تابع دارای دو شناسه اصلی است.
شناسه اول :نام و فرمت فایل.
11
بخش چهارم
رسم متن و اشکال هندسی بر روی تصاویر
12
توابع رسم در OpenCV
• شناسههای مشترک توابع رسم: • توابع مورد استفاده در این بخش عبارتند از:
تصویر رسم خطcv2.line() :
13
بخش پنجم
مثال تکمیلی
14
مثال تکمیلی
15
فهرست مطالب
• ترکیب تصاویر
2
بخش یکم
خواندن و ویرایش پیکسل تصاویر
3
خواندن و ویرایش پیکسل تصاویر
• دسترسی به مقدار پیکسل تصویر ،با استفاده از مختصات سطر و ستون پیکسل موردنظر امکانپذیر خواهد بود.
برای تصاویر رنگی ( ،)BGRآرایهای از مقادیر رنگهای آبی ،قرمز و سبز.
برای تصاویر سیاه و سفید ،تنها شدت متناسب با پیکسل.
• دسترسی به خصوصیات تصویر :شامل تعداد سطر و ستون ،تعداد سطوح تصویر ،تعداد پیکسل و...
• :img.shapeبیان تعداد سطر ،ستون و سطوح تصویر در قالب تاپل (.)tuple
• :img.dtypeبیان نوع تصویر ( ،)datatypeکه بهخصوص برای رفع خطاهای برنامه بسیار مهم و کاربردی است.
4
بخش دوم
کار با ناحیهای از تصویر ()ROI
5
کار با ناحیهای از تصویر ()ROI
6
بخش سوم
تفکیک و ادغام تصویر
7
تفکیک و ادغام تصویر
8
بخش چهارم
رسم حاشیه بر روی تصویر
9
رسم حاشیه بر روی تصویر
• نوع حاشیه
• رنگ حاشیه
10
رسم حاشیه بر روی تصویر
cv2.BORDER_REFLECT •
cv2.BORDER_REFLECT_101 •
cv2.BORDER_WRAP •
cv2.BORDER_REPLICATE •
11
بخش پنجم
ترکیب تصاویر
12
ترکیب تصاویر
13
درس ﺳﻮم :اﺑﺰارﻫﺎى رﯾﺎﺿﻰ در OpenCV
1
فهرست مطالب
• تقسیمبندی Otsu
2
بخش یکم
تغییر فضای رنگی
3
تغییر فضای رنگی
BGR HSV •
نوع تبدیل را تعیینflag استفاده میشود که درcv2.cvtColor(input_image, flag) • برای تبدیل رنگ از تابع
.میکند
5
تعیین مقدار HSVتصویر
• نرمافزارهای مختلف از مقیاسهای متفاوت استفاده مینمایند .در نتیجه برای تطبیق مقدار HSVدر OpenCV
باید این دامنه را نرماالیز نمود.
6
بخش سوم
اعمال آستانه بر روی تصویر
7
اعمال آستانه بر روی تصویر
• اگر مقدار پیکسل بزرگتر از مقدار آستانه باشد ،مقدار 1جایگزین آن میشود.
• شناسه دوم :مقدار آستانه (که برای طبقهبندی مقادیر پیکسلها مورد استفاده قرار میگیرد).
• شناسه سوم( maxVal :که نشان میدهد اگر مقدار پیکسل بیشتر (یا کمتر) از مقدار آستانه بود ،چه مقداری اختصاص
یابد)
• cv2.THRESH_BINARY
• cv2.THRESH_BINARY_INV
• cv2.THRESH_TRUNC
• cv2.THRESH_TOZERO
• cv2.THRESH_TOZERO_INV
9
بخش چهارم
تقسیمبندی Otsu
10
تقسیمبندی Otsu
• در این روش ،برای اطمینان از مناسب بودن مقدار دلخواه ،از آزمون و خطا استفاده میشود.
• در این حالت ،کار ما برای تعیین مقدار آستانه مناسب ،سختتر خواهد بود.
• تقسیمبندی Otsuبهطور اتوماتیک مقدار آستانه برای هیستوگرام تصاویر دارای دو قله را محاسبه مینماید.
12
تبدیالت هندسی بر روی تصویر
• :Scalingتابع )( cv2.resizeمورد استفاده قرار میگیرد .روشهای درونیابی آن عبارتند از:
• cv2.INTER_CUBIC
• ( cv2.INTER_LINEARبهطور پیشفرض برای تمام تغییر ابعادها مورد استفاده قرار میگیرد).
• cv2.INTER_AREA
• نکته :پارامتر سوم تابع مذکور ،ابعاد تصویر خروجی میباشد که در آن عرض برابر با تعداد ستون و ارتفاع تعداد ردیف
تصویر میباشد.
13
تبدیالت هندسی بر روی تصویر
• اما OpenCVچرخش مقیاسپذیر با مرکز چرخش قابل تنظیم را فراهم میکند ،بهطوری که میتوان در هر مکان
که ترجیح میدهیم ،چرخش را انجام دهیم.
=𝑀 𝛽 𝛼
𝛼 𝛽−
𝑦1−𝛼 .𝑐𝑒𝑛𝑡𝑒𝑟.𝑥−𝛽.𝑐𝑒𝑛𝑡𝑒𝑟.
𝑦𝛽.𝑐𝑒𝑛𝑡𝑒𝑟.𝑥+ 1−𝛼 .𝑐𝑒𝑛𝑡𝑒𝑟.
• ماتریس تبدیل تغییر یافته به شکل روبهرو تعریف میشود:
14
تبدیالت هندسی بر روی تصویر
• :Affine Transformationنوعی تبدیل ریاضی است که همخطیبودن و نسبت فاصلهها در آن حفظ میشود.
• در این تبدیل ،تمام خطوط موازی در تصویر اصلی ،موازی باقی میمانند.
• برای یافتن ماتریس انتقال ،به سه نقطه از تصویر ورودی و سه نقطه متناظر
در تصویر خروجی نیاز داریم.
15
تبدیالت هندسی بر روی تصویر
• برای یافتن این ماتریس 4نقطه در تصویر ورودی و 4نقطه متناظر در تصویر خروجی که سه نقطه از آنها نباید در
یک خط باشند موردنیاز است.
16
درس ﭼﻬﺎرم :آﺷﻨﺎﯾﻰ و اﻋﻤﺎل اﻧﻮاع ﻓﯿﻠﺘﺮﻫﺎ ﺑﺮ ﺗﺼﺎوﯾﺮ
1
فهرست مطالب
• فیلتر میانگین
• فیلتر گوسی
• فیلتر میانه
• فیلتر دوطرفه
2
بخش یکم
ماتریس فیلتر تصویر
3
ماتریس فیلتر تصویر
• اعمال فیلتر روی تصویر:
• فیلتر پایین گذر ( :)LPFجهت حذف نویز
4
بخش دوم
فیلتر میانگین
5
فیلتر میانگین
• در این روش ،میانگین تمام پیکسلهای زیر ناحیه هسته محاسبه شده و عنصر مرکزی با این میانگین جایگزین
میشود.
• نکته :اگر نرماالیز شده ماتریس هسته موردنظر ما نباشد ،میتوان شناسه نرماالیز را در تابع )( cv2.boxFilterبه
شکل روبرو غیر فعال نمودnormalize=False :
6
بخش سوم
فیلتر گوسی
7
فیلتر گوسی
• همچنین انحراف معیار درجهت Xو Yکه به ترتیب با 𝑋𝜎 و 𝑌𝜎 نشان داده میشود نیز باید مشخص گردد.
• اگر تنها 𝑋𝜎 مشخص گردد 𝜎𝑌 ،برابر با 𝑋𝜎 خواهد بود و اگر هردو صفر باشد ،از اندازه هسته محاسبه میشود.
8
بخش چهارم
فیلتر میانه
9
فیلتر میانه
• تابع )( cv2.medianBlurمیانه تمام پیکسلها در پنجره هسته را محاسبه میکند و پیکسل مرکزی با این مقدار
میانه جایگزین میشود.
• در فیلتر میانه ،پیکسل مرکزی حتما با یکی از مقادیر پیکسلها جایگزین میشود.
10
بخش پنجم
فیلتر دوطرفه
11
فهرست مطالب
• المان ساختاری
2
بخش یکم
فرسایش یا Erosion
3
فرسایش یا Erosion
• ایده اولیه فرسایش درست مانند فرسایش خاک است و مرزهای جسم پیشزمینه را از بین میبرد.
• یک پیکسل در تصویر اصلی ( ۱یا )۰تنها در صورتی باقی خواهد ماند که تمام پیکسلهای زیر هسته ۱باشد و در
غیر این صورت فرسوده میشود( .تبدیل به صفر میشود).
• بنابراین تمام پیکسلهای نزدیک به مرز (بسته به اندازه هسته) دور ریخته میشوند.
• در نتیجه ضخامت یا اندازه شیء پیشزمینه کاهش مییابد و به عبارت سادهتر ،منطقه سفید در تصویر کاهش
مییابد.
4
بخش دوم
انبساط یا Dilation
5
انبساط یا Dilation
• بنابراین منطقه سفید را در تصویر افزایش میدهد و یا حجم پیشزمینه افزایش مییابد.
6
بخش سوم
Opening & Closing
7
Opening & Closing
• این عملگر در در حذف حفرههای کوچک در داخل تصویر پیشزمینه یا نقاط کوچک سیاه روی تصویر مفید است.
8
بخش چهارم
Morphological Gradient & TopHat & Black Hat
9
Morphological Gradient & Top Hat & Black Hat
10
بخش پنجم
المان ساختاری
11
المان ساختاری
• المان ساختاری در مثالهای قبلی بهصورت دستی و به شکل مستطیل ایجاد شد.
• اما در بعضی موارد ممکن است نیاز به هسته بیضوی یا دایرهای داشته باشیم.
• تابع )( cv2.getStructuringElementبا دریافت شکل و اندازه ،هسته را به شما تحویل میدهد.
• شناسه cv2.MORPH_ELLIPSE
• شناسه cv2.MORPH_CROSS
12
فهرست مطالب
• الپالسین
2
بخش یکم
Sobel and Scharr مشتقات
3
مشتقات Sobel and Scharr
• عملگرهای سوبل از جمله فیلترهای تشخیص لبه میباشد.
• جهت مشتقات را میتوان با شناسههای yorderو xorderبه شکل عمودی و یا افقی تعریف نمود.
• اگر ksize=1باشد ،یک فیلتر 3×3 Scharrاستفاده میشود که نتایج بهتری از فیلتر 3×3 Sobelدارد.
4
بخش دوم
الپالسین
5
الپالسین
• اگر ksize=1باشد ،هسته زیر برای فیلتر تصویر مورد استفاده قرار میگیرد:
الپالسین در واقع مشتق مرتبه دوم در راستای xبه عالوه مشتق مرتبه دوم در راستای yمیباشد.
6
بخش سوم
تشخیص لبه Canny
7
تشخیص لبه Canny
• این الگوریتم چند مرحلهای ،در سال 1986توسط John F. Cannyایجاد شد.
8
تشخیص لبه Canny
-1کاهش نویز :از آنجا که تشخیص لبه حساس به نویز در تصویر است ،اولین گام ،حذف نویز با یک فیلتر گوسی 5×5
است.
-2یافتن شدت گرادیان تصویر :شیب و جهت لبه برای هر پیکسل با اعمال فیلتر سوبل در هردو جهت افقی و عمودی
حاصل میشود .جهت گرادیان همیشه بر لبهها عمود است.
-3حذف بدون بیشینه :بعد از گرفتن اندازه و جهت شیب ،برای حذف هر پیکسل ناخواسته که ممکن است لبه را
تشکیل دهد ،اسکن انجام میشود.
:Hysteresis Thresholding -4این مرحله تصمیم میگیرد کدام لبهها به راستی لبه هستند.
9
تشخیص لبه Canny
• تصویر ورودی
• minVal
• maxVal
Edge_Gradient(G)= 𝐺𝑥2 + 𝐺𝑦2 True • اندازه دیافراگم (بهطور پیشفرض برابر با 3است)
10
فهرست مطالب
• رسم هیستوگرام
• هموارسازی هیستوگرام
2
بخش یکم
رسم هیستوگرام
3
رسم هیستوگرام
• هیستوگرام نموداری است که ایده کلی در مورد توزیع شدت یک تصویر ارائه میدهد.
• در این نمودار معموال مقادیر پیکسل از 0تا 255در محور xو تعداد نقاط متناظر در تصویر روی محور yقرار دارد.
تصویر را درمییابیم.
4
رسم هیستوگرام
• برای یافتن هیستوگرام تصویر از تابع )( cv2.calcHistاستفاده مینماییم.
• کانالها :برای تصویر ورودی سیاه و سفید ،مقدار ] [0و برای تصاویر رنگی مقادیر ] [1] ،[0و ] [2برای محاسبه هیستوگرام
کانالهای آبی ،سبز و یا قرمز مورد استفاده قرار میگیرد.
5
بخش دوم
هموارسازی هیستوگرام
6
هموارسازی هیستوگرام
• تصویری را در نظر بگیرید که مقادیر پیکسل آن ،به ناحیه خاصی از تصویر محدود است.
• برای مثال ،در یک تصویر روشن ،تمام پیکسلها محدود به مقادیر باال خواهد شد.
7
بخش سوم
تعادلسازی هیستوگرام تطبیقی کنتراست محدود
8
تعادلسازی هیستوگرام تطبیقی کنتراست محدود
9
تعادل سازی هیستوگرام تطبیقی کنتراست محدود
• در این روش تصویر به قطعات کوچکتری به نام tilesتقسیم میشود که بهصورت پیشفرض 8×8میباشد.
• سپس تعادلسازی یا هموارسازی هیستوگرام برای هر قطعه کوچک تصویر صورت میگیرد.
و )( clahe.applyمیباشد.
10
فهرست مطالب
2
بخش یکم
تطبیق یک شیء در تصویر
3
تطبیق یک شیء در تصویر
• تطبیق الگو ،روشی برای جستجو و یافتن تصویر الگو در یک تصویر بزرگتر است.
• cv2.TM_CCOEFF_NORMED
• cv2.TM_CCORR
• cv2.TM_CCORR_NORMED
• cv2.TM_SQDIFF
• cv2.TM_SQDIFF_NORMED
4
بخش دوم
تطبیق چند شیء در تصویر
5
تطبیق چند شیء در تصویر
6