在之前的帖子中, 简单阈值和自适应阈值被解释了。在”简单阈值”中, 使用的阈值全局值始终保持恒定。在自适应阈值化中, 针对较小区域计算阈值, 相对于照明的变化, 较小区域具有针对不同区域的不同阈值。
在Otsu Thresholding中,阈值不是被选择的,而是自动确定的。考虑一个双峰图像(两个不同的图像值)。生成的直方图包含两个峰。因此,一个通用的条件是选择一个位于两个直方图峰值中间的阈值。
我们使用传统 cv2.threshold功能与用途 cv2.THRESH_OTSU 作为额外的标志。
语法:cv2.threshold(source, thresholdValue, maxVal, thresholdingTechnique)
参数:
-> source:输入图像数组(必须为灰度)。
-> thresholdValue:低于和高于此阈值的阈值, 像素值将相应更改。
-> maxVal:可以分配给像素的最大值。
-> thresholdingTechnique:要应用的阈值类型。
以下是解释Otsu阈值技术的Python代码-
# Python program to illustrate
# Otsu thresholding type on an image
# organizing imports
import cv2
import numpy as np
# path to input image is specified and
# image is loaded with imread command
image1 = cv2.imread( 'input1.jpg' )
# cv2.cvtColor is applied over the
# image input with applied parameters
# to convert the image in grayscale
img = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)
# applying Otsu thresholding
# as an extra flag in binary
# thresholding
ret, thresh1 = cv2.threshold(img, 120 , 255 , cv2.THRESH_BINARY +
cv2.THRESH_OTSU)
# the window showing output image
# with the corresponding thresholding
# techniques applied to the input image
cv2.imshow( 'Otsu Threshold' , thresh1)
# De-allocate any associated memory usage
if cv2.waitKey( 0 ) & 0xff = = 27 :
cv2.destroyAllWindows()
输入如下:
输出如下:
该计算接受图片在前景像素和背景像素之后包含两类像素, 在那一点上确定了隔离这两类的理想极限, 目的是使它们的合并散布无关紧要。
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。
评论前必须登录!
注册