当前位置: 首页 > wzjs >正文

网站建设高端培训班钱宝做任务的网站怎么下

网站建设高端培训班,钱宝做任务的网站怎么下,wordpress导航加title,网站分享正能量OpenCV计算机视觉实战(9)——阈值化技术详解 0. 前言1. 全局阈值与自适应阈值2. Otsu 算法3. 实战案例:文档扫描中的二值化处理4. 算法对比小结系列链接 0. 前言 在图像处理领域,阈值化 (Binarization) 技术就像一把魔术剪刀&…

OpenCV计算机视觉实战(9)——阈值化技术详解

    • 0. 前言
    • 1. 全局阈值与自适应阈值
    • 2. Otsu 算法
    • 3. 实战案例:文档扫描中的二值化处理
    • 4. 算法对比
    • 小结
    • 系列链接

0. 前言

在图像处理领域,阈值化 (Binarization) 技术就像一把魔术剪刀,能够将复杂的灰度图像一分为二,提取出关键的前景信息。无论是光照均匀的实验室拍摄,还是手机拍摄的阴影斑驳文档,选择合适的阈值化方法都至关重要。本文将介绍 OpenCV 中的三大阈值化法——全局阈值、自适应阈值与 Otsu 算法,剖析它们的原理与优缺点,并通过一个真实的文档扫描案例演示如何在实际场景下灵活组合与应用。

1. 全局阈值与自适应阈值

阈值化 (Binarization) 是图像处理中的基础操作,旨在将灰度图像转换为黑白图像,以便于后续的轮廓提取、光学字符识别 (Optical Character Recognition, OCR) 或图像分割。OpenCV 提供的两种主要阈值化方法包括:

  • 全局阈值 (Global Thresholding):对整幅图像使用一个固定的阈值,适用于光照均匀的图像
  • 自适应阈值 (Adaptive Thresholding):根据图像的局部区域动态计算阈值,适用于光照不均或背景复杂的图像

接下来,读取图像并预处理,将图像转换为灰度图,使用中值滤波去除噪声,并对比两种不同的阈值化技术:

  • 全局阈值化:使用 cv2.threshold 函数,设置固定阈值 (如 127) 进行二值化
  • 自适应阈值化:使用 cv2.adaptiveThreshold 函数,分别采用均值法 (Mean) 和高斯加权法 (Gaussian) 进行局部阈值计算
import cv2# 读取图像并转换为灰度
img = cv2.imread('1.jpeg', cv2.IMREAD_GRAYSCALE)
blur = cv2.medianBlur(img, 5)# 全局阈值
_, th_global = cv2.threshold(blur, 127, 255, cv2.THRESH_BINARY)# 自适应阈值 - Mean
th_mean = cv2.adaptiveThreshold(blur, 255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,blockSize=11, C=2
)# 自适应阈值 - Gaussian
th_gauss = cv2.adaptiveThreshold(blur, 255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,blockSize=11, C=2
)# 显示结果
cv2.imshow('Global Thresholding', th_global)
cv2.imshow('Adaptive Mean Thresholding', th_mean)
cv2.imshow('Adaptive Gaussian Thresholding', th_gauss)
cv2.waitKey(0)
cv2.destroyAllWindows()

阈值化

关键函数解析:

  • cv2.threshold(src, thresh, maxval, type):对整个图像使用同一阈值进行二值化,其中 thresh 为阈值,maxval 为当像素值超过了阈值(或者小于阈值,根据 type 来决定)所赋予的值,type 可指定二值化操作的类型,包含以下 5 种类型:
    • cv2.THRESH_BINARY,超过阈值部分取 maxval (最大值),否则取 0
    • cv2.THRESH_BINARY_INVTHRESH_BINARY 的反转
    • cv2.THRESH_TRUNC,大于阈值部分设为阈值,否则不变
    • cv2.THRESH_TOZERO,大于阈值部分不改变,否则设为 0
    • cv2.THRESH_TOZERO_INVTHRESH_TOZERO 的反转
  • cv2.adaptiveThreshold(src, maxval, adaptiveMethod, thresholdType, blockSize, C):自适应阈值化,针对图像的每个局部区域 (blockSize × blockSize) 计算阈值,adaptiveMethod 可选 ADAPTIVE_THRESH_MEAN_C (局部平均值)或 ADAPTIVE_THRESH_GAUSSIAN_C (局部加权平均)

2. Otsu 算法

Otsu 算法是一种自动确定图像全局阈值的方法,特别适用于具有双峰 (bimodal) 直方图的图像。该算法通过最大化类间方差(或最小化类内方差)来找到最佳阈值,从而将图像分为前景和背景两部分。
Otsu 算法流程如下:

  1. 计算图像直方图:统计每个灰度级别的像素数量
  2. 遍历所有可能的阈值:对于每个可能的阈值 t,计算前景和背景的类内方差
  3. 选择最佳阈值:找到使类内方差最小(或类间方差最大)的阈值 t,作为最佳阈值

这种方法不需要手动设置阈值,适用于光照均匀且前景与背景对比明显的图像。

import cv2# 读取图像
img = cv2.imread('1.jpeg', cv2.IMREAD_GRAYSCALE)
blur = cv2.GaussianBlur(img, (5, 5), 0)# Otsu 阈值化
otsu_thresh, th_otsu = cv2.threshold(blur, 0, 255,cv2.THRESH_BINARY + cv2.THRESH_OTSU
)print(f"Otsu 选的阈值: {otsu_thresh}")cv2.imshow('Otsu Thresholding', th_otsu)
cv2.waitKey(0)
cv2.destroyAllWindows()

Otsu 算法

关键函数解析:

  • cv2.threshold:当 type 参数中包含 cv2.THRESH_OTSU 时,函数会自动计算最佳阈值,并返回该值
  • cv2.GaussianBlur(src, ksize, sigmaX):在执行 Otsu 前对图像做高斯模糊,可有效降低噪声对阈值选取的影响

3. 实战案例:文档扫描中的二值化处理

在实际应用中,如手机扫描文档,常常会遇到光照不均、阴影干扰等问题。为了获得清晰的扫描效果,我们可以结合自适应阈值和 Otsu 算法,进行多阶段的图像处理。


import cv2# 1. 读取并灰度化
color = cv2.imread('doc_photo.jpg')
gray = cv2.cvtColor(color, cv2.COLOR_BGR2GRAY)# 2. 降噪
blur = cv2.medianBlur(gray, 3)# 3. 自适应阈值初筛
adaptive = cv2.adaptiveThreshold(blur, 255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY, 15, 8
)# 4. Otsu 细化
otsu_val, final = cv2.threshold(adaptive, 0, 255,cv2.THRESH_BINARY + cv2.THRESH_OTSU
)# 5. 保存并展示
cv2.imwrite('scanned_doc.png', final)
cv2.imshow('Scanned Document', final)
cv2.waitKey(0)
cv2.destroyAllWindows()

处理结果

关键函数解析:

  • cv2.cvtColor(src, code):图像色彩空间转换,此处将 BGR 转为灰度,为阈值化做准备
  • cv2.imwrite(filename, img):将二值化结果写入文件,方便后续查看或集成至扫描应用

4. 算法对比

通过以上对比,我们可以得出以下结论:

  • 全局阈值:适用于光照均匀、对比明显的图像,处理速度快,但对光照变化敏感
  • 自适应阈值:适用于光照不均、背景复杂的图像,能更好地保留细节,但计算量较大
  • Otsu 算法:适用于双峰直方图的图像,能自动确定最佳阈值,但对噪声敏感

在实际应用中,需要根据图像的具体特点选择合适的阈值化方法,或将多种方法结合,以获得最佳的处理效果。

小结

在本文中,我们深入探讨 OpenCV 中三种常用阈值化 (Binarization) 技术:全局阈值 (Global Thresholding)、自适应阈值 (Adaptive Thresholding) 以及 Otsu 算法 (Otsu’s Method),并通过一个“文档扫描”二值化应用案例展示如何在实际场景中选用合适的阈值化方法。我们首先对比全局阈值与自适应阈值的适用场景与优缺点,接着剖析 Otsu 算法自动阈值选择原理,最后实现一个简单的文档扫描脚本,用于在复杂光照下获得清晰的扫描效果。

系列链接

OpenCV计算机视觉实战(1)——计算机视觉简介
OpenCV计算机视觉实战(2)——环境搭建与OpenCV简介
OpenCV计算机视觉实战(3)——计算机图像处理基础
OpenCV计算机视觉实战(4)——计算机视觉核心技术全解析
OpenCV计算机视觉实战(5)——图像基础操作全解析
OpenCV计算机视觉实战(6)——经典计算机视觉算法
OpenCV计算机视觉实战(7)——色彩空间详解
OpenCV计算机视觉实战(8)——图像滤波详解


文章转载自:

http://CRtw93Dm.jjtwh.cn
http://taFUUyra.jjtwh.cn
http://T9KijMVO.jjtwh.cn
http://2VEk6clO.jjtwh.cn
http://OFIVGM7h.jjtwh.cn
http://wCnzzxG0.jjtwh.cn
http://VcYXTxlq.jjtwh.cn
http://WOSG4lpa.jjtwh.cn
http://uHMXpkN9.jjtwh.cn
http://ic4L8A4t.jjtwh.cn
http://aqVX0A0v.jjtwh.cn
http://6mlvx50u.jjtwh.cn
http://et2lp7eh.jjtwh.cn
http://0aFN0q4f.jjtwh.cn
http://JrdbfgS9.jjtwh.cn
http://3JzvG6Ix.jjtwh.cn
http://hWfndI5U.jjtwh.cn
http://L4eRUysN.jjtwh.cn
http://7tGYqwwv.jjtwh.cn
http://lG21lzFt.jjtwh.cn
http://3CzwIX8Z.jjtwh.cn
http://ZCgoUUbI.jjtwh.cn
http://5rGygebO.jjtwh.cn
http://51XeQ4kj.jjtwh.cn
http://el3emhq5.jjtwh.cn
http://1yd0muKA.jjtwh.cn
http://vmWLWCTY.jjtwh.cn
http://Vv3xG1et.jjtwh.cn
http://p6F7NKBy.jjtwh.cn
http://hMejxyd4.jjtwh.cn
http://www.dtcms.com/wzjs/728364.html

相关文章:

  • 网站自适应与响应式下载电商平台app
  • 婚纱摄影网络公司网站源码网站做快速排名是怎么做的呢
  • win主机 wordpress 404鹤壁网站建设优化
  • 鄂州网站建设设计手机做网页的软件有哪些
  • 网站举报12321山西省建设厅官网站
  • 烟台网站建设招聘dnf做心悦宠物的网站
  • 刷粉网站推广免费网页设计规范
  • 贵州中英文网站制作个人不动产登记网上查询
  • 专业网站推广的公司php网站建设程序
  • 顺企网南昌网站建设江苏运营网站建设业务
  • 做网站专用图标备案名称网站名称
  • html背景颜色代码百度seo流量
  • 网站建设明细青岛外贸假发网站建设
  • 建设公司需要网站吗大学生网站建设申报书
  • 富顺做网站如何投诉做网站的公司
  • 湖南专业网站建设服务网页开发报价单
  • 会员发布网站建设怎样知道哪个网站做推广好
  • 网站开发商品排序逻辑建筑公司企业愿景文案平台
  • 可信的邢台做网站深圳市网络营销推广平台
  • 国内做网站上市公司网站开发技术教程
  • 网站建设哪家go好2021手机能看的网站
  • 电商网站图片品牌建设理论模型
  • 摄影网站设计模板优购物官方网站购物
  • 天猫网站是怎么做seo优化的定制手机app价格
  • 想学做网站seo 在哪学 电话多少免费的行情网站下载安装
  • saas建站没有网站源代码么惠州网站制作网站
  • 瑞安这边有没有做网站的有没有专门做建材的网站
  • 深圳建站定制公司网页设计短期培训
  • 北京著名网站设计公司互联网保险模式
  • 义乌网站建设方案详细宝塔建设网站