一:图像二值化

二值化:二值化是通过遍历灰度图中点,将图像信息二值化处理,处理过后的图片只有二种色值。

二:二值化的作用

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

三:二值化过程

全局阈值

threshold()

参数:

第一个参数,InputArray类型的src,输入数组,填单通道 , 8或32位浮点类型的Mat即可。

第二个参数,OutputArray类型的dst,函数调用后的运算结果存在这里,即这个参数用于存放输出结果,且和第一个参数中的Mat变量有一样的尺寸和类型。

第三个参数,double类型的thresh,阈值的具体值。

第四个参数,double类型的maxval,当第五个参数阈值类型type取 THRESH_BINARY 或THRESH_BINARY_INV阈值类型时的最大值.

第五个参数,int类型的type,取阀值的算法。

0: THRESH_BINARY  当前点值大于阈值时,取Maxval,也就是第四个参数,下面再不说明,否则设置为0

1: THRESH_BINARY_INV 当前点值大于阈值时,设置为0,否则设置为Maxval

2: THRESH_TRUNC 当前点值大于阈值时,设置为阈值,否则不改变

3: THRESH_TOZERO 当前点值大于阈值时,不改变,否则设置为0

4: THRESH_TOZERO_INV  当前点值大于阈值时,设置为0,否则不改变

四:局部阀值

局部阀值/自适应阈值:自适应阈值,是根据像素的邻域块的像素值分布来确定该像素位置上的二值化阈值。

好处:

1. 每个像素位置处的二值化阈值不是固定不变的,而是由其周围邻域像素的分布来决定的。

2. 亮度较高的图像区域的二值化阈值通常会较高,而亮度低的图像区域的二值化阈值则会相适应的变小。

3. 不同亮度、对比度、纹理的局部图像区域将会拥有相对应的局部二值化阈值

adaptiveThreshold()函数

参数1:InputArray类型的src,输入图像,填单通道,单8位浮点类型Mat即可。

参数2:函数运算后的结果存放在这。即为输出图像

参数3:预设满足条件的最大值。

参数4:指定自适应阈值算法。可选择ADAPTIVE_THRESH_MEAN_C 或 ADAPTIVE_THRESH_GAUSSIAN_C两种。(具体见下面的解释)。

参数5:指定阈值类型。可选择THRESH_BINARY或者THRESH_BINARY_INV两种。(即二进制阈值或反二进制阈值)。

参数6:表示邻域块大小,用来计算区域阈值,一般选择为3、5、7......等。

参数7:参数C表示与算法有关的参数,它是一个从均值或加权均值提取的常数,可以是负数。(具体见下面的解释)。

自适应阈值化计算大概过程是为每一个象素点单独计算的阈值,即每个像素点的阈值都是不同的,就是将该像素点周围B*B区域内的像素加权平均,然后减去一个常数C,从而得到该点的阈值。B由参数6指定,常数C由参数7指定。

ADAPTIVE_THRESH_MEAN_C,为局部邻域块的平均值,该算法是先求出块中的均值,再减去常数C。

ADAPTIVE_THRESH_GAUSSIAN_C,为局部邻域块的高斯加权和。该算法是在区域中(x, y)周围的像素根据高斯函数按照他们离中心点的距离进行加权计算,再减去常数C。

五:膨胀,腐蚀

腐蚀和膨胀是针对图片的二值化数据进行操作的主要是针对高亮部分。

膨胀就是使用算法,将图像的边缘扩大些。作用就是将目标的边缘或者是内部的坑填掉。

腐蚀就是使用算法,将图像的边缘腐蚀掉。作用就是将目标的边缘的“毛刺”踢除掉。

六:膨胀过程

膨胀是求局部最大值的操作,核B与图形卷积,即计算核B覆盖的区域的像素点的最大值,并把这个最大值赋值给参考点指定的像素。这样就会使图像中的高亮区域逐渐增长。

七:腐蚀过程

腐蚀可以理解为B的中心(锚点)沿着A的内边界走了一圈。腐蚀也是对高亮部分而言,A区域之外的部分 < A的高亮像素,所里里面被外面取代

八:开运算

开运算:先腐蚀再膨胀,用来消除小物体

九:闭运算

先膨胀再腐蚀,用于排除小型黑洞

十:滤波器

滤波处理分为两大类:线性滤波和非线性滤波。

线性滤波:方框滤波、均值滤波、高斯滤波

非线性滤波:中值滤波、双边滤波

十一:高斯滤波

高斯滤波用于平滑图像,或者说是图像模糊处理,因此高斯滤波是低通的。其广泛的应用在图像处理的减噪过程中,尤其是被高斯噪声所污染的图像上。

低通滤波是指仅允许低频率信号通过。一张图像上的大部分能量聚集在低频和中频上,而高频大多是图像中物体的边缘部分,也有可能是高频噪声点。在单通道中,各像素点的取值都在(0~255)中,因此,低通滤波通过一定的阙值设置,有去除高频信号和平缓边缘的效果。

opencv中GaussianBlur函数实现了高斯滤波效果

函数原型:

void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT);

参数介绍:

src,输入图像

dst,即目标图像

ksize,高斯内核的大小,必须为正数和奇数

sigmaX,表示高斯核函数在X方向的的标准偏差。

sigmaY,表示高斯核函数在Y方向的的标准偏差。若sigmaY为零,就将它设为sigmaX,如果sigmaX和sigmaY都是0,那么就由ksize.width和ksize.height计算出来。

十二:双边滤波

双边滤波(Bilateral Filter)是非线性滤波中的一种。这是一种结合图像的空间邻近度与像素值相似度的处理办法。在滤波时,该滤波方法同时考虑空间临近信息与颜色相似信息,在滤除噪声、平滑图像的同时,又做到边缘保存。

双边滤波采用了两个高斯滤波的结合。一个负责计算空间邻近度的权值,也就是常用的高斯滤波器原理。而另一个负责计算像素值相似度的权值。在两个高斯滤波的同时作用下,就是双边滤波。

opencv中bilateralFilter函数实现了高斯滤波效果

函数原型

bilateralFilter( InputArray src, OutputArray dst, int d,double sigmaColor, double sigmaSpace,int borderType = BORDER_DEFAULT );

参数:

src,输入图像

dst,输出图像

d:滤波邻域直径。如果这个值设为负数,那么这个值由参数sigmaColor计算出。

sigmaColor:滤波的色彩空间参数。这个值越大,代表滤波计算邻域内有更多的色彩权重。

sigmaSpace :滤波的距离空间参数。这个值越大,代表当颜色距离相同时,会有更多的点被影响到。如果参数d>0,则邻域大小由d指定,否则,d是sigmaSpace的一个比例结果。

十三:边缘检测

边缘检测的一般步骤

滤波:边缘检测算法主要是基于图像强度的一阶和二阶导数,但是导数对于噪声很敏感,因此需要采用滤波器来改善与噪声有关的边缘检测器的性能

增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将灰度点邻域强度值有显著变化的点凸显出来

检测:邻域中有很多的点的梯度值较大,但是在特定的应用中,这些点并不是要找的边缘点,需要取舍

十四:canny边缘检测

canny边缘检测的步骤

1 噪声去除

  由于边缘检测很容易受到噪声影响,所以第一步是使用 5x5 的高斯滤波器去除噪声。

2 计算图像梯度

  对平滑后的图像使用 Sobel 算子计算水平方向和竖直方向的一阶导数(图像梯度)(Gx 和 Gy)

3、非极大值抑制

  在获得梯度的方向和大小之后,应该对整幅图像做一个扫描,去除那些非边界上的点。对每一个像素进行检查,看这个点的梯度是不是周围具有相同梯度方向的点中最大的。

4 滞后阈值

  现在要确定那些边界才是真正的边界。这时我们需要设置两个阈值:minVal 和 maxVal。当图像的灰度梯度高于 maxVal 时被认为是真的边界,那些低于 minVal 的边界会被抛弃。如果介于两者之间的话,就要看这个点是否与某个被确定为真正的边界点相连,如果是就认为它也是边界点,如果不是就抛弃。

十五:滞后阈值

A 高于阈值 maxVal 所以是真正的边界点,C 虽然低于 maxVal 但高于minVal 并且与 A 相连,所以也被认为是真正的边界点。而 B 就会被抛弃,因为他不仅低于 maxVal 而且不与真正的边界点相连。所以选择合适的 maxVal和 minVal 对于能否得到好的结果非常重要。

十六:CANNY实现

Opencv中使用Canny函数实现canny边缘检测

函数原型

void Canny(InputArray image, OutputArray edges, double threshold,double threshold2,int apertureSize = 3,bool L2gradient = false)

参数:

image:输入图片

edges:输出图片

threshold1:第一个滞后性阈值

threshold2:第二个滞后性阈值

apertureSize:表示应用Sobel算子的孔径大小,默认值为3

L2gradient:一个计算图像梯度幅值的标识,默认值false

十七:轮廓线提取

轮廓线提取:感兴趣的目标从图像中提取出来,通过颜色或纹理提取出目标的前景图。

轮廓线提取步骤:

1、获取灰度图

2、得到二值数据

3、降噪

4、提取轮廓线

十八:轮廓线提取方法

OpenCV使用findContours函数来提取图像中的轮廓。

函数原型

def findContours( InputArray image, OutputArrayOfArrays contours,int mode, int method, Point offset = Point())

参数:

image:8比特单通道的源二值图像

contours:查找到的轮廓

mode:检索模式

method:边缘近视算法

OpenCV图像处理基本操作相关推荐

  1. matlab实现一个图像分成两半,1.2 opencv图像处理基本操作

    在图像处理过程中.读取图像.显示图像.保存图像足最葙木的操作.本节将简单介绍这 几项基本操作. 1.2.1读取图像 OpenCV提供了函数CV2.imread()来读取图像,该函数支持各种静态阁像格式 ...

  2. OpenCV图像处理基本操作 Open_CV系列(一)

    文章目录 1.安装OpenCV-Contrib-Python库 2.读取图片文件像素值数组 3.显示图像 ①cv2.imshow() ②cv2.waitKey() ③cv.destoryAllWind ...

  3. opencv图像处理总结

    opencv图像处理基本操作 1. 矩阵数据类型 通用矩阵数据类型: CV_<bit_depth>(S|U|F)C<number_of_channels> 其中,S表示带符号整 ...

  4. 免费送书啦!《 OpenCV图像处理入门与实践》一本全搞定

    OpenCV 的基础图像操作都只是针对图像中的像素点,并不是直接对图像整体进行的操作.而很多时候并不能仅通过改变像素点来进行图像的操作,为此我们需要学习关于图像的算术操作. 1.图像加法 对于两张相同 ...

  5. 图像处理基本操作实现工业产品缺陷检测

    随着机器学习的发展,对于工业产品的缺陷检测,深度网络模型检测缺陷的准确率远远高于传统图像处理算法.现在一般的做法是将传统图像技术作为预处理,或者将传统提取特征与网络深度特征相结合进一步提高准确率. 今 ...

  6. Python OpenCV图像处理 理论 代码

    python opencv图像处理 GitHub - LeBron-Jian/ComputerVisionPractice OpenCV计算机视觉学习 & 代码 OpenCV计算机视觉学习(1 ...

  7. OPENCV图像处理基础

    OPENCV图像处理基础 1.图像处理基础 1.1 数字图像 1.1.1 数字图像概念: 1.1.2 数字图像起源: 1.1.3 常见成像方式: 1.1.4 数字图像的应用: 1.1.5 Opencv ...

  8. 《OpenCv视觉之眼》Python图像处理二十三:OpenCV图像处理最终章之基于PyQt5的图像处理界面设计及功能实现

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  9. 《OpenCV图像处理》——1.7 用户交互工具

    本节书摘来自华章计算机<OpenCV图像处理>一书中的第1章,第1.7节,作者:[西]葛罗瑞亚·布埃诺·加西亚(Gloria Bueno García)著,更多章节内容可以访问云栖社区&q ...

最新文章

  1. MP4移动商学院―――管理者贴身教练!
  2. 统计学习:线性回归分析(1)
  3. linux算术表达式求值数据结构,数据结构:算数表达式求值演示
  4. android: 静态XML和动态加载XML混合使用,以及重写Layout控件
  5. operator* operator- 操作符的使用
  6. UVA10168 Summation of Four Primes【筛选法】
  7. python就业方向-连小学生都在学的Python,究竟就业方向有哪些?
  8. StringUtils工具类常用方法
  9. C# OpenFileDialog 打开文件对话框 打开多文件对话框; 并获取其路径,文件名,扩展名/后缀名
  10. python3基础教程[第一版] 中
  11. 开源项目halo个人博客源码学习初篇(一)
  12. SPSS篇—卡方检验
  13. URL是什么意思?基础知识普及
  14. 中文语音软件再次升级,即将发布百度语音助手
  15. 琴岛学院java书_​师生共品书 传承优秀传统文化 琴岛学院第十三届金秋读书节开幕...
  16. 01-【介绍说明篇】Hello,ArcGIS网络分析
  17. 常见的百度蜘蛛IP 日志分析
  18. 爬取偶像/私房小姐姐图片--爬虫基础篇
  19. 2014 年终总结:即使艰难,也要始终怀揣梦想
  20. 中国基于国产龙芯处理器的大数据一体机

热门文章

  1. ccf csp认证考试的历年题集汇总
  2. ModelingData -2造型数据
  3. 苹果x屏幕多少钱_iphone7plus屏幕失灵,7p换屏幕多少钱
  4. 一个rust程序(猜数字)
  5. CV环境很重要!!各种环境搭建大全
  6. 梅西加冕!海信电视为潘帕斯雄鹰喝彩
  7. PTA L1题目合集(更新至2019.3)
  8. MySQL时间比较大小
  9. 2008server的一些使用经验
  10. js控制全屏显示/退出全屏的方法 1