一、简述

图像二值化(Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓。

二、原理

将256个亮度等级的灰度图像通过适当的阈值选取而获得仍然可以反映图像整体和局部特征的二值化图像。首先,图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。其次,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像。

为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。所有灰度大于或等于阈值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。

三、二值化在OpenCV中的实现

1、固定阈值操作法

double threshold( InputArray src,OutputArray dst,double threshold,double maxval,int type ); 

其中第五个参数type(阈值类型)使用CV_THRESH_BINARY、CV_THRESH_BINARY_INV、CV_THRESH_TRUNC、CV_THRESH_TOZERO、CV_THRESH_TOZERO_INV其中的一种。具体含义如下图:

2、自适应阈值操作法

(1)使用 1 中的threshold()方法,但是第五个参数type(阈值类型)使用CV_THRESH_OTSU(大津法)或CV_THRESH_TRIANGLE(三角形算法),这样该函数就会使用大律法OTSU或三角形算法得到的全局自适应阈值来进行二值化图片,而第三个参数threshold不再起作用。THRESH_OTSU最适用于双波峰,THRESH_TRIANGLE最适用于单个波峰,最开始用于医学分割细胞等。

且这两种阈值类型常与其他阈值类型配合使用。比如:

threshold( dst, dst, 300 , 255, CV_THRESH_OTSU | CV_THRESH_BINARY_INV);

这种方法对于灰度直方图呈现二峰特征的图片处理起来效果很好

(2)使用adaptiveThreshold()方法

void adaptiveThreshold(InputArray src, OutputArray dst, double maxValue, int adaptiveMethod,int thresholdType, int blockSize, double C)

三、二值图像形态学操作

包括腐蚀、膨胀、开运算、闭运算、形态学梯度、顶帽、黑帽等操作。

关于图像二值化的介绍,这里有篇博客介绍的也挺好,以供参考:链接

OpenCV 二值化相关推荐

  1. python opencv图像二值化函数_python opencv 二值化 计算白色像素点的实例

    python opencv 二值化 计算白色像素点的实例 贴部分代码 #! /usr/bin/env python # -*- coding: utf-8 -*- import cv2 import ...

  2. opencv二值化找轮廓检测背景简单小物体

    一.前言 本篇主要是针对背景简单,且具有固定颜色的单类小物体,方法为在灰度化时选用图片的HSV中的S通道,再使用opencv 二值化找轮廓大法可将小物体框出. 原理很简单,图片->取S通道灰度化 ...

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

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

  4. opencv 二值化_Python-OpenCV获取图像轮廓的图像处理方法

    一.引言 在<OpenCV阈值处理函数threshold处理32位彩色图像的案例>介绍了threshold 函数,但threshold 的图像阈值处理对于某些光照不均的图像,这种全局阈值分 ...

  5. OpenCV二值化方法

    cvThreshold是opencv库中的一个函数 作用:函数 cvThreshold 对单通道数组应用固定阈值操作.该函数的典型应用是对灰度图像进行阈值操作得到二值图像.(cvCmpS 也可以达到此 ...

  6. OpenCV+MFC学习笔记(二):OpenCV二值化处理图像并在Picture Control中并自适应显示

    在前面我们已经完成通过OpenCV读取图片在Picture Control中并自适应显示.下面我们很自然的需要对读取的图片进行处理,处理完之后很自然的想到要看看效果.所以今天的笔记是通过OpenCV灰 ...

  7. python + opencv + 二值化处理图片数据集(三种方法)

    二值化处理图片数据集 首先导入相应的包 cv2即opencv-python包 if __name__ == "__main__": 上面这一句话的含义: 自己的 .py 可以作为自 ...

  8. opencv 二值化 python_Python OpenCV 图像二值化-阈值分割

    1.二值化处理 # 手动二值化处理 # 设置阈值大小 threshold thresh = 125 # 设置超过阈值像素值的最大值 maxval = 255 # THRESH_BINARY:超过阈值为 ...

  9. python:opencv 二值化处理

    1:二值化处理 https://blog.csdn.net/zj360202/article/details/79165796 定义:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是 ...

  10. OpenCV二值化cvThreshold和自适应二值化cvAdaptiveThreshold及Otsu

    阈值化函数: double cvThreshold(constCvArr* src, CvArr* dst, double threshold, double max_value,int thresh ...

最新文章

  1. java猜拳游戏代码
  2. 用python画猫咪怎么画-Turtle库画小猫咪
  3. Android Binder机制----实现自定义的系统服务
  4. linux下安装树梅派系统,优麒麟树莓派系统(优麒麟 for Raspberry Pi)的安装方法...
  5. 如何在ASP.NET Core程序启动时运行异步任务(1)
  6. I Got a Matrix!
  7. Oracle入门(十四.11)之使用显式游标属性
  8. FloatingActionMenu 向上弹出菜单
  9. Caffe+CUDA8.0+CuDNNv5.1+OpenCV3.1+Ubuntu14.04 配置参考文献 以及 常见编译问题总结
  10. 2021-08-13servlet 原理及注意事项
  11. SylixOS pci 设备驱动开发
  12. android中listview没有item也能点击事件,ListView中的Item不能点击的解决方法
  13. nginx+keepalived+tomcat
  14. 竞品商业情报收集和竞品商业情报分析该怎么做?
  15. 万事无忧之SEO GOOGLE优化秘诀
  16. 2022-4-28 BUUCTF Crypto区部分题目分享
  17. matlab 之 diag 函数用法
  18. 单片机入门(实现流水灯)--适合初学者
  19. lisp 画双线带倒圆角_VisualLisp增加公差、消除重合直线圆弧
  20. 智乃的数字积木(easy version)<每日一题>

热门文章

  1. LOIC安全测试工具
  2. devcon命令开启启用/禁用端口
  3. android开发用什么字体,移动端web app和页面开发使用什么字体?微软雅黑?
  4. Vue.js 快速入门 (一) —— Vue基础
  5. vue.js 带有正则选择的车牌控件组件
  6. linux直播电视软件下载,周末了!通过Linux Mint开发的IPTV播放器观看海量国内外直播电视...
  7. 关于appium的下载安装及环境配置(含nodejs下载安装)
  8. linux appium 安装教程,Ubuntu 系统安装 Appium 及样例运行教程
  9. 【物联网控制技术复习】【复数的概念】【拉普拉斯变换】
  10. 2.三种前端跨域的解决方法