当图像各局部亮度不同时,全局阈值就很难将背景和目标分割。因此提出了自适应阈值,即在图像的不同区域采用不同的阈值进行分割。利用函数cv2.adaptiveThreshold()进行分割。

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

参数:

1. src:原图像

2. maxValue:当阈值类型(thresholdType)采用cv2.THRESH_BINARY和cv2.THRESH_BINARY_INV时像素点被赋予的新值

3. adaptiveMethod:自适应阈值的计算方法,包括两种:

  • cv2.ADPTIVE_THRESH_MEAN_C:阈值取自相邻区域的平均值
  • cv2.ADPTIVE_THRESH_GAUSSIAN_C:阈值取值相邻区域的加权和,权重为一个高斯窗口。

4. thresholdType:阈值分割类型,共5种,同cv2.threshold()的阈值分割类型参数,详情见https://blog.csdn.net/weixin_42216109/article/details/89553383

5. blockSize:用来计算阈值的邻域大小

6. C:常数,adaptiveMethod方法计算出的数值减去这个常数C就为阈值

返回值:

1. 阈值分割后的图像

e.g.

通过如下代码对比全局阈值分割和自适应阈值分割的区别

import cv2
import matplotlib.pyplot as plt
#载入原图
img_original=cv2.imread('E:\ShannonT\\notebook workspace\\images\\4.26.6.jpg',0)
#全局阈值分割
retval,img_global=cv2.threshold(img_original,130,255,cv2.THRESH_BINARY)
#自适应阈值分割
img_ada_mean=cv2.adaptiveThreshold(img_original,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,15,3)
img_ada_gaussian=cv2.adaptiveThreshold(img_original,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,15,3)
imgs=[img_original,img_global,img_ada_mean,img_ada_gaussian]
titles=['Original Image','Global Thresholding(130)','Adaptive Mean','Adaptive Guassian',]
#显示图片
for i in range(4):plt.subplot(2,2,i+1)plt.imshow(imgs[i],'gray')plt.title(titles[i])plt.xticks([])plt.yticks([])
plt.show()

结果显示如下:

补充:从自适应阈值分割的结果来看,图像中存在较多的噪声,于是我们可以先通过函数cv2.GaussianBlur()进行噪声去除,详情参考https://blog.csdn.net/duwangthefirst/article/details/79971338

import cv2
import matplotlib.pyplot as plt
#载入原图
img_original=cv2.imread('E:\ShannonT\\notebook workspace\\images\\4.26.6.jpg',0)
#高斯滤波
img_blur=cv2.GaussianBlur(img_original,(5,5),5)
#自适应阈值分割
img_thresh=cv2.adaptiveThreshold(img_original,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,15,3)
img_thresh_blur=cv2.adaptiveThreshold(img_blur,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,15,3)
#显示图像
imgs=[img_thresh,img_thresh_blur]
titles=['img_thresh','img_thresh_blur']
for i in range(2):plt.subplot(1,2,i+1)plt.imshow(imgs[i],'gray')plt.title(titles[i])plt.xticks([])plt.yticks([])
plt.show()

结果如下所示,可以发现噪声数量明显减少。

python+openCV 自适应阈值分割相关推荐

  1. Python+OpenCV:阈值分割

    Python+OpenCV:阈值分割 阈值分割 ############################################################################ ...

  2. OpenCV自适应阈值分割函数:adaptiveThreshold()介绍

    OpenCV自适应阈值分割函数:adaptiveThreshold()介绍 [注意] 1. adaptiveThreshold()函数的ThresholdTypes参数只能设置为"CV_TH ...

  3. python+opencv实现阈值分割

    系列文章目录 文章目录 系列文章目录 前言 一.全局阈值 1.效果图 2.源码 二.滑动改变阈值(滑动条) 1.效果图 2.源码 三.自适应阈值分割 1.效果图 2.源码 3.GaussianBlur ...

  4. 【千律】OpenCV基础:图像阈值分割 -- 自适应阈值分割 -- 代码实现

    环境:Python3.8 和 OpenCV 内容:自适应阈值分割代码实现 import cv2 as cv import numpy as np import matplotlib.pyplot as ...

  5. 在OpenCV里实现自适应阈值分割

    在图片处理过程中,针对铺前进行二值化等操作的时候,我们希望能够将图片相应区域内所有的信息提供保留.实验室环境下,相应的素材是模板化的,但是将实验室方法应用于现实环境中时,我们会发现光影环境对于效果的影 ...

  6. otsu自适应阈值分割的算法描述和opencv实现,及其在肤色检测中的应用

    from:http://blog.csdn.net/onezeros/article/details/6136770 otsu算法选择使类间方差最大的灰度值为阈值,具有很好的效果 算法具体描述见ots ...

  7. 图像二值化方法及适用场景分析(OTSU Trangle 自适应阈值分割)

    图像二值化 应用场景 二值图像定义 阈值获取的方法 手动阈值法 自动阈值法 灰度均值法 基于直方图均值法 OTSU Triangle 自适应均值阈值分割方法 总结 参考文献 应用场景 二值图像处理与分 ...

  8. python canny优化_基于python的自适应阈值的Canny边缘检测

    canny边缘检测的接口在opencv中给出,直接调用: ret = cv2.canny(img,t1,t2) 您可以获取边缘检测结果. 其中,t1,t2是需要手动设置的阈值. 许多文献研究了自动阈值 ...

  9. OpenCV自适应阈值化函数adaptiveThreshold详解,并附实例源码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 2016-6-14日:又发现一种阈值分割法,最大 ...

最新文章

  1. android7.0图标反馈,android7.0 webview中 图标错位
  2. python自动化办公pdf-基于python实现自动化办公学习笔记
  3. jsoncpp在vs2013上的编译
  4. LightOJ 1370 - Bi-shoe and Phi-shoe
  5. 【原创】MVC+ZTree实现权限树的功能
  6. CSDN挑战编程——《绝对值最小》
  7. Java Swing 如何关闭当前窗口?
  8. pandas合并groupby_Pandas中级技巧-数据的灵活运算
  9. python之IO多路复用
  10. Java数据类型及类型转换
  11. Android UI学习之Gallery
  12. 时间序列分析与非参数统计
  13. 语音压缩编解码器:lyra
  14. HTML实现圆形头像效果
  15. php word替换换行符,word换行替换
  16. Matlab信道容量的迭代计算实验
  17. 爬虫实战:链家租房数据爬取,实习僧网站数据爬取
  18. unity 创建自己的像素地图 TileMap
  19. 备战Noip2018模拟赛3(B组) T2 Dance 开场舞蹈
  20. 从Web of Science 爬取文章作者邮箱小记

热门文章

  1. OPPO AI Lab 核心岗位开放招聘:至美之路,等你加入!
  2. 【AI测试】人工智能测试整体介绍——第四部分
  3. 这款神器你不学就要落后了!
  4. WirelessCar借助亚马逊云科技的安全服务,实现车端到云端的数据安全
  5. spring:动态工厂,静态工厂
  6. 163邮箱注册,163邮箱申请方法
  7. 管理运筹学软件计算机解咋看,管理运筹学-线性规划的计算机求解ppt课件.ppt
  8. 线性代数拾遗(二):线性方程组的解集及其几何意义
  9. BeanCopy 常用工具类
  10. 限流的方式,为什么要限流,怎么实现限流