图像二值化中阈值算法浅析

智能车八邻域图像算法 阅读详情

什么是二值化

所谓图像二值化,就是将256个亮度等级的灰度图像,通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。
由于我们用摄像头拍到的图像为灰度图像,若直接处理会加大很多不必要的工作量,而将图像二值化,则可以使目标图像变得简单且数据量小,同时又不丢失图像中的重要信息。由此可见,在图像处理中,二值化步骤显得尤为重要。
我们知道,二值化的步骤无非是将获得的图像数据中大于阈值的像素点用255表示,而小于阈值的像素点用0表示。
那么如何选择二值化所需的阈值,就成为了非常重要的一个步骤。

常见的求阈值算法

OSTU大津法

概念及原理

OTSU算法又称为最大类间方差法。这是我们很常见的一种求阈值的方法,它的思路就是通过统计整个图像的直方图特性来实现全局阈值T的自动选取。
该算法进行前先设一个i作为分类阈值,通过归一化的直方图,统计图像中各个灰度级的像素占整幅图像的比例w0,并统计前景像素和背景像素的平均灰度u0和u1,和背景像素所占比例w1;通过公式g = w0w1(u0-u1) (u0-u1)计算前景像素和背景像素的方差 ,每进行完一次循环i值加一,直道i=256时停止循环,并将最大的g值作为图像阈值。
大津法二值化的代码实现在网上比较多,这里不做详细介绍。

iteration迭代法

概念及原理

迭代法也叫最小概率误判法,它使用逐次逼近的思想,通过不断更新迭代,求出满足整幅图像偏差等级error的阈值。
具体步骤为:首先设定初始阈值T0和偏差等级,此阈值将图像分割为前景和背景,此时可以算出前景和背景的平均灰度值T1和T2,则新的最佳阈值为T_center=(T1+T2),将新阈值与上一个阈值比较。若两者之差在偏差等级之内,则将标志位置为0,结束运算,得到的阈值极为当前阈值;若大于此偏差,则标志位置为1,继续下一次循环运算,由此逐渐逼近真实阈值。

代码实现

 do{
  	for(i=0;i<MT9V03X_H;i++)
    {
      for(j=0;j<MT9V03X_W;j++)
      {
        if(Im[i][j] < T2)
        {
          S0 += Im[i][j];
          N0++;   //像素点数统计
        }
        else
        {
          S1 += Im[i][j];
          N1++;   //像素点数统计
        }
      }
    }
    T1 = S0/N0;   //平均灰度值
    T2 = S1/N1;   //平均灰度值
    T_center = (T1+T2)/2;
    
    if(abs(T_center - T0)> ERROR)   flag = 1;  
    else    flag = 0;
    T0 =T_center;
    BlackThres = T0;
  } while(flag);

迭代法的空间复杂度较高,且光照越强受到的影响越强。

Sobel算子图像边缘提取

概念及原理

索贝尔算子是计算机视觉领域的一种重要处理方法。主要用作边缘检测。索贝尔算子是把图像中每个像素的上下左右四领域的灰度值加权差,在边缘处达到极值从而检测边缘。
运算时我们对图像中每一点使用此算子,将会产生对应的梯度矢量或是其法矢量。
索贝尔算子包含两组3*3矩阵(横向与纵向),具体如下:(图源百度百科)
卷积因子
运算时将图像上每一点与其做平面卷积,即可分别得出横向及纵向的亮度差分近似值,公式如下:
在这里插入图片描述
再将Gx与Gy相加,即为该像素点的近似灰度大小。
最后我们可以使用像素点之和的一定比例,作为该图像阈值 。

代码实现

  	for (i = yStart; i < yEnd; i++)
  	{
   		 for (j = xStart; j < xEnd; j++)
            TempX=(-    mt9v03x_image[i-1][j-1])
                    +(-2*mt9v03x_image[i ][j-1])
                    +(-  mt9v03x_image[i+1][j-1])
                    +(   mt9v03x_image[i-1][j+1])
                    +( 2*mt9v03x_image[i  ][j+1])
                    +(   mt9v03x_image[i+1][j+1]);
        
            TempY=(     mt9v03x_image[i+1][j-1])
                    +( 2*mt9v03x_image[i+1][j  ])
                    +(   mt9v03x_image[i+1][j+1])
                    +(-  mt9v03x_image[i-1][j-1])
                    +(-2*mt9v03x_image[i-1][j  ])
                    +(-  mt9v03x_image[i-1][j+1]);
            temp=abs(tempx)+abs(tempy);
            if(temp>255)    temp=255;
            Image_Sobel[i][j]=temp;
    }

这种方法对阳光的适应性较好,空间复杂度也不大,是目前一种比较好的阈值算法。

噪点过滤

索贝尔算子有着较好的检测效果,并且对噪声具有平滑抑制的作用,但其得到的边缘较粗,且可能出现伪边缘。所以我们需要对其噪点进行过滤。

  for (nr = 1; nr < LCDH - 1; nr++)
  {
    for (nc = 1; nc < LCDW - 1; nc = nc + 1)
    {
            if(WhitePixle(i,j) && mt9v03x_image[i][j]>threshold)
                Image_Sobel[i][j] = 0xFE;
            if( BlackPixle(i-1,j-1)&&BlackPixle(i-1,j)&&BlackPixle(i-1,j+1)&&
                BlackPixle(i,j-1)&&BlackPixle(i,j+1)&&WhitePixle(i,j)&&
                BlackPixle(i+1,j-1)&&BlackPixle(i+1,j)&&BlackPixle(i+1,j+1))
                Image_Sobel[i][j] = 0xFE;
      }
  }

总结到这里就告一段落了,自我小结的同时,也希望或多或少可以对大家有所帮助

如有疑问或错误,欢迎和我私信交流指正。
W.By Xyq

人工智能相关概念(持续更新) 卷积核 卷积核就是图像处理时,给定输入图像,输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核,其具有局部性。 索贝尔算子(sobel算子) 索贝尔算子是计算机视觉领域的一种重要处理方法。主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检测。索贝尔算子是把图像中每个像素的上下左右四领域的灰度值加权差,在边缘处达到极值从而检测边缘。 索贝尔算子不但产生较好的检测效果,而且对噪声具有平滑抑制作用,但是得到的边缘较粗,且可能出现伪边缘。 阅读详情

相关推荐

图像二值化处理(全局阈值 自适应阈值 手动阈值操作以及直方图画法)

图像二值化处理(全局阈值 自适应阈值 手动阈值操作以及直方图画法)

m0_60447786的博客 1万+

图像二值化的阈值求法

图像二值化的操作,就是寻找一个合适的阈值T,把图像中所有像素值小于等于该阈值的像素点设置为一个像素值,同时把图像中所有像素值大于该阈值的像素点设置为另一个像素值。也就是说,二值化之后整幅...

shandianfengfan的博客 1万+

Ascend C算子开发(入门)—— 什么是算子?

Ascend C算子开发(入门)—— 什么是算子?

Byyyi耀的博客 2613

图像二值化阈值选取常用方法

图像二值化阈值选取常用方法: 1.双峰法。 2.P参数法。 3.最大类间方差法(Otsu、大津法)。 4.最大熵阈值法。 5.迭代法(最佳阈值法)。 1.双峰法。 1996年,Prewitt提出了直方图双峰法,即如果灰度级直方图呈明显的双峰状,则选取两峰之间的谷底所对应的灰度级作为阈值。 注意:应用灰度直方图双峰法来分割图像,也需要一定的图像先验知识,因为同一个直方图可以对应若干个不同的图像,直方图只表明图像中各个灰度级上有多少个象素,并不描述这些象素的任何位置信息。 该方...

己亥谷雨 8339

Python+OpenCV图像分割实战:从阈值法到GrabCut实现智能抠图

图像分割是计算机视觉的核心任务之一,旨在将图像中的前景与背景分离。其基本原理是利用像素在颜色、纹理或边缘等特征上的差异进行区分。从基础的阈值分割、边缘检测,到更高级的图割算法,不同的技术路径为自动化图像处理提供了可能。在工程实践中,这些技术价值显著,能够实现批量化、可定制的图像处理流程,避免了手动操作的繁琐与商业API的成本。典型的应用场景包括电商产品图白底替换、证件照换背景、内容创作中的素材提取等。本文以Python和OpenCV为工具,深入讲解了基于颜色阈值的简单背景去除、结合轮廓查找的通用策略,以及利

weixin_33913332的博客 337

浅析基于HSV特征和LBP特征的行人检测算法

      行人检测就是检测图像或视频中是否包含行 人,并根据检测出的行人给出其大小和位置信息, 是目前机器视觉领域的研究热点之一。行人检测 具有广泛的应用需求和经济价值,例如在车辆辅助 驾驶、智能视频监控、人体行为分析、虚拟现实中有广泛的应用,近年来也应用在航拍图像和受害者营 救等新兴领域中[1]。但是,由于行人具有非刚性特 征,行人图像受身材、姿态、衣着以及拍摄时的视 角、光照等因素的影响,再...

linuxface的博客 2089

OpenCV阈值分割全解析:从原理到实战,掌握图像二值化核心技术

图像分割是计算机视觉的基础任务,其核心原理在于根据像素特征将图像划分为不同区域。阈值分割作为最经典的分割方法,通过设定一个或多个灰度门限,实现图像的二值化或区域分离,为后续的边缘检测、轮廓分析、目标识别等高层任务提供简化且聚焦的数据表示。在工程实践中,OpenCV的cv::threshold函数提供了多种阈值化方法,包括固定阈值、自适应阈值以及基于统计的自动阈值算法(如大津法)。这些方法能有效应对不同光照条件、对比度场景,例如文档扫描、运动目标检测、医学图像分析等。本文深入探讨了阈值操作在C++与OpenC

weixin_30443747的博客 342

图像识别技术浅析

[简要]1、概述自动图像识别系统的过程分为五部分:图像输入、预处理、特征提取、分类和匹配,其中预处理又可分为图像分割、图像增强、二值化和细化等几个部分。(1)图像输入将图像采集下来输入计算机进行处理是图像识... 1、概述 自动图像识别系统的过程分为五部分:图像输入、预处理、特征提取、分类和匹配,其中预处理又可分为图像分割、图像增强、二值化和细化等几个部分。 (1)图像输入 将图像采集

理工喵星人扮文艺 7208

Windows 11 部署 Docker Desktop:从 WSL 报错到服务配置的完整排障实录

本文详细记录了在Windows 11上部署Docker Desktop时遇到的WSL报错问题及完整解决方案。从Hyper-V配置、BIOS设置到系统服务检查,提供了一系列实用命令和排查步骤,帮助开发者快速解决'Unexpecter WSL error'等常见问题,实现Docker与WSL2的稳定运行。

weixin_30687051的博客 120

【Qt】Qt5.15在线安装避坑指南:从代理配置到组件选择的完整实践

本文详细介绍了Qt5.15在线安装的全流程避坑指南,包括代理配置、组件选择和常见问题解决方案。通过使用Fiddler工具和国内镜像源,可显著提升下载速度。文章还提供了组件选择的黄金法则和安装后的验证步骤,帮助开发者高效完成Qt5.15的安装与配置。

weixin_42550052的博客 270

AI智能文档扫描仪步骤详解:图像二值化增强效果调节方法

本文介绍了如何在星图GPU平台上自动化部署AI智能文档扫描仪镜像,实现文档图像的二值化增强处理。该工具基于OpenCV算法,可智能矫正文档并去除阴影噪点,适用于合同、发票等纸质文档的高清数字化扫描,提升办公效率。

weixin_36300623的博客 257

论文笔记--Spatial-Temporal Fusion Graph Neural Networks for Traffic Flow Forecasting

Summary 在交通预测问题上,现有的框架通常利用给定的空间邻接图和复杂的机制来建模空间和时间关联。作者认为使用给定的空间邻接图会限制模型的有效时空相关性学习,并且它们通常使用单独的模块来实现空间和时间相关性,或者只使用独立的组件来捕获局部或全局的异质依赖关系,割裂了时空依赖关系。为此作者提出一种时空融合图神经网络用于交通预测。提出一种数据驱动的“时间图”生成方法,以此来补偿空间图可能没有反映的相关性。提出一种新的交通预测方法。 Problem Definition 交通预测中的挑战 以上图为

chenxino的博客 1755

十六届智能车信标组的浅析

文章主要是对我今天从知网上查找的一些比较有用的文献的自我分析于总结,一来是为了自已第一次参加智能车比赛的一些总结,方便自已回顾,二来是为了同我一样大一第一次参加这个比赛,而感到迷茫不知道从何下手的车友提供了一些我自认为是比较有用的资料。 由于本人大一,这篇文章也是闲着没事干,突发想法,想把自已的一些自已对信标组的避障与追灯的学习发到优快云上面,这也是我第一次发博文,因本人水平有限,文章中可能存在的一些错误的地方,还请各位见谅,可以在评论区或者私信指正,大佬轻喷,如有侵权立撤。 欢迎大家在评论区或者私信我一

weixin_53809032的博客 9093

LAMMPS实操系列(四): 高熵合金FCC-CoCrCuFeNi的退火模拟

我们对FCC-CoCrCuFeNi的退火模拟思路主要是,首先将材料以均匀的速率用100 ps从300 K升温至1000 K,然后在1000 K的温度下平衡100 ps,随后以均匀的速率用100 ps从1000 K降温至300 K,随后通过共轭梯度下降法做静力学结构优化得到退火后的结构。由于FCC-CoCrCuFeNi高熵合金被认为是潜在的工程结构材料[1],接下来我们将对退火前后的结构进行压缩模拟,对比退火前后FCC-CoCrCuFeNi高熵合金的力学性能变化,敬请各位读者关注我们的更新。

Ceshigo_CD的博客 4837

2023年12月机器人技术等级考试试卷(三级理论) 试题解析

2023年12月机器人技术等级考试试卷(三级理论) 试题解析

http://www.cierobot.com 4095

浅析OpenCV中的BlobDetector

一、blob基础所谓Blob就是图像中一组具有某些共同属性(例如,灰度值)的连接像素。在上图中,深色连接区域是斑点,斑点检测的目的是识别并标记这些区域。OpenCV提供了一种方便的方法来检测斑点并根据不同的特征对其进行过滤。在OpenCV 3中,使用SimpleBlobDetector :: create方法创建智能指针调用该算法。PythonPython# Setup SimpleBl...

GreenOpen专注图像处理 3205

【我的Android进阶之旅】解决android应用使用android:persistent属性带来的系统Launcher应用必须重启设备才生效的问题,大幅度提升开发效率

一、问题描述 我们在开发系统级别应用,比如Launcher桌面的时候,会发现有个问题:每次Launcher修改完代码,重新编译之后,安装到android设备上之后,必须重启才会生效。否则就是使用了之前的Launcher版本的内容。而每次重启设备得一分钟左右,太慢了,太影响效率了! 1.1 痛点 每次更新完代码,重新安装之后,必须重启设备才会生效。效率太TM低了! 二、分析问题 经过一轮代码排查,最终发现是因为src\main\AndroidManifest.xml文件中,定义application使用了an

字节卷动 1713

OCR 技术浅析

随着人工智能的热度上升,图像识别这一分领域也渐渐被人们所关注。图像识别中最贴近我们生活的可能就是 OCR 技术了。可能很多同学还不知道什么是 OCR。我们先来看下 OCR 的定义: OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的...

Nieson2012的专栏 1423

CSP-J2019普及组复赛T4:加工零件

CSP-J2020普及组复赛T1:优秀的拆分,广度优先遍历求最短路。

少儿编程乔老师 1854

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

ocr 图片纠正_OCR 技术浅析

随着人工智能的热度上升,图像识别这一分领域也渐渐被人们所关注。图像识别中最贴近我们生活的可能就是 OCR 技术了。可能很多同学还不知道什么是 OCR。我们先来看下 OCR 的定义:OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。...

weixin_40006133的博客 891

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

OCR技术浅析-无代码篇(1)

图像识别中最贴近我们生活的可能就是 OCR 技术了。 OCR 的定义:OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。 今天就来简单分析下 OCR 技术的原理。 从整体上来说,OCR一般分为两个大步骤:图像...

305

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

浅谈OpenCV

浅谈OpenCV

m0_63395114的博客 2924
上一篇: 【全向行进】关于CH32V103中RAM报错问题
下一篇: 【图像数学形态学处理】膨胀与腐蚀运算
Carry_qing
博客等级 码龄7年 430粉丝 9原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carry_qing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值