图像二值化的概念

图像二值化是指将指将256阶的灰度图通过合适的阈值,转换为黑白二值图。即像素或0和255。其目的通常为将图像的前后景进行分割,使图像变得简单,数据量减小,能凸显出感兴趣的目标的轮廓。主要用于目标物体检测,目标跟踪、物体分离等领域

二值化的数学表达,对于图像中的像素[x,y],其灰度值为f(x,y), 设置门限值(阈值)为TH,则:
g ( x , y ) { 255 , i f f ( x , y ) > = T H 0 , i f = = i f f ( x , y ) < T H g(x,y) \begin{cases} 255, &if\ f(x,y) >=TH\\ 0, &if==if\ f(x,y) <TH \end{cases} g(x,y){255,0,​if f(x,y)>=THif==if f(x,y)<TH​

图像二值化阈值选择算法

二值化的关键在于阈值的选择。合理的阈值应该尽可能的分离前景和背景,如何来确定阈值呢,有以下几种求阈值的方法

局部二值化法

全局二值化即使用单一阈值对画面中的所有像素进行分割。通常可以分割直方图具有双峰性的图像。前景和背景的分布有交错部分,表示部分前景和背景像素颜色相同。由于有交错部分存在,通过阈值将前后景完全分离是不可能的,只能寻找最优解

p-tile法

需要预先获得图像中前景占完整画面的比值P%,依次累积灰度直方图,直
到该累积值大于或等于前景图像(目标)所占面积,此时的灰度级即为所
求的阈值。

最小误判概率法

设前景像素点灰度概率密度函数为p(x),背景像素点灰度概率密度函数为q(x),分布函数如图。前景像素个数占图像总像素数的百分比为θ1,背景为θ2 =1- θ1

设分割阈值为T,前景像素被错分为背景的概率为
E 1 ( T ) = ∫ T ∞ p ( x ) d x E1(T)=\int_T^\infty {p(x)dx} E1(T)=∫T∞​p(x)dx
背景像素被错分为前景的概率为:
E 2 ( T ) = ∫ − ∞ T q ( x ) d x E2(T)=\int_{-\infty}^T {q(x)dx} E2(T)=∫−∞T​q(x)dx
阈值T造成的错误分割概率为:
E ( T ) = θ 1 E 1 ( T ) + θ 2 E 2 ( T ) E(T) = θ1E1(T)+θ2E2(T) E(T)=θ1E1(T)+θ2E2(T)

E ( T ) = θ 1 ∫ T ∞ p ( x ) d x + θ 2 ∫ − ∞ T q ( x ) d x E(T)=θ1\int_T^\infty {p(x)dx}+θ2\int_{-\infty}^T {q(x)dx} E(T)=θ1∫T∞​p(x)dx+θ2∫−∞T​q(x)dx
E(T)取得最小值时,其导数为0。

E ( T ) = θ 1 ∫ T ∞ p ( x ) d x + θ 2 ∫ − ∞ T q ( x ) d x E(T)=θ1\int_T^\infty {p(x)dx}+θ2\int_{-\infty}^T {q(x)dx} E(T)=θ1∫T∞​p(x)dx+θ2∫−∞T​q(x)dx
θ 1 p ( T ) − θ 2 q ( T ) = 0 θ1p(T)-θ2q(T)=0 θ1p(T)−θ2q(T)=0
σ E σ T = θ 1 p ( T ) = θ 2 q ( T ) \frac{{\sigma}E}{{\sigma}T} =θ1p(T)=θ2q(T) σTσE​=θ1p(T)=θ2q(T)
假设图像中前景和背景像素灰度都呈正态分布,均值和
方差分别为 μ1, σ 1 2 {\sigma_{1}}^2 σ1​2,μ2, σ 2 2 {\sigma_{2}}^2 σ2​2,所以有:

θ 2 ( μ 2 − T ) 2 2 σ 2 2 = θ 1 ( μ 1 − T ) 2 2 σ 1 2 {θ}_{2}{\frac{(\mu_{2}-{}T)^{2}}{2{\sigma}_{2}^{2}}}={θ}_{1}{\frac{(\mu_{1}-{}T)^{2}}{2{\sigma}_{1}^{2}}} θ2​2σ22​(μ2​−T)2​=θ1​2σ12​(μ1​−T)2​

为了便于计算,假设:
σ 1 2 = σ 2 2 = σ 2 {\sigma}_{1}^{2}={\sigma}_{2}^{2}={\sigma}^{2} σ12​=σ22​=σ2
θ 2 = θ 2 = 1 2 {θ}_{2}={θ}_{2}=\frac{1}{2} θ2​=θ2​=21​
最佳阈值公式:
θ 2 ( μ 2 − T ) 2 2 σ 2 2 = θ 1 ( μ 1 − T ) 2 2 σ 1 2 {θ}_{2}{\frac{(\mu_{2}-{}T)^{2}}{2{\sigma}_{2}^{2}}}={θ}_{1}{\frac{(\mu_{1}-{}T)^{2}}{2{\sigma}_{1}^{2}}} θ2​2σ22​(μ2​−T)2​=θ1​2σ12​(μ1​−T)2​
( μ 2 − T ) 2 2 σ 2 2 = ( μ 1 − T ) 2 2 σ 1 2 {\frac{(\mu_{2}-{}T)^{2}}{2{\sigma}_{2}^{2}}}={\frac{(\mu_{1}-{}T)^{2}}{2{\sigma}_{1}^{2}}} 2σ22​(μ2​−T)2​=2σ12​(μ1​−T)2​
T = μ 1 + μ 2 2 T={\frac{\mu_{1}+\mu_{2}}{2}} T=2μ1​+μ2​​

最小误判概率法迭代法实现

  1. 选择阈值T 的初始估计值。(求图像的最大灰度值A,最小灰度值B,令
    (A+B)/2为初始值。)
  2. 用T分割图像,得到两组像素,即分割结果。G1由所有灰度值大于T 的像
    素组成,G2由所有灰度值≤T 的像素组成。
  3. 对区域G1和G2中的所有像素计算平均灰度值μ1和μ2 。
  4. 计算新的阈值: T = μ 1 + μ 2 2 T={\frac{\mu_{1}+\mu_{2}}{2}} T=2μ1​+μ2​​
  5. 重复步骤2到4,两次迭代所得的T值之差小于预设值,或者直接定义迭
    代次数。

局部二值化法

大津(OTSU)法

Opencv 二值化示例代码

Opencv教程-图像二值化相关推荐

  1. Python使用openCV把原始彩色图像转化为灰度图、使用OpenCV把图像二值化(仅仅包含黑色和白色的简化版本)、基于自适应阈值预处理(adaptive thresholding)方法

    Python使用openCV把原始彩色图像转化为灰度图.使用OpenCV把图像二值化(仅仅包含黑色和白色的简化版本).基于自适应阈值预处理(adaptive thresholding)方法 目录

  2. OpenCv之图像二值化(笔记12)

    # 图像处理中,Thresholding中文翻译过来叫二值化或者阈值化.二值化就是把图片转换成只有white赫尔black这俩种颜色.通过Thresholding,可以让图片中感兴趣 # 的颜色编程主 ...

  3. opencv java图像二值化处理

    1.threshold方法: Imgproc.threshold(Mat src, Mat dst, double thresh, double maxval, int type) 参数: src 原 ...

  4. OpenCV机器视觉-图像二值化

    图像二值化 图像二值化( Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程. 在数字图像处理中,二值图像占有非常重要的地位 ...

  5. opencv实现图像二值化(直接确定或滑杆调节)

    一.滑杆调节版-- #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #inclu ...

  6. OpenCV-Python 图像二值化

    OpenCV-Python 图像二值化 一.什么是图像二值化 二.图像二值化 Ⅰ先获取阈值: Ⅱ根据阈值去二值化图像 ⅢOpenCV中的二值化方法 三.全局阈值函数cv2.threshold · 函数 ...

  7. OpenCV+python:图像二值化

    1,图像二值化概念及方法 一个像素点的颜色是由RGB三个值来表现的,所以一个像素点矩阵对应三个颜色向量矩阵,分别是R矩阵,G矩阵,B矩阵,它们也都是同样大小的矩阵. 在图像处理中,用RGB三个分量(R ...

  8. 【OpenCV 4开发详解】图像二值化

    本文首发于"小白学视觉"微信公众号,欢迎关注公众号 本文作者为小白,版权归人民邮电出版社发行所有,禁止转载,侵权必究! 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4 ...

  9. python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...

    python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘 python opencv 1,读取图像 2,图像变矩阵 3,图像转灰度图像 4,彩色图像是3D数组 5,灰度图像是2 ...

最新文章

  1. Linux的su命令,sudo命令和限制root远程登录
  2. GTK+ 项目名终于去掉了那个加号
  3. BT:大豆皮堆肥过程中的物质转化、微生物群落组成和代谢功能演替
  4. 小程序不支持wx.request同步请求解决方法
  5. 使用Movie Maker制作视频相册
  6. hive 写入mysql 覆盖_替换Hive的元数据库derby
  7. 还在使用 SimpleDateFormat?你的项目崩没?
  8. 双边滤波JAVA代码实现
  9. python初中必背语法_初中必背英语语法知识汇总
  10. sql server中的 SET NOCOUNT ON 的含义
  11. 【虚拟机ubuntu设置ssh】ssh连不上问题解决方法
  12. memcpy的两种实现(转)
  13. H5分享带缩略图,描述,微信内分享到好友,朋友圈等
  14. 在程序员职业中,外包的薪资真的更高吗?
  15. 人生无常,心安便是归处
  16. 关于Socket的建立及连接
  17. 公众号降权了可以养好嘛,微信公众号降权了多久能恢复
  18. 实现用户输入用户名和密码登录
  19. AI会让AI工程师失业吗?
  20. 2016世界人工智能大会 AI领袖共启智能+新纪元

热门文章

  1. python去除Excel重复项
  2. vue移动端项目微信公众号授权登录
  3. python怎么批量下载年报_Python+Wind 批量下载上市公司年报 - Part 1/2
  4. 微软明年停止支持IE浏览器 鼓励使用Edge浏览器
  5. python发送短信验证码登录_python发送短信验证码
  6. 怎么学习嵌入式技术开发
  7. 是否可以将一个控件的outerHTML赋值?
  8. 给定一个完全循环赛的比赛结果,其中n个队伍两两比赛一次。每场比赛以一方胜出或者平局结束。设计一个算法,把n个队伍排序,序列中每个队伍都不曾输给紧随其后的那个队伍。说明该算法的时间效率类型。
  9. 基于PCA的人脸识别
  10. [配置]keepalived配置高可用虚拟IP不通