图像运算——阈值处理之adaptiveThreshold函数

自适应阈值处理

案例© Fu Xianjun. All Rights Reserved.
对于色彩均衡的图像,直接使用一个阈值就能完成对图像的阈值化处理。但是,有时图像的色彩是不均衡的,此时如果只是使用一个阈值,就无法得到清晰有效的阈值分割结果图像。
OpenCV提供了函数cv2.adaptiveThreshold()来实现自适应阈值处理。

素材:
在这里插入图片描述

adaptiveThreshold函数:

dst = cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)

src: 输入图,必须是单通道的图像
dst: 输出图
maxValue:最大值
adaptiveMethod:自适应方法
thresholdType:阈值处理方法,必须是cv2.THRESH_BINARY或者cv2.THRESH_BINARY_INV
blockSize:块大小,一个像素在计算其阈值时所使用的领域尺寸。
C:常量

把原图从BGR模式转换成GRAY模式:

import cv2
peppa = cv2.imread('peppa.jpg')
img=cv2.cvtColor(peppa,cv2.COLOR_BGR2GRAY)
cv2.imshow('Peppa',img)
cv2.waitKey()
cv2.destroyAllWindows()

效果图:
在这里插入图片描述

方法cv2.ADAPTIVE_THRESH_MEAN_C

athdMEAN=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,7,5)

效果图:
在这里插入图片描述

方法cv2.ADAPTIVE_THRESH_GAUSSIAN_C

athdGAUS=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,5,3)

效果图:
在这里插入图片描述

能看出两种函数处理方法的差距在哪吗?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在场景中光照变化的情况下,使用固定的阈值T进行差分运算的效果可能会受到影响,因为光照的变化可能会导致图像中的像素值变化。为了解决这个问题,我们可以使用自适应阈值方法,而不是使用固定的阈值T。 自适应阈值方法根据图像的局部特性来确定阈值,而不是使用固定的全局阈值。OpenCV中提供了adaptiveThreshold()函数可以实现自适应阈值方法。该函数的语法如下: ```python cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst]) ``` 其中,src表示输入的灰度图像,maxValue表示像素值大于阈值时的赋值值,adaptiveMethod表示自适应阈值算法(有两种可选:ADAPTIVE_THRESH_MEAN_C和ADAPTIVE_THRESH_GAUSSIAN_C),thresholdType表示二值化类型(有两种可选:THRESH_BINARY和THRESH_BINARY_INV),blockSize表示用于计算阈值的像素块大小,C表示从均值中减去的常量。函数的返回值是二值化后的图像。 使用自适应阈值方法进行运动目标检测的步骤如下: 1. 读入两帧或三帧图像,并将其转换为灰度图像。 2. 对每一帧图像应用自适应阈值方法,得到二值化图像。 3. 对二值化图像进行差分运算,得到差分图像。 4. 对差分图像进行形态学处理,如膨胀、腐蚀等。 5. 对处理后的图像进行目标检测,如轮廓提取、连通区域分析等。 使用自适应阈值方法可以使运动目标检测更加鲁棒,适应不同光照条件下的场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值