OpenCV3编程入门.知识点
1、
第三部分 掌握 imgproc 组件
第六章 图像处理
6.1、线性滤波: Pdf.P170
Pdf.P171
平滑处理(smoothing)(模糊处理(bluring))-- 使用频率很高 -- 用途:较少图像上的 噪点 / 失真。降低分辨率时,平滑处理是非常好用的方法。
图像滤波,指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制。
消除图像中的噪声成分 叫做 图像的 平滑化 / 滤波操作。... 因此 一个能降低高频成分的滤波器就能够减弱噪声的影响。
图像滤波 目的两个:(1)抽出对象的特征作为图像识别的特征模式;(2)为适应图像处理的要求,消除图像数字化时所混入的噪声。
对 滤波处理 的要求 两个:(1)不能损坏图像的轮廓及边缘等重要信息;(2)是图像清晰视觉效果好。
平滑滤波 -- 低频增强的空间域滤波技术 -- 目的两类:(1)模糊;(2)消除噪音。
空间域的 平滑滤波 一般采用简单平均法进行,就是求 邻近像元点 的 平均亮度值。邻域的大小 与 平滑的效果 直接相关,邻域越大 平滑的效果越好,但邻域过大,平滑也会使边缘信息损失的越大,从而使输出的图像变得模糊,因此 需合理选择 邻域的大小。
滤波器 形象的比喻:把滤波器想象成 一个包含 加权系数 的窗口,当使用这个滤波器 平滑处理图像时,就把这个窗口放到图像之上,透过这个窗口来看我们的图像。
Pdf.P172
线性滤波器:经常用于 剔除输入信号中不想要的频率 或者 从许多频率中选择一个想要的频率。
几种常见的线性滤波器:
低通滤波器:允许低频率通过;
高通滤波器:允许高频率通过;
带通滤波器:允许一定范围频率通过;
带阻滤波器:阻止一定范围频率通过 并且 允许其他频率通过;
全通滤波器:允许所有频率通过,仅仅改变相位关系;
陷波滤波器(Band-Stop Filter):阻止一个狭窄频率范围通过,是一种特殊带阻滤波器。
6.1.4、滤波和模糊
滤波 试将信号中 特定波段频率 滤除的操作,是抑制和放置干扰的一项重要措施。
滤波 分 低通滤波 和 高通滤波 两种:高斯滤波是指用高斯函数作为滤波函数的滤波操作,高斯低通滤波 就是 模糊,高斯高通滤波 就是 锐化。
6.1.5、邻域算子与线性邻域滤波 Pdf.P172
方框滤波(box Filter) -- BoxBlur函数 作用 使用方框滤波器(box Filter)来模糊一张图片,从src输入,送dst输出。
如果我们要在可变的窗口中计算像素从何,可以使用 integral()函数。
Pdf.P174 归一化就是 把要处理的量都缩放到一个范围内,比如(0, 1),以便统一处理和直观量化。而非归一化(Unnormalized)的方框滤波用于......。
均值滤波(邻域平均滤波) -- Blur函数 最简单的一种滤波操作,输出图像的每一个像素是核窗口内输入图像对应像素的平均值(所有像素加权系数相等),其实说白了它就是归一化后的方框滤波。blur 函数内部其实就是调用了一下 boxFilter 。
高斯滤波 -- GaussianBlur函数 线性平滑滤波,可以消除高斯噪声,广泛用于图像处理的减噪过程。通俗的讲,高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。具体操作:......。Pdf.P176
6.2、非线性滤波:
Pdf.P192 很多情况下,使用邻域像素的非线性滤波会得到更好的效果。比如 噪声是散粒噪声而非高斯噪声,即 图像偶尔会出现很大的值的会后,用高斯滤波器对图像进行模糊的话,噪声像素是不会被去除的,它们只是转换为更为柔和 但仍然可见的散粒
中值滤波 -- medianBlur函数 基本思想 ... ... ,该放大在去除 脉冲噪声。椒盐噪声 的同事又能保留图像的边缘细节。
中值滤波 只在一定的条件下可以克服常见线性滤波器(如 最小均方滤波、方框滤波器、均值滤波 等)带来的图像细节模糊,而且对滤除脉冲干扰及图像扫描噪声非常有效,也常用于保护边缘信息。 ... ... ,是非常经典的平滑噪声处理方法。
Pdf.P194 ... ... 但是对一些细节(特别是细、尖顶等)多的图像不太适合。
双边滤波 -- bilateralFilter函数 Pdf.P194 结合图像的空间邻近度和像素值相似度 的一种折中处理,同事考虑空域信息和灰度相似性,达到保边去噪的目的,具有 简单、非迭代、局部的特点。
好处 可以做边缘保护(edge preserving)。... ...
6.3、形态学滤波(1):
Pdf.P204 膨胀和腐蚀 主要功能:(1)消除噪声;(2)分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素;(3)寻找图像中的明显的极大值区域或极小值区域;(4)求出图像的梯度。
膨胀和腐蚀 是对图像中 白色部分(高亮部分)而言的,不是黑色部分。膨胀 是图像中高亮部分进行膨胀,类似于“领域扩张”,效果图拥有比原图更大的高亮区域;腐蚀 是原图中的高亮部分被腐蚀,类似于“领域被蚕食”,效果图拥有比原图更小的高亮区域。
膨胀(dilate) Pdf.P205 就是 就局部最大值的操作。数学角度,膨胀/腐蚀操作 就是讲图像(或图像的一部分区域,称之为A)与 核(称之为B)进行卷积。
核 可以是任何形状和大小,... ...
腐蚀 Pdf.P206 膨胀和腐蚀(erode) 是相反的一对操作,∴ 腐蚀就是求局部最小值的操作。
6.4、形态学滤波(2):
Pdf.P216 形态学的高级形态,往往都是建立在腐蚀和膨胀这两个基本操作基础上的。
开运算 就是 先腐蚀 后膨胀的过程。 可以用来消除小物体,在纤细点处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积。
闭运算 先膨胀 后腐蚀。 能够排除小型黑洞(黑色区域)。
形态学梯度(Morphological Gradient) 膨胀图与腐蚀图 之差。 对二值图形(?)进行这一操作可以将团块(blob)的边缘突出出来。可以用形态学梯度来保留物体的边缘轮廓。
顶帽(Top Hat) 又常被译为“礼帽”运算,是 原图像 与 “开运算”的结果图 之差。Pdf.P218
开运算 带来的结果是 放大了裂缝/局部低亮度的区域。因此 原图减去开运算后的图,得到的效果图 突出了比原图轮廓周围的区域更明亮的区域,且这一操作 与选择的核(?)的大小相关。
顶帽运算常常用来分离比邻近点亮一些的斑块。在一幅图像具有大幅的背景,而微小的物品比较有规律的情况下,可以使用顶帽运算进行背景提取。
黑帽(Black Hat) 闭运算的结果图 与 原图 之差。Pdf.P219
黑帽运算后的效果图 突出了比原图轮廓周围的区域更暗的区域,且这一操作和选择的核大小相关。
6.4.7 核心API函数:morphologyEx(),利用基本的膨胀管和腐蚀技术,来执行更加高级形态学变换,如 开闭运算、形态学梯度、“顶帽”、“黑帽”等。
6.4.9 综合实例:形态学滤波
6.5、漫水填充 Pdf.P231
两个版本的 floodFill()函数
漫水填充法 用特定的颜色色填充连通区域,通过设置可连通像素的上下限以及联通方式来达到不同条虫效果的方法。
漫水填充 常被用来 标记 / 分离 图像的一部分,以便对其进行进一步处理/分析,也可以用来从输入图像获取掩码区域,掩码会加速处理过程,或只处理掩码指定的像素点,操作的结果总是某个连续的区域。
以此填充算法为基础,类似PhotoShop的魔术棒选择工具就很容易实现了。... ...
6.6、图像金字塔与图片尺寸缩放 Pdf.P240
pyrUp():向上采样;pyrDown():向下采样;resize():缩放图像尺寸
图像金字塔,图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。
图像金字塔,最初用于机器视觉和图像压缩,... ... 。
我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨越低。如 图6.55 6.56 所示。
常见的两种类型图像金字塔:
高斯金字塔(Gaussianpyramid) Pdf.P242
拉普拉斯金字塔(Laplacianpyramid) ZC:主要用于重建图像?还原图像?
Pdf.P244 图像金字塔 非常重要的一个应用就是 图像分割。
6.7、阈值化 Pdf.P254 对图像中的像素做出取舍与决策,直接剔除一些低于/高于一定值的像素。
阈值 可被视为最简单的图像分割方法。
第七章 图像变换
7.1、基于OpenCV的边缘检测 Pdf.P265
边缘检测的一般步骤:(1)滤波;(2)增强;(3)检测。
Canny()算子
Sobel()算子 Pdf.P270
Laplacian()算子 Pdf.P273
charr()滤波器 Pdf.P276
7.2、霍夫变换 Pdf.P284
霍夫线变换 HoughLines()、HoughLinesP()
霍夫园变换 HoughCircles()
在许多应用场景中需要快速准确地检测出直线/圆。其中一种非常有效的解决问题的方法是霍夫(Hough)变换,其为图像处理中 从图像中识别几何形状的基本方法之一,应用很广泛,也有许多改进算法。最基本的霍夫变换是从黑白图像中检测直线(线段)。
Pdf.P285 经典霍夫变换用来检测图像中的直线,后来霍夫变换扩展到任意形状物体的识别,多为圆和椭圆。
霍夫线变换 是一种用来寻找直线的方法。
OpenCV支持三种不同的霍夫线变换:标准霍夫变换(Standard Hough Transform, SHT)[ HoughLines() ]、多尺度霍夫变换(Multi-Scale Hough Transform, MSHT)、累计概率霍夫变换(Progressive Probabilistic Hough Transform, PPHT)[ HoughLinesP() ]。
霍夫圆变换
7.3、重映射 Pdf.P298 remap() 就是把衣服图像中某位置的像素放置到另一个图片指定位置的过程。
7.4、仿射变换(Affine Transformation 或 Affine Map) Pdf.P306 warpAffine()、getRotationMatrix2D()
又称 仿射映射,是指 在几何中,一个向量空间进行一次线性变换并街上一个平移,变换为另一个向量空间的过程。他保持了二维图形的“平直性”和“平行性”。
“平直性”:直线经过变换之后依然是直线。
“平行性”:二维图形之间的相对位置关系保持不变。
一个任意的仿射变换都能表示为 乘以一个矩阵(线性变换)接着加上一个向量(平移)的形式。
用仿射变换来表示如下3种常见变换形式:
旋转 rotation(线性变换)
平移 translation(向量加)
缩放 scale(线性变换)
7.5、直方图均衡化 Pdf.P312 扩大图像的
第八章 图像轮廓与图像分割修复 Pdf.P320
8.1、查找并绘制轮廓
8.2、寻找物品的凸包
8.3、使用多边形将轮廓包围
8.4、图像的矩(ZC:这是什么?矩形?)
8.5、分水岭算法
8.6、图像修补
第九章 直方图与匹配 Pdf.P362
9.1、图像直方图概述
9.2、直方图的计算与绘制
9.3、直方图对比
9.4、反向投影
9.5、模板匹配
第四部分 深入 feature2d 组件
第十章 角点检测 Pdf.P394
10.1、Harris 角点检测
10.2、Shi-Tomasi 角点检测
10.3、亚像素级 角点检测
第十一章 特征检测与匹配 Pdf.P412
11.1、SURF特征点检测
11.2、SURF特征提取
11.3、使用FLANN进行特征点匹配
11.4、寻找已知物体
11.5、ORB特征提取
11.6、本章小结 Pdf.P447
2、
3、
4、
5、
6、
7、
8、
OpenCV3编程入门.知识点的更多相关文章
- 【浅墨著作】《OpenCV3编程入门》内容简单介绍&勘误&配套源码下载
经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近 ...
- OpenCV3编程入门.记录
ZC:OpenCV3编程入门_毛星云编著_电子工业出版.pdf 1.在看到 PDF.P134(计算数组加权和:addWeighted()函数)的时候,其中讲到“当输出数组的深度为CV_32S时,这个函 ...
- OpenCV3编程入门笔记(1)图像载入、显示、保存、变换灰度图
图像载入.显示.保存函数: 1 图像载入函数:imread() Mat imread(const string& filename, int flags=1); const ...
- OpenCV3编程入门读书笔记5-边缘检测
一.边缘检测的一般步骤 1.滤波 边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能. 2.增强 增强边缘的基础是确定图像各 ...
- 颜色缩减(带Trackbar)【从毛星云Opencv3编程入门P75 P111例程改编】
最近学了点opencv,买了毛星云的书,大力推荐哦. 颜色缩减,自己加了个Trackbar看起来更直观一些. 我一般自己先看一遍程序,脑子里有个大概印象了,再自己写一遍,这样出了错误会印象更深刻. 1 ...
- OpenCV3编程入门笔记(6)自我验证各函数程序代码
// asw.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <opencv2/opencv.hpp> usi ...
- OpenCV3编程入门笔记(5)重要章节小节及核心函数
- OpenCV3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换
腐蚀erode.膨胀dilate 腐蚀和膨胀是针对图像中的白色部分(高亮部分)而言的,不是黑色的.除了输入输出图像外,还需传入模板算子element,opencv中有三种可以选择:矩形MORPH_RE ...
- OpenCV3编程入门笔记(3)线性滤波、非线性滤波、图像深度、通道
15 遍历图像中的像素,是先for行数后for列数的,也就是一列一列的遍历,matlab中是从1开始计数,opnecv中采用c语言的从0开始计数. 矩阵归一化:normalize()函数,参数 ...
随机推荐
- 程序装载:“640K内存”真的不够用么?
本文源于size_t的说明,看到比尔盖茨说过:640K内存对于任何人来说都足够了,所以找了一篇文章,学习一下~~ 一直以来都知道自己有关计算机底层的知识不是不扎实,前段时间跟着大佬们推荐在[极客时间] ...
- 慕课网SSMOA办公系统
目录 需求分析 1 用例图 系统设计 包及全局配置 数据库设计 工具类 具体功能实现 1 dao层功能实现 2 编码过滤器及登陆拦截器 3 单元测试 遇到的问题总结 1 新建一个Modul不会打开新页 ...
- CF70E Information Reform
题意:给你一棵树,要选择若干节点,若一个点i没有选择,则有\(d(dis(i,j))\)的代价,其中j被选择.选择一个点代价为k,求最小代价. 首先,考虑这样一个问题: 如果距离a的最近被选点为i,距 ...
- 009_Linux驱动之_request_irq()函数
1. request_irq()函数原型 int request_irq(unsigned int irq, irq_handler_t handler, unsigned long irqflags ...
- D. AB-string ( 思维 )
传送门 题意: 给你一个长度为n的字符串, 字符串只由 A B 组成. 问你这个字符串存在多少个 good string: ( 连续的一段子串 ) good string 的定义就是: 字符串中所有的 ...
- 薛的lca讲课配到题解
2.15 LCA Nearest Common Ancestors POJ 1330 题意:给出一棵树, 询问两个点的最近公共祖先. 思路: $LCA$模板题,请各位掏出各式各样的模板A穿它. #in ...
- 更改用户id 和组id
转自 http://blog.csdn.net/todd911/article/details/16370577 在unix系统中,特权是基于用户和组ID的,当程序需要增加特权,或需要访问当前并不允许 ...
- linux安装过程中遇到的一些问题总结
后面持续更新 1.安装之后查看显示一直连不上网 vim /etc/sysconfig/network-scripts/ifcfg-eth0 然后应该就可以上网了 2.linux窗口无法适应虚拟机窗口 ...
- Linux下 Java 读取文件路径
一般文件路径在windows中用 \ 表示,但是在其他系统平台下比如linux中就不是 \ 所以java给我们提供了一个与平台无关的表示路径的常量 File.separator在windows中则表示 ...
- JS的十大排序算法
名词解释: n: 数据规模k:“桶”的个数In-place: 占用常数内存,不占用额外内存Out-place: 占用额外内存稳定性:排序后2个相等键值的顺序和排序之前它们的顺序相同 冒泡排序(Bub ...