SlideShare a Scribd company logo
1 of 46
Download to read offline
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫دوم‬ ‫جلسه‬:
‫تصاویر‬ ‫با‬ ‫کار‬
‫مدرس‬:‫نیا‬ ‫شعبانی‬ ‫الهام‬
‫مصنوعی‬ ‫هوش‬ ‫دکترای‬ ‫دانشجوی‬
‫اصفهان‬ ‫دانشگاه‬
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مقدمه‬
•‫برنامه‬ ‫ساخت‬ ‫برای‬‫و‬ ‫را‬ ‫تصاویر‬ ‫و‬ ‫باشید‬ ‫داشته‬ ‫دسترسی‬ ‫تصاویر‬ ‫محتوای‬ ‫بتوانیدبه‬ ‫باید‬ ‫کامپیوتر‬ ‫بینایی‬ ‫های‬‫کنید‬ ‫ایجاد‬ ‫یا‬ ‫یرایش‬.
‫این‬‫جلسه‬‫را‬ ‫تصویر‬ ‫عناصر‬ ‫چطور‬ ‫که‬ ‫داد‬ ‫خواهد‬ ‫یاد‬ ‫شما‬ ‫به‬(‫پیکسل‬ ‫همان‬ ‫یعنی‬‫را‬ ‫ها‬)‫کنید‬ ‫دستکاری‬.‫خواهید‬ ‫یاد‬ ‫شما‬‫گرفت‬
‫پیکسل‬ ‫از‬ ‫هریک‬ ‫و‬ ‫کرده‬ ‫پویش‬ ‫را‬ ‫تصویر‬ ‫یک‬ ‫چطور‬ ‫که‬‫کنید‬ ‫پردازش‬ ‫را‬ ‫هایش‬.
•‫می‬ ‫یاد‬ ‫همچنین‬‫دهید‬ ‫انجام‬ ‫موثر‬ ‫صورت‬ ‫به‬ ‫را‬ ‫کار‬ ‫این‬ ‫چطور‬ ‫که‬ ‫گیرید‬.‫دارن‬ ‫متوسطی‬ ‫ابعاد‬ ‫که‬ ‫تصاویری‬ ‫حتی‬ ‫که‬ ‫چرا‬‫می‬ ،‫د‬-
‫باشند‬ ‫پیکسل‬ ‫هزار‬ ‫دهها‬ ‫شامل‬ ‫توانند‬.
•‫اساسا‬‫یک‬‫تصویر‬‫ماتریسی‬‫از‬‫مقادیر‬‫عددی‬‫است‬.‫به‬‫همین‬‫دلیل‬‫است‬‫که‬OpenCV 2‫آن‬‫ها‬‫را‬‫با‬‫استفاده‬‫از‬‫داده‬‫ساختار‬
cv : :Mat‫دستکاری‬‫می‬‫کند‬.‫هر‬‫عنصر‬‫ماتریس‬‫بیانگر‬‫یک‬‫پیکسل‬‫است‬.‫برای‬‫یک‬‫تصویر‬‫خاکستری‬‫پیکس‬‫لها‬‫مقادیر‬8‫بیتی‬
‫بدون‬‫عالمت‬‫هستند‬‫که‬‫صفر‬‫متناظر‬‫با‬‫سیاه‬‫و‬255‫متناظر‬‫با‬‫سفید‬‫است‬.‫برای‬‫یک‬‫تصویر‬‫رنگی‬‫برای‬‫هر‬‫پیکسل‬‫به‬‫سه‬
‫مقدارنیاز‬‫است‬‫تا‬‫بتوان‬‫سه‬‫کانال‬‫اصلی‬‫رنگ‬(،‫قرمز‬،‫سبز‬‫آبی‬)‫را‬‫نمایش‬‫داد‬.‫بنابراین‬‫در‬‫این‬‫حالت‬‫هر‬‫عنصر‬‫ماتری‬‫س‬‫یک‬‫سه‬
‫تایی‬‫است‬.
2
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫پیکسل‬ ‫مقادیر‬ ‫به‬ ‫دسترسی‬‫ها‬
•‫برای‬‫دسترسی‬‫به‬‫هر‬‫عتصر‬،‫ماتریس‬‫تنها‬‫باید‬‫شماره‬‫سطر‬‫و‬‫ستون‬‫آن‬‫را‬‫مشخص‬‫کنید‬.‫آن‬‫گاه‬‫عنصر‬‫مربوطه‬‫که‬‫م‬‫ی‬‫تواند‬‫یک‬
‫مقدار‬‫عددی‬‫تنها‬‫و‬‫یا‬‫برای‬‫یک‬‫تصویر‬‫چند‬‫کانالی‬‫یک‬‫بردار‬‫از‬‫مقادیر‬،‫باشد‬‫برگردانده‬‫می‬‫شود‬.
•‫کالس‬cv: :Mat‫متدهای‬‫مختلفی‬‫برای‬‫دسترسی‬‫به‬‫ویژگی‬‫های‬‫مختلف‬‫یک‬‫تصویر‬‫دارد‬.
•‫متغیرهای‬‫عمومی‬،‫عضو‬cols‫و‬rows‫به‬‫شما‬‫تعداد‬‫سطرها‬‫و‬‫ستون‬‫های‬‫تصویر‬‫را‬‫می‬‫دهند‬.
•‫برای‬‫دسترسی‬‫به‬‫عنصر‬cv: : Mat‫متد‬at(int y, int x)‫وجود‬‫دارد‬.‫با‬‫این‬‫حال‬‫نوع‬‫بازگشتی‬‫این‬‫متد‬‫باید‬‫در‬‫زمان‬
‫کامپایل‬‫مشخص‬‫باشد‬.‫و‬‫از‬‫آن‬‫جا‬‫که‬cv: : Mat‫می‬‫تواند‬‫عناصری‬‫از‬‫هر‬‫نوع‬‫را‬‫نگه‬،‫دارد‬‫برنامه‬‫نویس‬‫باید‬‫نوع‬‫بازگشتی‬
‫مورد‬‫انتظار‬‫را‬‫مشخص‬‫نماید‬.‫بنابراین‬‫زمانی‬‫که‬‫آن‬‫را‬‫فراخوانی‬‫می‬،‫کنید‬‫باید‬‫نوع‬‫عنصر‬‫تصویر‬‫را‬‫مشخص‬‫کنید‬.‫مثال‬:
•‫از‬‫این‬‫متد‬‫تنها‬‫برای‬‫دسترسی‬‫تصادفی‬‫به‬‫پیکسل‬‫های‬‫تصویر‬‫باید‬‫استفاده‬‫کرد‬.‫اما‬‫هرگز‬‫نباید‬‫برای‬‫پویش‬‫ی‬‫ک‬‫تصویر‬‫استفاده‬
‫شود‬.
3
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫پیکسل‬ ‫مقادیر‬ ‫به‬ ‫دسترسی‬‫ها‬
•‫در‬‫تصاویر‬،‫رنگی‬‫هر‬‫پیکسل‬‫با‬‫سه‬‫جزء‬‫مشخص‬‫می‬‫شود‬:‫کانال‬‫های‬،‫قرمز‬‫سبز‬‫و‬‫آبی‬.‫بنابراین‬‫یک‬cv: :Mat‫برای‬‫یک‬‫تصویر‬
‫رنگی‬‫برداری‬‫از‬‫سه‬‫مقدار‬8‫بیتی‬‫را‬‫باز‬‫خواهد‬‫گرداند‬.OpenCV‫نوع‬‫تعریف‬‫شده‬‫ای‬‫به‬‫نام‬cv::Vec3b‫را‬‫برای‬‫چنین‬‫برداری‬
‫دارد‬.‫که‬‫مشخص‬‫کننده‬‫برداری‬‫از‬‫سه‬‫کارکتر‬‫بدون‬‫عالمت‬‫است‬.‫به‬‫همین‬‫دلیل‬‫است‬‫که‬‫دسترسی‬‫به‬‫پیکسل‬‫های‬‫ر‬‫نگی‬‫به‬
‫صورت‬‫زیر‬‫انجام‬‫می‬‫شود‬:
•‫اندیس‬‫کانال‬‫یکی‬‫از‬‫سه‬‫کانال‬‫رنگی‬‫را‬‫مشخص‬‫می‬‫کند‬
•‫انواع‬‫مشابهی‬‫هم‬‫برای‬‫بردارهای‬2‫عنصری‬‫و‬4‫عنصری‬(cv::Vec2b‫و‬cv::Vec4b)‫و‬‫برای‬‫دیگر‬‫انواع‬‫وجود‬‫دارند‬.‫که‬‫برای‬
‫انواع‬‫دیگر‬‫حرف‬‫آخر‬‫برای‬short‫با‬s،‫برای‬‫عدد‬‫صحیح‬‫با‬i،‫برای‬‫اعشاری‬‫با‬f،‫و‬‫برای‬‫عدد‬‫اعشاری‬‫مضاعف‬‫با‬d‫جایگزین‬
‫می‬‫شود‬.‫همه‬‫این‬‫انواع‬‫با‬‫استفاده‬‫از‬‫کالس‬‫الگوی‬cv::Vec<T,N>‫تعریف‬‫می‬‫شوند‬.‫که‬T‫نوع‬‫و‬N‫تعداد‬‫عناصر‬‫بردار‬‫است‬.
4
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫پیکسل‬ ‫مقادیر‬ ‫به‬ ‫دسترسی‬‫ها‬
•‫استفاده‬‫از‬‫متد‬at‫کالس‬cv: : Mat‫گاهی‬‫می‬‫تواند‬‫دست‬‫و‬‫پاگیر‬‫باشد‬.‫زیرا‬‫نوع‬‫بازگشتی‬‫باید‬‫برای‬‫هر‬‫فراخونی‬‫مشخ‬‫ص‬
‫شود‬.
•‫در‬‫مواردی‬‫که‬‫نوع‬‫ماتریس‬‫مشخص‬،‫است‬‫می‬‫توان‬‫از‬‫کالس‬cv::Mat_‫استفاده‬‫کرد‬‫که‬‫یک‬‫زیرکالس‬‫الگو‬‫از‬cv::Mat
‫است‬.‫این‬‫کالس‬‫بدون‬‫اینکه‬‫هیچ‬‫ویژگی‬‫داده‬‫جدیدی‬‫اضافه‬،‫کند‬‫چند‬‫متد‬‫اضافه‬‫تعریف‬‫می‬‫کند‬.‫به‬‫طوری‬‫که‬‫اشار‬‫ه‬‫گرها‬‫یا‬
‫ارجاعات‬‫به‬‫یک‬‫کالس‬‫بتواند‬‫مستقیما‬‫به‬‫کالس‬‫دیگر‬‫تبدیل‬‫شوند‬.‫در‬‫بین‬‫این‬‫متدهای‬،‫اضافه‬‫اپراتور‬()‫وجود‬‫دارد‬‫که‬‫اجازه‬
‫دسترسی‬‫مستقیم‬‫به‬‫عناصر‬‫ماتریس‬‫را‬‫می‬‫دهد‬.‫بنابراین‬‫اگر‬image‫ارجاعی‬‫به‬‫یک‬‫ماتریس‬‫از‬‫نوع‬uchar،‫باشد‬‫می‬‫توان‬
‫نوشت‬:
•‫از‬‫آن‬‫جا‬‫که‬‫نوع‬‫عناصر‬cv::Mat_‫در‬‫زمان‬‫ایجاد‬‫متغیر‬‫اعالن‬‫می‬،‫شوند‬‫اپراتور‬()‫در‬‫زمان‬‫کامپایل‬‫می‬‫داند‬‫که‬‫چه‬‫نوعی‬‫را‬
‫باز‬‫گرداند‬.‫در‬‫واقع‬‫با‬‫استفاده‬‫از‬‫اپراتور‬)(‫دقیقا‬‫همان‬‫نتیجه‬‫متد‬at‫فراهم‬‫می‬‫شود‬.
5
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مثال‬
•‫برای‬‫اینکه‬‫دسترسی‬‫مستقیم‬‫به‬‫مقدار‬‫پیکسل‬‫ها‬‫را‬،‫ببینیم‬‫ما‬‫یک‬‫تابع‬‫ساده‬‫ایجاد‬‫خواهیم‬‫کرد‬‫که‬‫نویز‬‫سی‬‫اه‬‫و‬‫سفید‬(‫یا‬‫فلفل‬‫و‬
‫نمک‬)‫را‬‫به‬‫تصویر‬‫اضافه‬‫کند‬.
•‫همانطور‬‫که‬‫از‬‫اسمش‬،‫پیداست‬‫نویز‬‫سیاه‬‫و‬‫سفید‬‫نوع‬‫خاصی‬‫از‬‫نویز‬‫است‬‫که‬‫در‬‫آن‬‫مقدار‬‫برخی‬‫از‬‫پیکسل‬‫ها‬‫با‬‫سف‬‫ید‬‫و‬‫برخی‬
‫دیگر‬‫با‬‫سیاه‬‫عوض‬‫می‬‫شود‬.
•‫این‬‫نوع‬‫نویز‬‫می‬‫تواند‬‫در‬‫اثر‬‫خطاهای‬،‫ارتباطی‬‫زمانی‬‫که‬‫مقدار‬‫برخی‬‫از‬‫پیکسل‬‫ها‬‫در‬‫حین‬‫انتقال‬‫گم‬‫می‬،‫شود‬‫اتفاق‬‫بیافتد‬.
•‫در‬‫این‬‫مثال‬‫ابتدا‬‫به‬‫صورت‬‫تصادفی‬‫چند‬‫پیکسل‬‫را‬‫انتخاب‬‫کرده‬‫و‬‫سپس‬‫آن‬‫ها‬‫را‬‫سفید‬‫می‬‫کنیم‬.
6
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫گرها‬ ‫اشاره‬ ‫با‬ ‫تصویر‬ ‫پویش‬
7
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫گرها‬ ‫اشاره‬ ‫چرا‬
•‫در‬‫بسیاری‬‫از‬‫کارهای‬‫پردازش‬،‫تصویر‬‫نیاز‬‫است‬‫تا‬‫همه‬‫پیکسل‬‫های‬‫تصویر‬‫برای‬‫انجام‬‫یکسری‬‫محاسب‬‫ات‬‫پویش‬
‫شوند‬.
•‫با‬‫در‬‫نظر‬‫گرفتن‬‫تعداد‬‫بسیار‬‫زیاد‬‫پیکسل‬‫هایی‬‫که‬‫باید‬‫مالقات‬،‫شوند‬‫بسیار‬‫ضروری‬‫است‬‫که‬‫این‬‫کار‬‫به‬‫شکلی‬‫کارا‬
‫انجام‬‫شود‬.
•‫این‬‫دستورالعمل‬‫و‬‫دستورالعمل‬‫بعدی‬‫به‬‫شما‬‫روش‬‫های‬‫متفاوت‬‫پیاده‬‫سازی‬‫یک‬‫حلقه‬‫پویش‬‫تصویر‬‫را‬‫ن‬‫شان‬
‫خواهند‬‫داد‬.
•‫در‬‫این‬‫دستورالعمل‬‫از‬‫محاسبه‬‫اشاره‬‫گر‬‫استفاده‬‫می‬‫کنیم‬.
8
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫یادآوری‬
•‫در‬‫یک‬‫تصویر‬‫سه‬‫بایت‬‫اول‬‫بافر‬‫داده‬،‫تصویر‬‫مقادیر‬‫سه‬‫کانال‬‫رنگی‬‫پیکسل‬‫باال‬‫چپ‬‫را‬‫می‬،‫دهد‬‫سه‬‫ب‬‫ایت‬‫بعدی‬
‫مقادیر‬‫پیکسل‬‫دوم‬‫سطر‬‫اول‬‫و‬‫الی‬‫آخر‬.
•‫دقت‬‫کنید‬‫که‬OpenCV‫به‬‫طور‬‫پیش‬‫فرض‬‫ترتیب‬BGR‫کانال‬‫ها‬‫را‬‫استفاده‬‫می‬،‫کند‬‫بنابراین‬‫معموال‬‫اولین‬
،‫کانال‬‫کانال‬‫آبی‬‫است‬).
•‫تصویری‬‫به‬‫عرض‬W‫و‬‫ارتفاع‬H‫به‬‫بلوک‬‫حافظه‬‫ای‬‫به‬‫اندازه‬WxHx3‫کارکتر‬‫نیاز‬‫دارد‬.‫با‬‫این‬‫حال‬‫ممکن‬
‫است‬‫برای‬‫کارایی‬‫بیشتر‬‫به‬‫طول‬‫یک‬‫سطر‬‫چند‬‫پیکسل‬‫بیشتر‬‫اضافه‬‫شود‬.‫این‬‫به‬‫این‬‫دلیل‬‫است‬‫که‬‫برخی‬‫از‬
‫تراشه‬‫های‬‫پردازنده‬‫مالتی‬‫مدیا‬(‫برای‬،‫مثال‬‫معماری‬MMX‫اینتل‬)‫زمانی‬‫که‬‫سطرها‬‫مضربی‬‫از‬4‫یا‬8،‫هستند‬
‫می‬‫توانند‬‫تصاویر‬‫را‬‫بسیار‬‫کاراتر‬‫پردازش‬‫کنند‬.‫واضح‬‫است‬‫که‬‫این‬‫پیکسل‬‫های‬‫اضافه‬‫نمایش‬‫داده‬‫ن‬‫می‬‫شوند‬‫و‬‫یا‬
‫ذخیره‬‫نمی‬‫شوند‬.‫و‬‫مقدار‬‫دقیق‬‫آن‬‫ها‬‫نادیده‬‫گرفته‬‫می‬‫شود‬.
9
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫نکته‬ ‫چند‬
•‫ویژگی‬‫داده‬cols،‫عرض‬‫تصویر‬(‫تعداد‬‫ستون‬‫ها‬)‫و‬‫ویژگی‬rows‫ارتفاع‬‫تصویر‬‫را‬‫به‬‫شما‬‫می‬‫دهند‬.‫در‬‫حالی‬‫که‬
‫ویژگی‬‫داده‬step‫پهنای‬‫موثر‬‫بر‬‫حسب‬‫بایت‬‫را‬‫می‬‫دهد‬.
•‫حتی‬‫اگر‬‫تصویر‬‫شما‬‫از‬‫نوعی‬‫غیر‬‫از‬uchar،‫است‬‫باز‬‫هم‬step‫تعداد‬‫بایت‬‫های‬‫یک‬‫سطر‬‫را‬‫به‬‫شما‬‫می‬‫دهد‬.
•‫اندازه‬‫یک‬‫پیکسل‬‫توسط‬‫متد‬elemSize‫بدست‬‫می‬‫آید‬(‫برای‬‫مثال‬‫برای‬‫یک‬‫ماتریس‬‫سه‬‫کاناله‬‫از‬‫نوع‬short
integer (CV_16SC3)،‫متد‬elemSize‫عدد‬6‫را‬‫برمی‬‫گرداند‬).
•‫تعداد‬‫کانال‬‫ها‬‫در‬‫تصویر‬‫توسط‬‫متد‬nchanels‫بدست‬‫می‬‫آید‬(‫که‬‫برای‬‫تصویر‬‫خاکستری‬‫یک‬‫و‬‫برای‬‫یک‬‫تص‬‫ویر‬
‫رنگی‬‫سه‬‫است‬).
•‫در‬‫نهایت‬‫متد‬total‫تعداد‬‫کل‬‫پیکسل‬‫های‬‫ماتریس‬‫را‬‫برمی‬‫گرداند‬.
10
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫نکته‬ ‫چند‬
•‫پیکسل‬ ‫تعداد‬ ‫بنابراین‬‫می‬ ‫بدست‬ ‫زیر‬ ‫فرمول‬ ‫از‬ ‫سطر‬ ‫یک‬ ‫های‬‫آید‬:
•‫اشاره‬ ‫محاسبات‬ ‫کردن‬ ‫ساده‬ ‫برای‬‫کالس‬ ،‫گری‬cv: : Mat‫می‬ ‫ارائه‬ ‫را‬ ‫متدی‬‫یک‬ ‫آدرس‬ ‫شما‬ ‫به‬ ‫مستقیما‬ ‫که‬ ‫دهد‬
‫می‬ ‫را‬ ‫تصویر‬ ‫سطر‬‫دهد‬.‫که‬ ‫متد‬ ‫این‬ptr‫سطر‬ ‫آدرس‬ ‫که‬ ‫است‬ ‫الگو‬ ‫متد‬ ‫یک‬ ،‫دارد‬ ‫نام‬j‫برمی‬ ‫را‬ ‫ام‬‫گرداند‬:
11
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مثال‬
•‫رنگی‬ ‫تصویر‬ ‫یک‬ ‫بیایید‬256‫در‬256‫و‬ ‫کرده‬ ‫ایجاد‬
•‫بین‬ ‫آنها‬ ‫ستون‬ ‫و‬ ‫سطر‬ ‫اندیس‬ ‫که‬ ‫هایی‬ ‫پیکسل‬ ‫مقادیر‬0‫تا‬80‫برابر‬ ‫را‬ ‫باشد‬(0,0,255)
•‫بین‬ ‫آنها‬ ‫ستون‬ ‫و‬ ‫سطر‬ ‫اندیس‬ ‫که‬ ‫هایی‬ ‫پیکسل‬ ‫مقادیر‬80‫تا‬160‫برابر‬ ‫را‬ ‫باشد‬(0,255,0)
•‫بین‬ ‫آنها‬ ‫ستون‬ ‫و‬ ‫سطر‬ ‫اندیس‬ ‫که‬ ‫هایی‬ ‫پیکسل‬ ‫مقادیر‬160‫تا‬256‫برابر‬ ‫را‬ ‫باشد‬(255,0,0)‫دهیم‬ ‫قرار‬.
12
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫تکرارگرها‬ ‫با‬ ‫تصویر‬ ‫پویش‬
13
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مقدمه‬
•‫در‬‫برنامه‬‫نویسی‬‫شیئ‬،‫گرا‬‫حلقه‬‫زدن‬‫روی‬‫یک‬‫مجموعه‬‫داده‬‫اغلب‬‫با‬‫استفاده‬‫از‬‫تکرارگرها‬‫انجام‬‫می‬‫شود‬.
•‫تکرارگرها‬‫کالس‬‫های‬‫خاصی‬‫هستند‬‫که‬‫برای‬‫مرور‬‫تک‬‫تک‬‫عناصر‬‫یک‬‫مجموعه‬‫ساخته‬‫می‬‫شوند‬.‫به‬‫طوری‬‫ک‬‫ه‬
‫جزئیات‬‫چکونگی‬‫تکرار‬‫روی‬‫هر‬‫عنصر‬‫برای‬‫یک‬‫مجموعه‬‫داده‬‫را‬‫می‬‫پوشانند‬.
•‫این‬‫کاربرد‬‫اصل‬‫پنهان‬‫سازی‬،‫اطالعات‬‫پویش‬‫یک‬‫مجموعه‬‫را‬‫ساده‬‫تر‬‫می‬‫کند‬.
•‫عالوه‬‫بر‬‫این‬‫فرم‬‫پویش‬‫مجموعه‬‫ها‬‫را‬‫بدون‬‫توجه‬‫به‬‫اینکه‬‫چه‬‫نوع‬‫مجموعه‬‫ای‬‫در‬‫حال‬‫استفاده‬،‫است‬‫به‬‫یک‬
‫شکل‬‫مشابه‬‫تبدیل‬‫می‬‫کند‬.
•OpenCV‫یک‬‫کالس‬‫تکرارگر‬cv: : Mat‫مطابق‬‫با‬‫تکرارگرهای‬‫استاندارد‬C++‫ارائه‬‫می‬‫دهد‬.
•‫هدف‬‫اصلی‬‫استفاده‬‫از‬‫تکرارگرها‬‫ساده‬‫سازی‬‫فرآیند‬‫پویش‬‫تصویر‬‫و‬‫کاهش‬‫احتمال‬‫خطا‬‫ست‬.‫و‬‫اساسا‬‫بر‬‫ای‬‫بهینه‬
‫سازی‬‫این‬‫فرآیند‬‫نیست‬.
14
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مقدمه‬
•‫یک‬‫شیئ‬‫تکرارگر‬‫برای‬‫یک‬cv:: Mat‫را‬‫می‬‫توان‬‫در‬‫ابتدا‬‫با‬‫ایجاد‬‫یک‬cv::MatIterator_ object‫بدست‬
‫آورد‬.
•‫خط‬‫فاصله‬‫به‬‫معنای‬‫این‬‫است‬‫که‬‫این‬‫یک‬‫متد‬‫الگوست‬.‫در‬‫حقیقت‬‫از‬‫آن‬‫جا‬‫که‬‫از‬‫تکرارگرهای‬‫تصویر‬‫ب‬‫رای‬
‫دسترسی‬‫به‬‫عناصر‬‫تصویر‬‫استفاده‬‫می‬‫شو‬‫ن‬‫د‬،‫نوع‬‫بازگشتی‬‫بایستی‬‫در‬‫زمان‬‫کامپایل‬‫مشخص‬‫باش‬‫د‬.‫سپس‬‫تکرارگر‬
‫به‬‫صورت‬‫زیر‬‫اعالن‬‫می‬‫شود‬:
15
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مقدمه‬
•‫و‬‫یا‬‫اینکه‬‫می‬‫توانید‬‫نوع‬iterator‫تعریف‬‫شده‬‫در‬‫کالس‬Mat_template‫را‬‫هم‬‫استفاده‬‫کنید‬:
•‫آنگاه‬‫روی‬‫پیکسل‬‫ها‬‫با‬‫استفاده‬‫از‬‫متدهای‬‫تکرارگر‬begin‫و‬end‫معمولی‬‫حلقه‬‫می‬‫زنید‬.
16
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مقدمه‬
‫کار‬‫با‬‫تکرارگرها‬‫صرفنظ‬‫ر‬‫از‬
‫اینکه‬‫چه‬‫نوع‬‫مجموعه‬‫ای‬‫را‬
‫پویش‬‫می‬،‫کنیم‬‫همیشه‬‫از‬
‫یک‬‫مدل‬‫پیروی‬‫می‬‫کند‬.
17
1
‫ما‬ ‫مثال‬ ‫در‬ ‫که‬ ‫مناسب‬ ‫کالس‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ ‫خود‬ ‫تکرارگر‬ ‫شیئ‬ ‫ابتدا‬cv::Mat_<cv::Vec3b>::iterator
(‫یا‬cv::MatIterator_<cv::Vec3b>)‫می‬ ‫ایجاد‬ ،‫است‬‫کنید‬.
2
‫متد‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫سپس‬begin‫می‬ ‫بدست‬ ‫را‬ ‫دارد‬ ‫قرار‬ ‫شروع‬ ‫نقطه‬ ‫در‬ ‫که‬ ‫تکرارگری‬‫آورید‬(‫با‬ ‫گوشه‬ ،‫ما‬ ‫مثال‬ ‫در‬‫ال‬
‫تصویر‬ ‫چپ‬.)‫مورد‬ ‫یک‬ ‫برای‬cv: : Mat‫صورت‬ ‫به‬ ‫کار‬ ‫این‬image.begin<cv::Vec3b>()‫می‬ ‫انجام‬‫شود‬.
3
‫متد‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫اما‬ ‫مشابه‬ ‫صورت‬ ‫به‬ ‫هم‬ ‫شما‬ ‫مجموعه‬ ‫پایانی‬ ‫موقعیت‬end‫می‬ ‫بدست‬‫آید‬.
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مقدمه‬
•‫پس‬‫از‬‫مقداردهی‬‫اولیه‬،‫تکرارگر‬‫یک‬‫حلقه‬‫ایجاد‬‫می‬‫کنید‬‫به‬‫طوری‬‫که‬‫روی‬‫همه‬‫عناصر‬‫تا‬‫رسیدن‬‫به‬end‫تکرار‬
‫شود‬.‫یک‬‫حلقه‬while‫نوعی‬‫به‬‫شکل‬‫زیر‬‫خواهد‬‫بود‬:
•‫از‬‫اپراتور‬++‫برای‬‫حرکت‬‫به‬‫عنصر‬‫بعدی‬‫استفاده‬‫می‬‫شود‬.‫همچنین‬‫می‬‫توانید‬‫از‬‫اندازه‬‫گام‬‫بلندتری‬‫اس‬‫تفاده‬‫کنید‬.
‫برای‬‫مثال‬it+=10‫هر‬‫ده‬‫پیکسل‬‫را‬‫مورد‬‫پردازش‬‫قرا‬‫ر‬‫می‬‫دهد‬.
•‫در‬‫نهایت‬‫درون‬‫حلقه‬،‫پردازش‬‫می‬‫توانید‬‫از‬‫اپراتور‬*‫برای‬‫دسترسی‬‫به‬‫عنصر‬‫کنونی‬‫استفاده‬‫کنید‬.‫ک‬‫ه‬‫با‬‫استفاده‬
‫از‬‫این‬‫اپراتور‬‫می‬‫توانید‬‫عنصر‬‫را‬‫خوانده‬(‫برای‬‫مثال‬element= *it)‫و‬‫یا‬‫بنویسید‬(‫برای‬‫مثال‬*it= element;).
18
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مثال‬
•‫دهید‬ ‫تغییر‬ ‫را‬ ‫آن‬ ‫مختلف‬ ‫های‬ ‫کانال‬ ‫مقادیر‬ ‫و‬ ‫کرده‬ ‫پویش‬ ‫تکرارگرها‬ ‫از‬ ‫استفاده‬ ‫با‬ ‫را‬ ‫تصویر‬ ‫یک‬.
19
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫پوی‬ ‫هنگام‬ ‫در‬ ‫مجاور‬ ‫های‬ ‫پیکسل‬ ‫به‬ ‫دسترسی‬‫ش‬
‫تصویر‬
20
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مقدمه‬
•‫در‬‫پردازش‬،‫تصویر‬‫توابع‬‫پردازشی‬‫که‬‫یک‬‫مقدار‬‫را‬‫در‬‫هر‬‫پیکسل‬‫بر‬‫اساس‬‫مقادیر‬‫پیکسل‬‫های‬‫همسای‬‫ه‬‫محاسبه‬
‫می‬،‫کنند‬‫بسیار‬‫متداول‬‫هستند‬.
•‫زمانی‬‫که‬‫این‬‫پیکسل‬‫های‬‫همسایه‬‫شامل‬‫پیکسل‬‫های‬‫سطرهای‬‫قبل‬‫و‬‫بعد‬‫نیز‬،‫هستند‬‫باید‬‫بتوانی‬‫د‬‫همزمان‬‫چند‬
‫سطر‬‫تصویر‬‫را‬‫پویش‬‫کنید‬.‫این‬‫دستورالعمل‬‫به‬‫شما‬‫نحوه‬‫انجام‬‫کار‬‫را‬‫نشان‬‫می‬‫دهد‬.
21
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مثال‬
•‫واضح‬ ‫را‬ ‫تصویر‬ ‫که‬ ‫پردازشی‬ ‫تابع‬ ‫یک‬ ‫از‬ ‫ما‬ ،‫عمل‬ ‫این‬ ‫بیان‬ ‫برای‬(sharp)‫کنیم‬ ‫می‬ ‫استفاده‬ ،‫کند‬ ‫می‬.‫اینکار‬
‫عملگر‬ ‫براساس‬‫الپالسین‬‫است‬.‫لب‬ ،‫کنید‬ ‫کم‬ ‫تصویر‬ ‫خود‬ ‫از‬ ‫را‬ ‫تصویر‬ ‫یک‬ ‫الپالسین‬ ‫اگر‬ ‫حقیقت‬ ‫در‬‫تصویر‬ ‫های‬ ‫ه‬
‫شود‬ ‫می‬ ‫تولید‬ ‫تری‬ ‫واضح‬ ‫تصویر‬ ‫و‬ ‫شده‬ ‫تقویت‬.‫شود‬ ‫می‬ ‫محاسبه‬ ‫زیر‬ ‫صورت‬ ‫به‬ ‫سازی‬ ‫واضح‬ ‫عملگر‬ ‫این‬:
22
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫تصویر‬ ‫ساده‬ ‫محاسبات‬ ‫انجام‬
23
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
cv:: add
•‫توابع‬ ‫همه‬‫محاسباتی‬‫عمل‬ ‫مشابهی‬ ‫روش‬ ‫به‬‫میکنند‬.‫خر‬ ‫سوم‬ ‫پارامتر‬ ‫یک‬ ‫و‬ ‫شده‬ ‫مهیا‬ ‫ورودی‬ ‫دو‬‫وجی‬
‫مشخص‬ ‫را‬‫میکند‬.‫مواقع‬ ‫برخی‬ ‫در‬‫میتوان‬‫اسکالردر‬ ‫ضرایب‬ ‫عنوان‬ ‫به‬ ‫که‬ ‫نمود‬ ‫مشخص‬ ‫را‬ ‫اوزانی‬‫عملگر‬
‫قرار‬ ‫استفاده‬ ‫مورد‬‫میگیرند‬.
24
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
cv:: add
•‫برای‬‫برخی‬‫از‬‫توابع‬‫می‬‫توانید‬‫ماسک‬‫هم‬‫تعریف‬‫کنید‬:
•‫اگر‬‫ماسک‬‫را‬‫اعمال‬،‫کنید‬‫عملیات‬‫تنها‬‫روی‬‫پیکسل‬‫هایی‬‫که‬‫برای‬‫آن‬‫ها‬‫مقدار‬‫ماسک‬‫نال‬‫نیس‬،‫ت‬
‫انجام‬‫می‬‫شود‬(‫ماسک‬‫باید‬‫تک‬‫کانال‬‫باشد‬).
•‫تابع‬ ‫حاالت‬ ‫همه‬ ‫در‬cv::saturate_cast‫مقدار‬ ‫حوزه‬ ‫در‬ ‫نتایج‬ ‫اینکه‬ ‫از‬ ‫اطمینان‬ ‫برای‬ ‫همیشه‬
‫می‬ ‫قرار‬ ‫استفاده‬ ‫مورد‬ ،‫ماند‬ ‫می‬ ‫باقی‬ ‫شده‬ ‫تعریف‬‫گیرد‬(‫و‬ ‫سرریز‬ ‫از‬ ‫اجتناب‬ ‫برای‬ ‫یعنی‬underflow.)
25
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫محاسباتی‬ ‫توابع‬ ‫دیگر‬
•‫به‬‫فرم‬‫های‬‫مختلف‬‫توابع‬cv::subtract،cv::absdiff،cv::multiply‫و‬cv::divide
‫هم‬‫نگاهی‬‫بیاندازید‬.
•‫عملگرهای‬‫بیتی‬‫نیز‬‫موجود‬‫هستند‬:cv::bitwise_and, cv::bitwise_or
cv::bitwise_xor,‫و‬cv::bitwise_not.
•‫عملگرهای‬cv::min‫و‬cv::max‫هم‬‫که‬‫مقادیر‬‫بیشینه‬‫و‬‫کمینه‬‫پیکسل‬‫های‬‫متناظر‬‫را‬‫پی‬‫دا‬
‫می‬‫کنند‬‫نیز‬‫بسیار‬‫مفید‬‫هستند‬.
26
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫محاسباتی‬ ‫توابع‬ ‫دیگر‬
•‫تصاویر‬‫بایستی‬‫اندازه‬‫و‬‫نوع‬‫یکسانی‬‫داشته‬‫باشند‬.‫همچنین‬‫از‬‫آن‬‫جا‬‫که‬‫عملیات‬‫برای‬‫هر‬‫ع‬‫نصر‬‫انجام‬
‫می‬،‫شود‬‫یکی‬‫از‬‫تصاویر‬‫ورودی‬‫می‬‫تواند‬‫به‬‫عنوان‬‫خروجی‬‫مورد‬‫استفاده‬‫قرار‬‫گیرد‬.
•‫تعدادی‬‫عملگر‬‫نیز‬‫که‬‫یک‬‫تصویر‬‫را‬‫به‬‫عنوان‬‫ورودی‬‫می‬،‫گیرند‬‫نیز‬‫وجود‬‫دارند‬:
cv::sqrt
cv::pow
cv::abs
cv::exp
‫و‬cv::log
•‫در‬‫واقع‬‫برای‬‫تقریبا‬‫هر‬‫کاری‬‫که‬‫باید‬‫روی‬‫تصاویر‬‫اعمال‬،‫شود‬‫یک‬‫تابع‬OpenCV‫وجود‬‫دارد‬.
27
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫عملگرها‬ ‫سربارگذاری‬
•‫در‬OpenCV 2‫بسیاری‬‫از‬‫توابع‬‫محاسباتی‬‫عملگر‬‫متناظر‬‫با‬‫خود‬‫دارند‬‫که‬‫سربارگذاری‬‫شده‬‫اند‬.‫در‬
‫نتیجه‬‫فراخوانی‬cv::addWeighted‫را‬‫می‬‫توان‬‫به‬‫صورت‬‫زیر‬‫نوشت‬:
•‫بسیاری‬‫از‬‫عملگرهای‬C++‫سربارگذاری‬‫شده‬‫هستند‬.
28
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫عملگرها‬ ‫سربارگذاری‬
•‫در‬‫بین‬‫آن‬‫ها‬‫عملگرهای‬‫بیتی‬&, |, ^, ~،‫توابع‬min, max‫و‬abs‫و‬‫عملگرهای‬‫مقایسه‬‫ای‬<,
<=, ==,!=, >, >=‫وجود‬‫دارند‬.‫که‬‫این‬‫دسته‬‫آخر‬‫یک‬‫تصویر‬8‫بیتی‬‫باینری‬‫برمی‬‫گرداند‬.
•‫همچنین‬‫می‬‫توانید‬‫عملگرهای‬‫ضرب‬‫ماتریسی‬m1*m2،‫وارون‬‫ماتریس‬m1.inv()،‫ترانهاده‬
‫ماتریس‬m1.t()،‫دترمینان‬m1.determinant()،‫نرم‬‫برداری‬, v1.norm()‫ضرب‬‫خارجی‬
v1.cross(v2)‫،ضرب‬‫داخلی‬v1.dot(v2)‫و‬‫از‬‫این‬‫قبیل‬‫را‬‫می‬‫توانید‬‫داشته‬‫باشید‬.
•‫همچنین‬‫می‬‫توانید‬‫عملگر‬op=(‫مثال‬+=)‫را‬‫تعریف‬‫کنید‬.
29
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫کانال‬ ‫کردن‬ ‫جدا‬‫تصویر‬ ‫های‬
30
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫کانال‬ ‫کردن‬ ‫جدا‬‫تصویر‬ ‫های‬
•‫خیلی‬‫وقت‬‫ها‬‫می‬‫خواهیم‬‫کانال‬‫های‬‫متفاوت‬‫یک‬‫تصویر‬‫را‬‫به‬‫صورت‬‫مستقل‬‫پردازش‬‫کنیم‬.
•‫برای‬‫مثال‬‫ممکن‬‫است‬‫بخواهید‬‫که‬‫کاری‬‫را‬‫تنها‬‫روی‬‫یک‬‫کانال‬‫تصویر‬‫انجام‬‫دهید‬.‫قطعا‬‫می‬‫ت‬‫وانید‬
‫این‬‫کار‬‫را‬‫از‬‫طریق‬‫یک‬‫حلقه‬‫پویش‬‫تصویر‬‫هم‬‫انجام‬‫دهید‬.
•‫اما‬‫می‬‫توانید‬‫از‬‫تابع‬cv::split‫هم‬‫که‬‫سه‬‫کانال‬‫یک‬‫تصویر‬‫رنگی‬‫را‬‫در‬‫سه‬‫نمونه‬‫مجزای‬
cv::Mat‫کپی‬‫می‬،‫کند‬‫را‬‫هم‬‫استفاده‬‫کنید‬.
•‫تابع‬cv::merge‫دوگان‬‫عمل‬‫قبل‬‫است‬.‫یعنی‬‫این‬‫تابع‬‫یک‬‫تصویر‬‫رنگی‬‫را‬‫از‬‫سه‬‫تصویر‬‫ت‬‫ک‬‫کانال‬
‫می‬‫سازد‬.
31
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مثال‬
•‫فرض‬‫کنید‬‫می‬‫خواهیم‬‫تصویر‬‫بارانی‬‫خود‬‫را‬‫تنها‬‫به‬‫کانال‬‫آبی‬‫تصویر‬‫اضافه‬‫کنیم‬.‫در‬‫این‬‫صورت‬‫به‬
‫روش‬‫زیر‬‫باید‬‫عمل‬‫کرد‬:
32
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مثال‬
•‫فرض‬‫کنید‬‫می‬‫خواهیم‬‫تصویر‬‫بارانی‬‫خود‬‫را‬‫تنها‬‫به‬‫کانال‬‫آبی‬‫تصویر‬‫اضافه‬‫کنیم‬.‫در‬‫این‬‫صورت‬‫به‬
‫روش‬‫زیر‬‫باید‬‫عمل‬‫کرد‬:
33
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫عالقه‬ ‫مورد‬ ‫نواحی‬ ‫تعریف‬
34
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
ROI
•‫گاهی‬‫اوقات‬‫یک‬‫تابع‬‫پردازشی‬‫بایستی‬‫تنها‬‫روی‬‫یک‬‫بخش‬‫تصویر‬‫اعمال‬‫شود‬.‫در‬‫اینجا‬‫به‬‫شما‬‫نشان‬
‫می‬‫دهیم‬‫که‬‫چگونه‬‫یک‬‫ناحیه‬‫مورد‬‫عالقه‬‫را‬‫درون‬‫یک‬‫تصویر‬‫تعریف‬‫کنید‬.
•‫ا‬‫ولین‬‫مرحله‬‫شامل‬‫تعریف‬ROI‫است‬.‫با‬‫یکبار‬‫تعریف‬ROI،‫می‬‫توان‬‫با‬‫آن‬‫مانند‬‫یک‬‫نمونه‬
cv::Mat‫معمولی‬‫کار‬‫کرد‬.‫نکته‬‫مهم‬‫آن‬‫است‬‫که‬‫نقاط‬ROI‫به‬‫همان‬‫بافر‬‫داده‬‫به‬‫عنوان‬‫تصویر‬‫والد‬
‫اشاره‬‫می‬‫کنند‬.
35
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
ROI
•‫ناحیه‬‫مورد‬‫عالقه‬‫یک‬‫ناحیه‬‫مستطیلی‬‫را‬‫با‬‫مشخص‬‫کردن‬‫موقعیت‬‫گوشه‬‫باال‬-‫چپ‬(‫دو‬‫پارام‬‫تر‬‫اول‬
‫سازنده‬‫آن‬)‫و‬‫اندازه‬‫مستطیل‬(‫طول‬‫و‬‫عرض‬‫دو‬‫پارامتر‬‫بعدی‬‫هستند‬)‫توصیف‬‫می‬‫کند‬.
•‫یک‬‫راه‬‫تعریف‬ROI،‫استفاده‬‫از‬‫یک‬‫مورد‬cv::Rect‫است‬.
36
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
ROI
•‫همچنین‬ROI‫می‬‫تواند‬‫با‬‫استفاده‬‫از‬‫محدوده‬‫های‬‫سطر‬‫وستون‬‫نیز‬‫توصیف‬‫شود‬.‫یک‬‫محدوده‬‫د‬‫نباله‬
‫ای‬‫پیوسته‬‫است‬‫که‬‫از‬‫یک‬‫اندیس‬‫شروع‬‫و‬‫به‬‫اندیسی‬‫دیگر‬‫خاتمه‬‫می‬‫یابد‬(‫اندیس‬‫آخر‬‫جزء‬‫م‬‫حدوده‬
‫محسوب‬‫نمی‬‫شود‬).‫ساختار‬cv::Range‫برای‬‫نمایش‬‫این‬‫مفهوم‬‫استفاده‬‫می‬‫شود‬.‫بنابراین‬‫یک‬
ROI‫می‬‫تواند‬‫از‬‫دو‬‫محدوده‬‫تعریف‬‫شود‬.
37
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
ROI
•‫هر‬‫تغییری‬‫در‬ROI‫روی‬‫تصویر‬‫اولیه‬‫در‬‫ناحیه‬‫متناظر‬‫تاثیر‬‫می‬‫گذارد‬.‫چرا‬‫که‬‫تصویر‬‫و‬ROI‫از‬‫داده‬
‫تصویر‬‫به‬‫صورت‬‫اشتراکی‬‫استفاده‬‫می‬‫کنند‬.‫تعریف‬‫یک‬ROI‫داده‬‫ای‬‫را‬‫کپی‬‫نمی‬‫کند‬.
•‫اگر‬‫بخواهید‬‫یک‬ROI‫متشکل‬‫از‬‫چند‬‫خط‬‫یک‬‫تصویر‬‫را‬‫تعریف‬،‫کنید‬‫فراخوانی‬‫زیر‬‫می‬‫تواند‬‫ا‬‫ستفاده‬
‫شود‬:
•‫و‬‫به‬‫صورت‬‫مشابه‬‫برای‬‫یک‬ROI‫متشکل‬‫از‬‫چند‬‫ستون‬‫تصویر‬:
38
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مثال‬
‫درج‬‫لوگو‬‫بر‬‫روی‬‫تصویر‬
39
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫رنگ‬ ‫فضاهای‬ ‫تبدیل‬
40
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫حوزه‬‫رنگی‬RGB
•‫اساس‬‫حوزه‬‫رنگی‬RGB‫استفاده‬‫از‬‫سه‬‫مؤلفه‬‫رنگی‬‫اصلی؛‬،‫قرمز‬‫سبز‬‫و‬‫آبی‬‫باشد‬‫می‬.‫این‬‫سه‬‫رن‬‫گ‬‫به‬
‫این‬‫دلیل‬‫انتخاب‬‫اند‬‫شده‬‫که‬‫با‬‫ترکیب‬‫آنها‬‫توان‬‫می‬‫هر‬‫رنگ‬‫دلخواهی‬‫را‬‫ایجاد‬‫نمود‬.
•‫در‬‫حقیقت‬‫سیستم‬‫بینایی‬‫انسان‬‫نیز‬‫از‬‫های‬‫سلول‬‫مخروطی‬‫شکلی‬‫استفاده‬‫کند‬‫می‬‫که‬‫ن‬‫سبت‬‫به‬
‫های‬‫طیف‬‫رنگی‬،‫قرمز‬‫سبز‬‫و‬‫آبی‬‫حساس‬‫است‬.
•‫این‬‫سیستم‬،‫رنگی‬‫سیستم‬‫فرض‬‫پیش‬‫تصاویر‬‫دیجیتالی‬‫باشد‬‫می‬‫به‬‫این‬‫دلیل‬‫که‬‫ت‬‫صاویر‬‫با‬‫استفاده‬‫از‬
‫این‬‫سه‬‫مؤلفه‬‫از‬‫محیط‬‫گرفته‬‫شوند‬‫می‬.‫در‬‫زمان‬‫گرفتن‬‫تصویر‬‫از‬،‫محیط‬‫نور‬‫دریافت‬‫شده‬‫ب‬‫ا‬‫استفاده‬
‫از‬‫فیلترهای‬‫رنگی‬‫به‬‫سه‬‫مؤلفه‬،‫قرمز‬‫سبز‬‫و‬‫آبی‬‫تجزیه‬‫شده‬‫و‬‫ذخیره‬‫شوند‬‫می‬.
41
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫مشکالت‬RGB
•‫متأسفانه‬‫تفاضل‬‫ها‬‫رنگ‬‫در‬‫حوزه‬RGB‫راهکار‬‫مناسبی‬‫برای‬‫گیری‬‫اندازه‬‫میزان‬‫شباهت‬‫دو‬‫رنگ‬
‫باشد‬‫نمی‬.‫در‬‫واقع‬‫این‬‫حوزه‬‫رنگی‬‫از‬‫یکنواختی‬‫ادراکی‬‫برخوردار‬‫باشد‬‫نمی‬.‫این‬‫به‬‫این‬‫معن‬‫ی‬‫است‬
‫که‬‫دو‬‫رنگ‬‫با‬‫تفاضل‬،‫مشخص‬‫ممکن‬‫است‬‫به‬‫یکدیگر‬‫شبیه‬‫باشند‬‫در‬‫صورتی‬‫که‬‫دو‬‫رنگ‬‫دیگر‬‫با‬
‫همان‬‫میزان‬‫تفاضل‬‫گونه‬‫هیچ‬‫شباهتی‬‫به‬‫یکدیگر‬‫نداشته‬‫باشند‬.
•‫در‬‫حوزه‬RGB،‫مولفه‬‫روشنایی‬‫از‬‫مولفه‬‫رنگ‬‫جدا‬‫نیست‬.
•‫با‬‫توصیف‬‫انسان‬‫از‬‫رنگ‬‫ها‬‫مغایرت‬‫دارد‬.
•‫به‬‫منظور‬‫حل‬‫این‬‫مشکل‬‫فضاهای‬‫رنگی‬‫دیگری‬‫همچون‬‫مثال‬HSV،CIE L*a*b*،...‫معرفی‬‫شده‬
‫اند‬‫که‬‫هر‬‫یک‬‫دارای‬‫خواص‬‫متفاوتی‬‫هستند‬.
42
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫دیگر‬ ‫رنگی‬ ‫فضاهای‬
•‫حوزه‬‫رنگی‬HSV‫و‬HLS‫دوحوزه‬‫رنگی‬‫متداول‬‫دیگری‬‫هستند‬‫که‬‫ترین‬‫مهم‬‫خاصیت‬‫آنها‬‫این‬‫است‬
‫که‬‫ها‬‫رنگ‬‫رابه‬‫صورت‬3‫مؤلفه؛‬،‫رنگ‬‫درجه‬‫اشباع‬‫و‬‫میزان‬‫روشنایی‬‫که‬‫انسان‬‫نیز‬‫برای‬‫توصیف‬‫ر‬‫ها‬‫نگ‬
‫ازآنها‬‫استفاده‬،‫کند‬‫می‬‫ارائه‬‫دهند‬‫می‬.
•‫فضای‬‫رنگی‬‫دیگری‬‫معرفی‬‫شده‬‫است‬‫که‬‫دارای‬‫خاصیت‬‫یکنواختی‬‫ادراکی‬‫باشد‬‫می‬.‫این‬‫فض‬‫ای‬‫رنگی‬
CIE L*a*b*‫نام‬‫دارد‬.‫با‬‫تبدیل‬‫تصاویر‬‫به‬‫این‬‫حوزه‬،‫رنگی‬‫تفاضل‬‫اقلیدسی‬‫بین‬‫رنگ‬‫پ‬‫ها‬‫یکسل‬‫و‬
‫رنگ‬‫هدف‬ً‫ال‬‫کام‬‫معنادار‬‫بوده‬‫و‬‫این‬‫تفاضل‬‫معرف‬‫میزان‬‫شباهت‬‫بین‬‫دو‬‫رنگ‬‫خواهد‬‫بود‬.
•‫یکی‬‫دیگر‬‫از‬‫این‬‫های‬‫حوزه‬‫رنگی‬YCrCb‫است‬‫که‬‫در‬‫ذخیره‬‫سازی‬‫تصاویر‬‫با‬‫فرمت‬JPEG‫مورد‬
‫استفاده‬‫گیرد‬‫قرارمی‬
43
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
cvtColor
•‫تبدیل‬‫در‬‫حوزه‬‫رنگ‬‫به‬‫سادگی‬‫و‬‫توسط‬‫تابع‬cv::cvtColor‫کتابخانه‬OpenCV‫قاب‬‫ل‬‫انجام‬‫است‬.
‫مثال‬‫بیایید‬‫تا‬‫حوزه‬‫رنگی‬RGB‫تصویر‬‫ورودی‬‫را‬‫به‬CIE L*a*b*‫تبدیل‬‫نماییم‬:
cv::cvtColor(image, converted, CV_BGR2Lab);
44
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
cvtColor
•‫نوع‬‫ها‬‫پیکسل‬‫در‬‫تصویر‬‫خروجی‬‫همانند‬‫نوع‬‫ها‬‫پیکسل‬‫در‬‫تصویر‬‫ورودی‬‫خواهد‬‫بود‬.‫اما‬‫باید‬‫ت‬‫وجه‬
‫داشت‬‫که‬‫همواره‬‫دامنه‬‫مقادیر‬‫ها‬‫پیکسل‬‫به‬‫حوزه‬‫رنگی‬‫تصویر‬‫وابسته‬‫است‬.‫برای‬‫مثال‬‫در‬‫ت‬‫صاویر‬‫با‬
‫حوزه‬‫رنگی‬CIE L*a*b*‫مقادیر‬‫ها‬‫پیکسل‬‫درکانال‬L‫دربازه‬0‫تا‬100‫های‬‫ودرکانال‬a‫و‬b‫دربازه‬
127-‫تا‬127‫باشد‬‫می‬.
•‫کتابخانه‬OpenCV‫از‬‫های‬‫اکثرحوزه‬‫رنگی‬‫پشتیبانی‬‫کند‬‫می‬‫و‬‫تنها‬‫در‬‫زمان‬‫تبدیل‬‫الزم‬‫است‬‫پ‬‫ارامتر‬
‫مناسب‬‫به‬‫تابع‬‫تبدیل‬‫داده‬‫شود‬.
•‫همچنین‬‫توان‬‫می‬‫تصویر‬‫را‬‫به‬‫فرم‬‫خاکستری‬‫تبدیل‬‫نمود‬‫که‬‫در‬‫نتیجه‬‫تصویر‬‫خروجی‬‫شام‬‫ل‬‫یک‬
‫کانال‬‫خواهدبود‬.
cv::cvtColor(color, gray, CV_BGR2Gray);
45
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
46
‫در‬ ‫شده‬ ‫مطرح‬ ‫نکات‬ ‫مبنای‬ ‫بر‬ ‫ها‬ ‫اسالید‬ ‫این‬‫فرادرس‬
«‫با‬ ‫تصویر‬ ‫پردازش‬ ‫آموزش‬»
‫است‬ ‫شده‬ ‫تهیه‬.
‫به‬ ‫آموزش‬ ‫این‬ ‫مورد‬ ‫در‬ ‫بیشتر‬ ‫اطالعات‬ ‫کسب‬ ‫برای‬‫مراجعه‬ ‫زیر‬ ‫لینک‬‫نمایید‬.
faradars.org/fvimg9405
‫پردازش‬‫تصویر‬‫با‬
faradars.org/fvimg9405
‫س‬‫ر‬‫د‬‫ا‬‫ﺮ‬‫ﻓ‬
FaraDars.org

More Related Content

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

طرح درس روزانه رایانه کار پیشرفته.Docx95
طرح درس روزانه رایانه کار  پیشرفته.Docx95طرح درس روزانه رایانه کار  پیشرفته.Docx95
طرح درس روزانه رایانه کار پیشرفته.Docx95
kimiyaabedini
 
طرح درس روزانه کاربر کارل دراو
طرح درس روزانه کاربر کارل دراوطرح درس روزانه کاربر کارل دراو
طرح درس روزانه کاربر کارل دراو
kimiyaabedini
 

Similar to آموزش پردازش تصویر با OpenCV - بخش دوم (20)

Network management 2_sample
Network management 2_sampleNetwork management 2_sample
Network management 2_sample
 
Ip mv workshop
Ip mv workshopIp mv workshop
Ip mv workshop
 
Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2Rbdmap ceph realease 0.2
Rbdmap ceph realease 0.2
 
Ravar matrix 03 09 1398
Ravar matrix 03 09 1398Ravar matrix 03 09 1398
Ravar matrix 03 09 1398
 
programing.pptx
programing.pptxprograming.pptx
programing.pptx
 
Pg autoscaling in ceph
Pg autoscaling in  cephPg autoscaling in  ceph
Pg autoscaling in ceph
 
طرح درس روزانه رایانه کار پیشرفته.Docx95
طرح درس روزانه رایانه کار  پیشرفته.Docx95طرح درس روزانه رایانه کار  پیشرفته.Docx95
طرح درس روزانه رایانه کار پیشرفته.Docx95
 
rbdmap in ceph
rbdmap in ceph rbdmap in ceph
rbdmap in ceph
 
Lecture2
Lecture2Lecture2
Lecture2
 
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیرازIntroduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
Introduction to Hadoop and Spark - اسلاید کارگاه آموزش هدوپ و اسپارک شیراز
 
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
1st Hadoop Tehran Workshop - اسلاید اولین کارگاه آموزش هدوپ تهران
 
how enable ceph dashboard
how enable  ceph dashboardhow enable  ceph dashboard
how enable ceph dashboard
 
Mohamady zahedy c#
Mohamady zahedy c#Mohamady zahedy c#
Mohamady zahedy c#
 
پیش مقدمه آموزش نرم افزار متلب
پیش مقدمه آموزش نرم افزار متلبپیش مقدمه آموزش نرم افزار متلب
پیش مقدمه آموزش نرم افزار متلب
 
Sql tuning
Sql tuningSql tuning
Sql tuning
 
lunch box plugin
 lunch box plugin  lunch box plugin
lunch box plugin
 
Docker
DockerDocker
Docker
 
Repository pattern
Repository patternRepository pattern
Repository pattern
 
طرح درس روزانه کاربر کارل دراو
طرح درس روزانه کاربر کارل دراوطرح درس روزانه کاربر کارل دراو
طرح درس روزانه کاربر کارل دراو
 
Kotlin
KotlinKotlin
Kotlin
 

More from faradars

More from faradars (20)

آموزش شبیه سازی مدارات الکتریکی با OrCAD
آموزش شبیه سازی مدارات الکتریکی با OrCADآموزش شبیه سازی مدارات الکتریکی با OrCAD
آموزش شبیه سازی مدارات الکتریکی با OrCAD
 
آموزش فیزیک الکتریسیته - فصل ششم تا نهم
آموزش فیزیک الکتریسیته - فصل ششم تا نهمآموزش فیزیک الکتریسیته - فصل ششم تا نهم
آموزش فیزیک الکتریسیته - فصل ششم تا نهم
 
آموزش فیزیک الکتریسیته - فصل یکم تا پنجم
آموزش فیزیک الکتریسیته - فصل یکم تا پنجمآموزش فیزیک الکتریسیته - فصل یکم تا پنجم
آموزش فیزیک الکتریسیته - فصل یکم تا پنجم
 
آموزش ذخیره و بازیابی اطلاعات - درس دهم
آموزش ذخیره و بازیابی اطلاعات - درس دهمآموزش ذخیره و بازیابی اطلاعات - درس دهم
آموزش ذخیره و بازیابی اطلاعات - درس دهم
 
آموزش ذخیره و بازیابی اطلاعات - درس نهم
آموزش ذخیره و بازیابی اطلاعات - درس نهمآموزش ذخیره و بازیابی اطلاعات - درس نهم
آموزش ذخیره و بازیابی اطلاعات - درس نهم
 
آموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتمآموزش ذخیره و بازیابی اطلاعات - درس هشتم
آموزش ذخیره و بازیابی اطلاعات - درس هشتم
 
آموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتمآموزش ذخیره و بازیابی اطلاعات - درس هفتم
آموزش ذخیره و بازیابی اطلاعات - درس هفتم
 
آموزش ذخیره و بازیابی اطلاعات - درس ششم
آموزش ذخیره و بازیابی اطلاعات - درس ششمآموزش ذخیره و بازیابی اطلاعات - درس ششم
آموزش ذخیره و بازیابی اطلاعات - درس ششم
 
آموزش ذخیره و بازیابی اطلاعات - درس پنجم
آموزش ذخیره و بازیابی اطلاعات - درس پنجمآموزش ذخیره و بازیابی اطلاعات - درس پنجم
آموزش ذخیره و بازیابی اطلاعات - درس پنجم
 
آموزش ذخیره و بازیابی اطلاعات - درس چهارم
آموزش ذخیره و بازیابی اطلاعات - درس چهارمآموزش ذخیره و بازیابی اطلاعات - درس چهارم
آموزش ذخیره و بازیابی اطلاعات - درس چهارم
 
آموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سومآموزش ذخیره و بازیابی اطلاعات - درس سوم
آموزش ذخیره و بازیابی اطلاعات - درس سوم
 
آموزش ذخیره و بازیابی اطلاعات - درس دوم
آموزش ذخیره و بازیابی اطلاعات - درس دومآموزش ذخیره و بازیابی اطلاعات - درس دوم
آموزش ذخیره و بازیابی اطلاعات - درس دوم
 
آموزش ذخیره و بازیابی اطلاعات - درس یکم
آموزش ذخیره و بازیابی اطلاعات - درس یکمآموزش ذخیره و بازیابی اطلاعات - درس یکم
آموزش ذخیره و بازیابی اطلاعات - درس یکم
 
آموزش ترمودینامیک ۲ بخش سوم
آموزش ترمودینامیک ۲ بخش سومآموزش ترمودینامیک ۲ بخش سوم
آموزش ترمودینامیک ۲ بخش سوم
 
آموزش ترمودینامیک ۲ بخش هشتم
آموزش ترمودینامیک ۲ بخش هشتمآموزش ترمودینامیک ۲ بخش هشتم
آموزش ترمودینامیک ۲ بخش هشتم
 
آموزش ترمودینامیک ۲ بخش دوم
آموزش ترمودینامیک ۲ بخش دومآموزش ترمودینامیک ۲ بخش دوم
آموزش ترمودینامیک ۲ بخش دوم
 
آموزش ترمودینامیک ۲ بخش هفتم
آموزش ترمودینامیک ۲ بخش هفتمآموزش ترمودینامیک ۲ بخش هفتم
آموزش ترمودینامیک ۲ بخش هفتم
 
آموزش ترمودینامیک ۲ بخش ششم
آموزش ترمودینامیک ۲ بخش ششمآموزش ترمودینامیک ۲ بخش ششم
آموزش ترمودینامیک ۲ بخش ششم
 
آموزش ترمودینامیک ۲ بخش اول
آموزش ترمودینامیک ۲ بخش اولآموزش ترمودینامیک ۲ بخش اول
آموزش ترمودینامیک ۲ بخش اول
 
آموزش ترمودینامیک ۲ بخش پنجم
آموزش ترمودینامیک ۲ بخش پنجمآموزش ترمودینامیک ۲ بخش پنجم
آموزش ترمودینامیک ۲ بخش پنجم
 

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