计算机视觉图像常用基本算法(阈值化、形态学变化、模糊)
在日常的做图像深度学习的时候,通常在拿到图像的时候也会像做机器学习算法应用一样,对数据进行预处理,我们也需要对图像进行一些预处理,目的也是为了去除数据中的噪声,去除在图像中没有用的像素
这里介绍三种基于opencv封装下的算法:
- 阈值化
- 简单阈值化
- 自适应阈值化
- OTSU阈值化
- 算法对应应用场景
- 形态学变化
- 腐蚀
- 膨胀
- 开运算
- 闭运算
- 模糊(平滑)
- 均值模糊
- 高斯模糊
- 中值模糊
阈值化
大白话说就是给定图像一个像素值作为阈值,将图像中所有像素与这个像素阈值比较,如果大于或者小于这个阈值,就会将图像中这个像素改变会特定的像素值。
简单阈值化
简单阈值化有五种如下表所示:
设定图像中像素值为 X X X,阈值为 T T T
方法 | X < T X<T X<T | X > = T X>=T X>=T |
---|---|---|
阈值二值化 | X = 0 X=0 X=0 | X = 255 X=255 X=255 |
阈值反二值化 | X = 255 X=255 X=255 | X = 0 X=0 X=0 |
截断 | X 保 持 不 变 X保持不变 X保持不变 | X = T X=T X=T |
阈值取零 | X = 0 X=0 X=0 | X 保 持 不 变 X保持不变 X保持不变 |
阈值反取零 | X 保 持 不 变 X保持不变 X保持不变 | X = 0 X=0 X=0 |
自适应阈值化
对比简单阈值化,简单阈值化作用与全局的图像,即对整个图像做一种方法的处理,但是在图像中由于不同区域的光线状况不同,这种简单的处理效果就不会太好。自适应阈值化能够很好的对图像不同区域分别应用不同的阈值
自适应阈值化有二种方法:
对于要进行阈值化的图像,图像中每个像素都有自己对应的阈值。
- 自适应均值阈值化:阈值为每个像素邻近区域的像素值的均值
- 自适应高斯阈值化:阈值为每个像素邻近区域的像素值的加权和,相应权重是由一个高斯函数决定
像素邻近区域(如下图所示,白色像素的邻近区域为蓝色像素部分):
OTSU阈值化
Otsu 的原理是最小化类间方差,从像素分布直方图的角度来看就是在像素分布直方图的峰值之间找一个点,使得两个类之间的方差最大,类内方差最小
大白话说,就是选择图像中像素值出现次数最多的前二位,在这个二个像素值之间选取一个像素值作为阈值
算法对应应用场景
简单阈值化算法:适用于没有光线等其他环境因素下的图像。
自适应阈值化算法:适用于有光线等外在因素的图像。
OTSU阈值化算法:适用于OCR、车牌分割。
形态学变化
形态学变化,是基于图像中形状的简单操作,通常处理二值化图像,通常将文本从背景或其他形状中区分处理。
腐蚀
对于二值图像中由白色像素表示的形状,腐蚀操作会通过在内外两侧去掉一个像素来降低形状的厚度
膨胀
与腐蚀相反,对于二值图像中由白色像素表示的形状,膨胀操作会通过在内外两侧增加一个像素来增加形状的厚度
开运算
开运算通常是用来去掉图像中的噪声,操作步骤:
- 先执行腐蚀操作
- 再执行膨胀操作
通俗的理解,图像中存在独立的噪声,先使用腐蚀,这些噪声就会变得更小甚至消失,这个时候再使用膨胀,就可以恢复到原来想要的像素。
闭运算
闭运算通常是用来去掉形状内的孔洞,操作步骤:
- 先执行膨胀操作
- 再执行腐蚀操作
模糊(平滑)
模糊操作使用一个卷积核对图像进行卷积操作,简单来说就是将一个由特定构成的矩阵与图像的每个部分依次相乘,从而到达平滑的目的。模型操作有助于消除噪声和边缘
模糊卷积过程上图所示,这里输入进行模糊处理的图像为6x6,使用卷积核为3x3,进行卷积,从左到右,从上带下。
均值模糊
算法原理:卷积核与图像对应的区域,相同位置的像素值一一相乘求和再除以9,取平均值,将平均值赋给图像的红色区域,依次卷积,其中卷积核中各数值都为1。
高斯模糊
算法原理:与均值模糊相识,不同的是用的不是卷积核而是高斯核,高斯核与卷积核不同的地方在于高斯核的数组是对称数组,并且其中的数值,位置越靠近数组中心值越大。
中值模糊
算法原理:卷积核与图像对应的区域,相同位置的像素值一一相乘取中位数,将中位数值赋给图像的红色区域,依次卷积,其中卷积核中各数值都为1。
计算机视觉图像常用基本算法(阈值化、形态学变化、模糊)相关推荐
- Python计算机视觉:在阈值化图像中使用center_of_mass()函数寻找每个物体的中心坐标
Python计算机视觉:在阈值化图像中使用center_of_mass()函数寻找每个物体的中心坐标 <Python计算机视觉>第一章练习第七题: 使用形态学操作处理阈值化图像.在发现一些 ...
- AI笔记: 计算机视觉之图像分割:局部阈值法分割、分水岭算法、基于边缘轮廓的分割
图像分割方法的分类和发展 1 )分类 2 )发展 图像分割是计算机视觉中非常重要的研究子领域 从计算机视觉和图像处理最开始发展的时候,图像分割方法就一直是探索的方法之一 经过长时间的发展,图像分割已经 ...
- 图像的OTSU阈值化、双阈值化、半阈值化的原理及OpenCV代码实现
本文的基础是OpenCV的函数threshold(),关于函数threshold()的详细介绍,大家可以参考下面这篇博文: https://www.hhai.cc/thread-162-1-1.htm ...
- 全局对比度的图像显著性检测算法
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 显著性检测概念 显著性就是可以快速引起 ...
- matlab 图像显著性检测ft_全局对比度的图像显著性检测算法
点击上方蓝字关注我们 星标或者置顶[OpenCV学堂] 干货与教程第一时间送达! 显著性检测概念 显著性就是可以快速引起你注意的对象或者物体,在图像或者视频中显著性检测的结果往往是图像或者视频中对象, ...
- [Python图像处理] 七.图像阈值化处理及算法对比
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- 滤波、漫水填充、图像金字塔、图像缩放、阈值化
imgpro 组件是 Image 和 Process 这两个单词的缩写组合,即图像处理模块,这个模块包含了如下内容: 文章目录 1.线性滤波:方框滤波.均值滤波.高斯滤波 1.1 平滑处理 1.2 ...
- 【图像处理】——图像的二值化操作及阈值化操作(固定阈值法(全局阈值法——大津法OTSU和三角法TRIANGLE)和自适应阈值法(局部阈值法——均值和高斯法))
目录 一.二值化的概念(实际上就是一个阈值化操作) 1.概念: 2.实现方法 3.常用方法 二.阈值类型 1.常见阈值类型(主要有五种类型) (1)公式描述 (2)图表描述 2.两种特殊的阈值算法(O ...
- OpenCV之imgproc 模块. 图像处理(1)图像平滑处理 腐蚀与膨胀(Eroding and Dilating) 更多形态学变换 图像金字塔 基本的阈值操作
图像平滑处理 目标 本教程教您怎样使用各种线性滤波器对图像进行平滑处理,相关OpenCV函数如下: blur GaussianBlur medianBlur bilateralFilter 原理 No ...
最新文章
- hibernate中criteria的一些用法
- statsmodels 笔记 STL
- 第34讲:更好用的自动化工具 airtest 的使用
- php双引号解析漏洞
- httpClient学习笔记1
- 已经push的如何回退_如何撤回Git push 到远程分支以后的方法
- 使用Ext Designer 设计简单计算器
- 别再用代码开发了!整理了30套精美可视化大屏模板,零套路直接领
- 74hc138译码器实验c语言程序,实验二74HC138译码器实验学生
- 如何使用3DMax球形化命令
- 多多计算机分屏版本怎么使用,电脑双屏幕怎么设置_电脑分屏怎么设置方法
- 【2019年5月6日】指数估值排名
- Excel中文转拼音(完整版)-转
- 自己动手画一个CPU——Logisim,下
- 树莓派3/4 实现天气语音播报与一种新的文本转语音方法 —— 百度云api +python +和风天气api
- matlab中如何画圆锥,使用Matlab画出圆台圆锥圆柱
- idea keymap之前选择成 Eclipse 后,idea默认的快捷键Default找不到了的解决办法
- 七个人生工具 | SWOT、PDCA、6W2H、SMART、WBS、时间管理、二八原则
- 加速人生来帮忙,系统顺畅又洁净!
- ffdshow的编译
热门文章
- 小学生计算机学科竞赛类活动,学科竞赛活动方案.doc
- Dubbo高性能之道
- Validator自定义校验
- makefile编译
- java nextintln_「nextint」next()nextLine()以及nextInt()的区别及用法 - seo实验室
- Binding的原理简单介绍
- 云宕机事件盘点:IBM云服务全球宕机四小时,安全稳定成空话?
- C# wcf动态使调用
- 华三交换机ping大包命令_如何Ping大包命令_Ping大包命令格式详解-win10铺
- 高级智能研究计划(IARPA):大脑皮层建模