پردازش تصویر با پایتون قسمت نوزدهم

thjk

Adaptive Thresholding

 

روش Simple Thresholding در عکس هایی که دارای روشنایی متفاوت در قسمتهای مختلف میباشند خروجی جالبی ندارند.

threshold

import cv2
import numpy as np
img = cv2.imread('sample.jpg')
ret,threshold1 = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV)
cv2.imshow('threshold ',threshold1)
cv2.waitKey (0)
cv2.destroyAllWindows ()

thresholdcoor

 

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

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

Adaptive Method : روش تطبیقی تصمیم می گیرد چه مقدار آستانه محاسبه شده است.
cv2.ADAPTIVE_THRESH_MEAN_C: مقدار آستانه  میانگین ناحیه مجاور است.
cv2.ADAPTIVE_THRESH_GAUSSIAN_C: مقدار آستانه مجموعه ای از مقادیر ناحیه ای است که وزن آنها یک پنجره گاوسی است.

 

 

 import cv2
 import numpy as np
 from matplotlib import pyplot as plt
img = cv2.imread('sample.jpg',0)
img = cv2.medianBlur(img,5)
ret,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
 th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,2)
 th3 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
 titles = ['Original Image', 'Global Thresholding (v = 127)','Adaptive Mean Thresholding',
 'Adaptive Gaussian Thresholding']
 images = [img, th1, th2, th3]
 for i in xrange(4):
 plt.subplot(2,2,i+1),plt.imshow(images[i],'gray')
 plt.title(titles[i])
 plt.xticks([]),plt.yticks([])
 plt.show()
Adaptive Thresholding

Thresholdh

تفاوت آستانه ساده با تطبیقی در این تصویر مشهود است.

درباره نویسنده

مهارت ها:html,css,C#,ADO.NET,sqlserver,access,python

نوشته های مرتبط

نظری بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *