从原理:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/threshold/threshold.html

目标:

本节简单介绍:

  • OpenCV中的阈值(threshold)函数: threshold 的运用。

基本理论:

注意:
本节的解释出自Bradski与Kaehler的书籍 Learning OpenCV 。

什么是阈值?

  • 最简单的图像切割的方法。

  • 应用举例:从一副图像中利用阈值切割出我们须要的物体部分(当然这里的物体能够是一部分或者总体)。这种图像切割方法是基于图像中物体与背景之间的灰度差异。并且此切割属于像素级的切割。

  • 为了从一副图像中提取出我们须要的部分,应该用图像中的每个像素点的灰度值与选取的阈值进行比較,并作出对应的推断。

    (注意:阈值的选取依赖于详细的问题。即:物体在不同的图像中有可能会有不同的灰度值。

  • 一旦找到了须要切割的物体的像素点,我们能够对这些像素点设定一些特定的值来表示。(比如:能够将该物体的像素点的灰度值设定为:‘0’(黑色),其它的像素点的灰度值为:‘255’(白色);当然像素点的灰度值能够随意,但最好设定的两种颜色对照度较强,方便观察结果)。

阈值化的类型:

  • OpenCV中提供了阈值(threshold)函数: threshold 。

  • 这个函数有5种阈值化类型,在接下来的章节中将会详细介绍。

  • 为了解释阈值切割的过程。我们来看一个简单有关像素灰度的图片。该图例如以下。该图中的蓝色水平线代表着详细的一个阈值。

阈值类型1:二进制阈值化

  • 该阈值化类型例如以下式所看到的:

  • 解释:在运用该阈值类型的时候。先要选定一个特定的阈值量。比方:125。这样,新的阈值产生规则能够解释为大于125的像素点的灰度值设定为最大值(如8位灰度值最大为255)。灰度值小于125的像素点的灰度值设定为0。

阈值类型2:反二进制阈值化

  • 该阈值类型例如以下式所看到的:

  • 解释:该阈值化与二进制阈值化相似,先选定一个特定的灰度值作为阈值,只是最后的设定值相反。

    (在8位灰度图中,比如大于阈值的设定为0。而小于该阈值的设定为255)。

阈值类型3:截断阈值化

  • 该阈值化类型例如以下式所看到的:

  • 解释:相同首先须要选定一个阈值,图像中大于该阈值的像素点被设定为该阈值,小于该阈值的保持不变。

    (比如:阈值选取为125,那小于125的阈值不改变。大于125的灰度值(230)的像素点就设定为该阈值)。

阈值类型4:阈值化为0

  • 该阈值类型例如以下式所看到的:

  • 解释:先选定一个阈值,然后对图像做例如以下处理:1 像素点的灰度值大于该阈值的不进行不论什么改变;2 像素点的灰度值小于该阈值的,其灰度值所有变为0。

阈值类型5:反阈值化为0

  • 该阈值类型例如以下式所看到的:

  • 解释:原理类似于0阈值,可是在对图像做处理的时候相反,即:像素点的灰度值小于该阈值的不进行不论什么改变,而大于该阈值的部分。其灰度值所有变为0。

部分代码:

// ConsoleApplication3_6_23.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;Mat src,gray,dst;
int thr_value = 0;
int thr_type = 0;const int max_type = 4;
const int max_value = 255;
const int max_binary_value = 255;char *windowName = "Demo";
void Image_thred(int,void*);
int _tmain(int argc, _TCHAR* argv[])
{src = imread("test.png");if(!src.data)return -1;cvtColor(src,gray,CV_RGB2GRAY);namedWindow("灰度图",CV_WINDOW_AUTOSIZE);imshow("灰度图",gray);namedWindow(windowName,CV_WINDOW_AUTOSIZE);createTrackbar("Type: \n 0: Binary \n 1: Binary Inverted \n 2: Truncate \n 3: To Zero \n 4: To Zero Inverted",windowName,&thr_type,max_type,Image_thred);createTrackbar("Value",windowName,&thr_value,max_value,Image_thred);Image_thred(0,0);waitKey(0);return 0;
}void Image_thred(int,void*)
{/* 0: 二进制阈值1: 反二进制阈值2: 截断阈值3: 0阈值4: 反0阈值*/threshold(gray,dst,thr_value,max_binary_value,thr_type);imshow(windowName,dst);
}

关键函数解释:

threshold( src_gray, dst, threshold_value, max_BINARY_value,threshold_type );
  • src_gray: 输入的灰度图像的地址。
  • dst: 输出图像的地址。
  • threshold_value: 进行阈值操作时阈值的大小。
  • max_BINARY_value: 设定的最大灰度值(该參数运用在二进制与反二进制阈值操作中)。
  • threshold_type: 阈值的类型。

    从上面提到的5种中选择出的结果。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/yxwkf/p/4729155.html

opencv-阈值处理相关推荐

  1. opencv 阈值分割 — threshold()

    OpenCV阈值分割函数:threshold() 函数原型: double threshold(InputArray src, OutputArray dst, double thresh, doub ...

  2. OpenCV阈值范围Threshold inRange的实例(附完整代码)

    OpenCV阈值范围Threshold inRange的实例 OpenCV阈值范围Threshold inRange的实例 OpenCV阈值范围Threshold inRange的实例 #includ ...

  3. opencv阈值分割类型

    threshold(InputArray src, OutputArray dst, double thresh, double maxval, int type); src:输入图,只能输入单通道图 ...

  4. opencv 阈值分割_CVPR2019实例分割Mask Scoring RCNN

    点击上方↑↑↑"OpenCV学堂"关注我 欢迎留言,参与互动讨论,发表自己的看法 作者博客: https://blog.csdn.net/linolzhang 今年的Oral,在c ...

  5. opencv 阈值分割_用 OpenCV 去除图片中的水印,骚操作!

    点击上方 小张Python,加为星标 第一时间收到 Python 技术干货! 参考连接:https://stackoverflow.com/questions/32125281/removing-wa ...

  6. opencv阈值图像Threshold方法

    图像阈值 固定阈值,自适应阈值,Otsu 二值化等 全局阈值和局部阈值 一.图像二值化 定义:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效 ...

  7. 06 OpenCV 阈值处理、自适应处理与ostu方法

    1 基本概念 CV2中使用阈值的作用是将灰度图像二值化,即将灰度图像的像素值根据一个设定的阈值分成黑白两部分.阈值处理可以用于图像分割.去除噪声.增强图像对比度等多个领域.例如,在物体检测和跟踪中,可 ...

  8. opencv阈值处理-threshold函数、自适应阈值处理和Ostu处理

    阈值处理是指剔除图像内像素值高于一定值或者低于一定值的像素点.例如设置阈值为125,则大于125的像素点的值设为255,小于125的设为0. 一.threshold函数 open cv3.0使用cv2 ...

  9. OpenCV —— 阈值分割(直方图技术法,熵算法,Otsu,自适应阈值算法)

    阈值分割 1. 全局阈值分割 直方图技术法 熵算法 Otsu算法 2. 局部阈值分割 自适应阈值 阈值的分割的核心就是如何选取阈值,选取正确的阈值时分割成功的关键.可以使用手动设置阈值,也可以采用直方 ...

  10. 【笔记】opencv阈值处理 threshold函数 cv2.THRESH_BINARY ,cv2.THRESH_TRUNC) cv2.adaptiveThreshold()

    像素是在模拟图像数字化时对连续空间进行离散化得到的.每个像素具有整数行(高)和列(宽)位置坐标,同时每个像素都具有整数灰度值或颜色值. threshold函数 返回的第一个参数为阈值,第二个为结果图像 ...

最新文章

  1. IBM借QISKit打造基于云平台的量子计算
  2. asp.net2.0学习历程 菜鸟到中级程序员的飞跃
  3. 一个CSS的px值转rem值的Sublime Text 3自动完成插件
  4. boost::multi_array模块实现创建负步幅视图的小测试
  5. docker学习笔记(六)docker-compose
  6. 你复工了吗?啥感受?
  7. 你试过不用if撸代码吗?
  8. android已停止三星,急,android离线打包程序三星下总报 程序 已停止
  9. 基础算法 —— 模拟思维
  10. 资料下载丨“十四五”数据库发展趋势与挑战-CCF数据库专委会
  11. PS使用:利用PS制作旋转水晶球gif图
  12. java归并排序自底向上实现:
  13. C++中带默认参数的函数定义及使用总结
  14. API Guides Contacts Provider (三)
  15. cst2020的linux版本,如何安装CST2020的windows版本
  16. 制作QQ背景音乐链接
  17. mysql中ibd文件是很么_ibd文件怎么打开
  18. 工作被拥抱变化了该怎么办?
  19. 【测绘程序设计】坐标反算神器V1.0(附C/C#/VB源程序)
  20. Command CompileAssetCatalog emitted errors but did not return a nonzero exit code to indicate failur

热门文章

  1. Powershell有哪些用途
  2. 报表自动化就是连接数据库?错,它打开了数据仓库的大门
  3. 巧用FineReport搭建成本管控监测系统
  4. 职称计算机xp系统试题,2020年职称计算机WindowsXP测试题及答案.doc
  5. vue路由配置src/router/index.js
  6. 通用mapper_通用Mapper快速开发,搭建项目
  7. oracle目录解析,Oracle目录分析与比较
  8. 要不要借钱给好朋友?救急不救贫
  9. Tomcat启动乱码及IDEA中tomcat信息乱码解决方法
  10. 整数快速幂(原理+模板)