در این جلسه تیم کدگیت را با آموزش آستانهگذاری تصاویر در پایتون همراهی کنید. ابتدای این جلسه در خصوص آستانهگذاری و انواع روشهای آن صحبت خواهیم کرد و در ادامه به پیاده سازی آن در زبان برنامهنویسی پایتون خواهیم پرداخت. پیشنهاد میکنیم پیش از مطالعه این جلسه، آموزشهای زیر را بررسی کنید:
- فیلم آموزش تصاویر و انواع نمایش آنها
- فیلم آموزش خواندن تصاویر در پایتون
- فیلم آموزش نوشتن تصاویر در پایتون
- فیلم آموزش رسم اشکال هندسی در پایتون
- آموزش مدل رنگی در پایتون
- آموزش ترکیب تصاویر در پایتون
آستانهگذاری تصویر
آستانه گذاری تصویر یکی از ساده ترین روشهای ناحیه بندی تصویر است که در آن مقدار پیکسلهای یک تصویر با توجه به آستانه تعیین شده به صفر یا مقدار ماکزیمم(255 یا 1) تغییر پیدا میکنند. در آستانهگذاری، تصویر دارای دو ناحیه میباشد (پیکسلهای بزرگتر از آستانه و کوچکتر از آن).
آستانهگذاری تصاویر در پایتون
در این آموزش با کمک کتابخانه opencv در پایتون به پیاده سازی آستانهگذاری خواهیم پرداخت. قبل از پیاده سازی، انواع روشهای آستانهگذاری پیاده سازی شده در opencv را معرفی میکنیم:
- cv2.THRESH_BINARY : اگر مقدار پیکسل بیشتر از آستانه باشد، مقدار آن 255 و در غیر اینصورت 0 (سیاه) تغییر میکند.
- cv2.THRESH_BINARY_INV : معکوس روش بالا می باشد.
- THRESH_TRUNC : اگر مقدار پیکسل بیشتر از آستانه باشد ، مقدار آن برابر با آستانه و در غیر اینصورت مقدار آن تغییری پیدا نخواهد کرد.
- cv.THRESH_TOZERO : تمامی پیکسلهای کمتر از آستانه برابر با صفر میشوند.
- cv.THRESH_TOZERO_INV : معکوس روش قبل است.

برای پیاده سازی روش های بالا از تابع Threshold در کتابخانه opencv استفاده میکنیم. کد این پیاده سازی به صورت زیر میباشد:
import cv2
img = cv2.imread('codegate.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret,binary =
cv2.threshold(gray,200,255,cv2.THRESH_BINARY)
ret,binary_inv =
cv2.threshold(gray,200,255,cv2.THRESH_BINARY_INV)
ret,trunk =
cv2.threshold(gray,200,255,cv2.THRESH_TRUNC)
ret,to_zero =
cv2.threshold(gray,200,255,cv2.THRESH_TOZERO)
ret,to_zero_inv =
cv2.threshold(gray,200,255,cv2.THRESH_TOZERO_INV)
cv2.imshow("Orginal Image",img)
cv2.imshow("GrayScale Image",gray)
cv2.imshow("Binary Threshold",binary)
cv2.imshow("Binary inv Threshold",binary_inv)
cv2.imshow("Trunk Threshold",trunk)
cv2.imshow("to zero Threshold",to_zero)
cv2.imshow("to zero inv Threshold",to_zero_inv)
cv2.waitKey()
cv2.destroyAllWindows()
تابع threshold به ترتیب ورودی های زیر را میگیرد:
- تصویر ورودی
- مقدار آستانه (Threshold)
- مقدار max یا بیشینه پیکسل
- انتخاب نوع Threshold
خروجی کد بالا به صورت زیر است:

اگر سوالی در خصوص این جلسه دارید در قسمت کامنت سوال خود را مطرح کنید تا پاسخگوی شما باشیم.