معرفی 3 ماژول پایتون برای پردازش تصاویر – قسمت نهم
موسسه پایا پروژه به عنوان متصدی انجام پروژه های پردازش تصویر با پایتون وظیفه ی خود می داند که در راستای آموزش نرم افزار پایتون گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی متلب مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.
در این آموزش به معرفی روشنایی تصاویر و اعمال تغییرات مختلفی با زبان پایتون، می پردازیم. این مطالب شامل ماژول ها و توابع مختلفی هست که می توانیم با استفاده از آنها، کانترست و میزان روشنایی تصاویر را تعیین و تغییر بدیم.
۱ـ تنظیم کانترست و یا روشنایی تصاویر
در ماژول OpenCV پایتون، تابع خاصی برای تنظیم کانترست تصویر نیست. اما مستندات رسمی OpenCV پیشنهاد میدهد تا از معادله زیر برای تنظیم روشنایی تصویر و کانترست تصویر در یک زمان استفاده کنید.
new_img = a * original_img + b
در اینجا مقدار آلفا، کانترست تصویر را تعریف میکند. اگر a بزرگتر از ۱ باشد؛ کانترست بیشتر خواهد بود. اگر مقدار بین ۰ تا ۱ باشد ( کوچکتر از ۱ اما بزرگتر ۰) دارای کانترست کمتری خواهیم بود. اگر a برابر با ۱ باشد؛ تأثیری بر روی کانترست تصویر وجود نخواهد داشت.
مقدار b نماینده beta است. مقدار میتواند بین -۱۲۷ تا +۱۲۷ متغیر باشد.
بهمنظور اجرای این معادله در OpenCV پایتون، شما میتوانید از تابع addWeighted() استفاده کنید که خروجی آن ۰ تا ۲۵۵ برای تصویر ۲۴ بیت رنگی خواهد بود.
سینتکس addWeighted() بهصورت زیر است:
cv2.addWeighted(source_img1, alpha1, source_img2, alpha2, beta)
۱ـ ۱ جمع آرایه ها با استفاده از سینتکس
این سینتکس در پایتون دو تصویر را با یکدیگر جمع میکند. تصویر اول دارای وزن alpha1 و دومین تصویر (source_img2) است.
اگر میخواهید کانترست را به تصویر اعمال کنید. شما میتوانید تصویر دوم را از ماتریس صفر که با NumPy درست کردهاید؛ استفاده کنید.
برای اجرای این مثال بهصورت ساده، ماژولهای زیر را فراخوانی میکنیم:
import cv2
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
تصویر اصلی را فراخوانی میکنیم:
img = cv2.imread(“ImageProcessingSample.jpg”,1)
حال تابع کانترست را اعمال میکنیم. ازآنجاییکه ما در اینجا تصویر دیگری نداریم؛ ما از np.zeros استفاده میکنیم که آرایهای مشابه با شکل و نوع دادههای تصویر اصلی ایجاد میکند؛ ولی آرایه با صفر پر میشود.
,contrast_img = cv2.addWeighted(img, 2.5,
(np.zeros(img.shape, img.dtype), 0, 0)
,plt.imshow(cv2.cvtColor(contrast_img
((cv2.COLOR_BGR2RGB
()plt.show
در کد بالا میزان روشنایی (brightness) بهاندازه ۰ تنظیمشده است. چراکه ما تنها میخواهیم کانترست را اعمال میکنیم.
مقایسه بین تصویر اصلی و کانترست مانند زیر است:

۲ـ مات کردن تصویر
۲ـ۱ فیلتر گوسی
بهمنظور مات کردن تصویر در پایتون، شما میتوانید از متد GaussianBlur() از OpenCV استفاده کنید.
متد GaussianBlur() از کرنل گوسی استفاده میکند. عرض و ارتفاع کرنل باید مثبت و فرد باشند.
بعد باید جهت X و Y را با توجه به sigmaX و sigmaY مشخص کنیم. اگر فقط یک مشخص شود؛ هر دو یکسان در نظر گرفته میشوند.
مثال زیر را در نظر بگیرید:
import cv2
import numpy as np
from matplotlib import pyplot as plt
matplotlib inline%
=img
cv2.imread(“ImageProcessingSample.jpg”,1)
blur_image = cv2.GaussianBlur(img, (9,9), 0)
,plt.imshow(cv2.cvtColor(blur_image
((cv2.COLOR_BGR2RGB
()plt.show
در تکه کد بالا، تصویر به متد GaussianBlur() به همراه عرض و ارتفاع کرنل و جهتهای y و x فرستاده میشود.
مقایسه بین تصویر اصلی و مات در پردازش تصویر با پایتون توسط OpenCV همانند زیر خواهد بود:

۳ـ جمع بندی
در این مطالب به معرفی تابع هایی پرداختیم که با استفاده از آنها فیلترهای مختلفی رو در تصاویر ایجاد و طراحی می کنیم. همچنین نمونه کدهایی رو بررسی کردیم که به واسطه اون ها، پردازش تصاویر مختلفی رو با زبان پایتون انجام دادیم. در قسمت بعدی به فیلترگذاری های مختلفی مثل میانه و غیره می پردازیم و با انواع تغییرات رنگ در تصاویر آشنا می شویم.
