Otsu's Thresholding, threshold değeri verme zorunluluğunu ortadan kaldırır ve kendisi belirler.
Nobuyuki Otsu (1979) tarafından geliştirilen Otsu metodu ile eşik değeri görüntü üzerinden hesaplanmaktadır. Metod görüntü üzerinde iki ayrı sınıf olduğunu kabul ederek, bu iki sınıf arasındaki varyansı maksimum yapacak değeri bulmaya çalışır. Varyans bir dizinin elemanlarının dizinin ortalamasına olan uzaklıklarının karelerinin ortalamasıdır. Bu değere bakarak dizi içerisindeki değerlerin ortalamaya ne derece yakın olduğu görülebilir.
import cv2
from matplotlib import pyplot as plt
image=cv2.imread("lenna.png",0)
retOrg, threshOrg=cv2.threshold(image,127,255,cv2.THRESH_BINARY) #normal threshold
retOts, threshOts=cv2.threshold(image, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)#otsu's thrshold
titles = [
'Original Image',
'NORMAL BINARY (v = 127)',
'OTSU',
]
images = [image, threshOrg, threshOts]
for i in range(3):
#plt.subplot(row, col, numb)
plt.subplot(3,1,i+1),plt.imshow(images[i],'gray')
plt.title(titles[i])
plt.xticks([]),plt.yticks([])
plt.tight_layout()
plt.show()

Kaynaklar
- https://imlab.io/2012/07/24/otsu-thresholding/