python opencv图像二值化函数_一起学python-opencv十四(图像阈值化,图像缩放)

图像阈值化也可以叫做二值化,其实我们前面已经用过了很多次的cv2.threshold,另外就是cv2.inRange,这个主要用HSV颜色空间来分离出某一种颜色的区域。前面我们只用了几种阈值化的类型,那么这篇文章的开头,就让我们来认识一下其它的阈值化类型。我觉得看图还是非常直观的,TRUNC就是设定一个阈值,高于这个阈值的话,就把值改为阈值这个值,当然这个maxVal就会直接被无视了。如果低于的话...
摘要由CSDN通过智能技术生成

86d364ebd84e0a532c8410b6844b4bc1.png

图像阈值化也可以叫做二值化,其实我们前面已经用过了很多次的cv2.threshold,另外就是cv2.inRange,这个主要用HSV颜色空间来分离出某一种颜色的区域。前面我们只用了几种阈值化的类型,那么这篇文章的开头,就让我们来认识一下其它的阈值化类型。30a40ed716d0fdac11782d7e3f014be2.png

d83dea71f8bebef5ea77c3133c8bcf9c.png

我觉得看图还是非常直观的,TRUNC就是设定一个阈值,高于这个阈值的话,就把值改为阈值这个值,当然这个maxVal就会直接被无视了。如果低于的话,就保持原来的值,TOZERO就是如果值低于阈值就变为0,高的保持,TOZERO_INV就是说如果值高于阈值变为0,低于保持,maxVal都是会被无视,但是这个参数肯定还是需要填的,不然就缺参数了。毕竟只有dst一个是用中括号括起来的,也就是只有dst是可选的。而且注意返回的是一个元组,需要用retval,dst分别来接收,retVal是阈值。c882fa2194c9e5237974468e4c24622b.png

我们来分别试一下:8f83bad5478e2086d9619e49956ad7f3.png

效果:ad85893496501a4a67d83f331af51886.png

前面说的方法都是从cv2.threshold函数外面获得的,cv2.threshold还有根据直方图自动计算出阈值的两种方法:第一种是cv2.THRESH_OTSU。参考了https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_thresholding/py_thresholding.html

在全局阈值处理中,我们使用主观值作为阈值,当然我们也可以计算一下图像的平均值或者中位数等其它统计特征然后作为输入。不过就有一个问题,我们如何知道我们选择的值是好还是不好?答案是,试凑法,一个一个去试,然后根据结果的好坏评判值得好坏。但考虑双峰图像(简单来说,双峰图像是直方图有两个峰值的图像)。对于该图像,我们可以将这些峰值中间的某一个值作为阈值,对吧?这就是Otsu二值化所做得事情。因此,简单来说,它会根据双峰图像的图像直方图自动计算阈值。(对于非双峰图像,二值化不准确。)

为此,使用了我们的cv2.threshold()函数,但传递了一个额外的标志cv2.THRESH_OTSU。对于阈值,只需传递零。然后算法找到最佳阈值并返回输出,retVal。如果未使用Otsu阈值,则retVal与您使用的阈相同。当然上面还不是原理,原理在下面。OTSU算法也叫大津法或最大类间方差法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值