个性化阅读
专注于IT技术分析

Python使用OpenCV的阈值技术第三组(Otsu Thresholding)

在之前的帖子中, 简单阈值和自适应阈值被解释了。在”简单阈值”中, 使用的阈值全局值始终保持恒定。在自适应阈值化中, 针对较小区域计算阈值, 相对于照明的变化, 较小区域具有针对不同区域的不同阈值。

在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使用OpenCV的阈值技术第三组(Otsu Thresholding)1

输出如下:

Python使用OpenCV的阈值技术第三组(Otsu Thresholding)2

该计算接受图片在前景像素和背景像素之后包含两类像素, 在那一点上确定了隔离这两类的理想极限, 目的是使它们的合并散布无关紧要。

首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。


赞(0)
未经允许不得转载:srcmini » Python使用OpenCV的阈值技术第三组(Otsu Thresholding)

评论 抢沙发

评论前必须登录!