15     遍历图像中的像素,是先for行数后for列数的,也就是一列一列的遍历,matlab中是从1开始计数,opnecv中采用c语言的从0开始计数。

矩阵归一化:normalize()函数,参数挺多,不过大多都有默认值,不用都写出来,一般要求的图像归一化精简写法为 normalize(InputArray secImage , outputArray dstImage);一个输入,一个输出即可。

16     消除图像中的噪声成分叫做图像的平滑化或滤波操作,信号或图像的能量大部分集中在幅度谱的低频和中频段,而在较高频段,有用的信息经常被噪声淹没,因此一个能降低高频成分幅度的滤波器就能够减弱噪声的影响。Ps:滤波其实就是一个卷积的操作。

三种线性滤波:方框滤波 boxblur函数 boxFilter(src,dst,-1,Size(3,3)); 其中-1表示输出图形采用原图像深度,即src.depth,图像深度表示存储每个像素所用的位数,也用于量度图像的色彩分辨率。Size(3,3)表示3*3的内核大小。boxFilter最少需要这四个参数,少其一都不行。其余参数有默认值一般不与考虑。

均值滤波 blur函数,输出图像的每一个像素是核窗口内输入图像对应像素的平均值,其实就是归一化的方框滤波。 blur(src,dst,Size(3,3)); 主要是领域平均法,即某一点的像素是由除去该点的模板的其他点的平均值代替,故不能很好的保护图像细节,会造成图像变得模糊,不能很好的去除噪声点。

和均值滤波相似的是高斯滤波,只不过高斯滤波不是简单的求其平均值,二是加权平均值。高斯滤波 是用一个模板扫描图像中的每一个像素,用模板确定的领域内的像素的加权平均灰度值去替代模板中心像素点的值,效果明显比均值滤波好了很多。Ps:理解高斯滤波概念,从数学的角度来看,图像的高斯滤波过程就是图像与正态分布做卷积,由于正态分布又叫做高斯分布,所以这项操作才叫做高斯滤波。

GussianBlur(src,dst,Size(5,7),sigmaX,sigmaY); 和前两种滤波不同的是,第三个表示内核大小的参数必须是正数和奇数,或者为0,还需设定高斯核函数在X和Y方向的标准偏差sigmaX、sigmaY。

17     两种非线性滤波器:中值滤波median filter 双边滤波 bilateral filter

图像处理的很多情况下,使用线性滤波更不到更好的效果,例如:噪声是散粒噪声而不是高斯噪声,即图像偶尔会出现很大的值的时候,用高斯滤波器进行模糊的话,噪声像素是不会被去除的,只是转换为更为柔和但仍然可见的颗粒。

中值滤波:基本思想是用像素点邻域灰度值的中值(中位数)来代替该像素点的灰度值,在去除脉冲噪声、椒盐噪声的同时能保留图像的边缘细节。中值滤波在一定条件下,能克服线性滤波器所带来的图像细节模糊。medianBlur(src,dst,ksize);其中ksize是孔径的线性尺寸,必须是大于1的奇数。

例如:medianBlur(image,out,7);

双边滤波是结合图像的空间邻近度和像素值相似度的一种折中处理,好处是可以做边缘保存。

bilateralFilter(src,dst,d,sigmaColor,sigmaSpace);d表示过滤过程中每个像素邻域的直径,sigmaColor颜色空间滤波器的sigma值,参数值越大,就表明该像素邻域内有越宽广的颜色会被混合在一起,产生较大的半相等颜色区域,sigmaSpace表示坐标空间中滤波器的sigma值,坐标空间的标注方差,数值越大,意味着越远的像素会相互影响,从而使更大的区域中足够相似的颜色获取相同的颜色。

例如:bilateralFilter(image,out,25,25*2,25/2);

18     图像的深度:

图片是由一个个像素点构成的,所有不同颜色的像素点构成了一副完整的图像,计算机存储图片是以二进制来进行的。1bit:用一位来存储,那么这个像素点的取值范围就是0或者1,那么我们看来这幅图片要么是黑色要么是白色。4 bit : 取值范围为 0 到 2 的4次方8 bit : 来存储像素点的取值范围为 0 到 2 的8次方,以此类推,我们把计算机存储单个像素点所用到的bit为称之为图像的深度。bit表示位。

图像的通道:

我们都知道颜色的三元素 Red, Green, Blue. 如果是深度为24=3*8,我们刚好就可以用第一个8位存储Red值,第二个存储Green值,第三个存储Blue值, 2的8次方刚好是255,所以我们一般看到的RGB值都是(0-255,0-255,0-255)这样的值。如果用rgb来表示图片的颜色值,我们称这样的图片通道为三。

OpenCV3编程入门笔记(3)线性滤波、非线性滤波、图像深度、通道的更多相关文章

  1. OpenCV3编程入门笔记(1)图像载入、显示、保存、变换灰度图

    图像载入.显示.保存函数: 1         图像载入函数:imread()   Mat imread(const string& filename, int flags=1); const ...

  2. OpenCV3编程入门笔记(6)自我验证各函数程序代码

    // asw.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <opencv2/opencv.hpp> usi ...

  3. OpenCV3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换

    腐蚀erode.膨胀dilate 腐蚀和膨胀是针对图像中的白色部分(高亮部分)而言的,不是黑色的.除了输入输出图像外,还需传入模板算子element,opencv中有三种可以选择:矩形MORPH_RE ...

  4. OpenCV3编程入门笔记(2)计时函数、感兴趣区域RIO、分离/混合通道

    11     绘制直线的line函数 DrawLine(Mat img, Pont start, Point end); 绘制椭圆的ellipse函数 DrawEllipse(Mat img, dou ...

  5. OpenCV3编程入门笔记(一)

    ---恢复内容开始--- 图像处理技术一般包括图像压缩,增强和复原,匹配.描述和识别3个部分.图像处理和计算机视觉的区别在于:图像处理侧重于“处理”图像——如增强.还原.去噪.分割等:而计算机视觉重点 ...

  6. OpenCV3编程入门笔记(5)重要章节小节及核心函数

  7. 【浅墨著作】《OpenCV3编程入门》内容简单介绍&amp;勘误&amp;配套源码下载

    经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近 ...

  8. OpenCV3编程入门.记录

    ZC:OpenCV3编程入门_毛星云编著_电子工业出版.pdf 1.在看到 PDF.P134(计算数组加权和:addWeighted()函数)的时候,其中讲到“当输出数组的深度为CV_32S时,这个函 ...

  9. OpenCV3编程入门-读书笔记2-core组件

    一.颜色空间缩减 1.概念 如果图像是3通道,深度为1个字节,则每个像素有256*256*256种可能值,这么多的可能值会对算法性能造成严重影响.利用颜色空间缩减就能解决这个问题,例如将颜色值0~9取 ...

随机推荐

  1. hdu 3398

    String Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  2. 几篇不错的基础css博客转载

    CSS 巧用 :before和:after:http://web.jobbole.com/85083/ css清除元素间距:http://ouvens.github.io/frontend-css/2 ...

  3. react学习

    http://www.cnblogs.com/yunfeifei/ http://wiki.jikexueyuan.com/project/react-native/native-ui-compone ...

  4. Swift 动画学习笔记

    视频地址: http://www.swiftv.cn/course/i275v5lz 1,动画属性 position(位置),opacity(透明度,0 全透明,1 不透明),Scale(尺寸),Co ...

  5. SqlSever基础 union 与 union all的区别,即 重复项是否全部显示

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  6. iOS深入学习(UITableView系列4:使用xib自定义cell)

    可以通过继承UITableViewCell重新自定义cell,可以像下面一样通过代码来自定义cell,但是手写代码总是很浪费时间, ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  7. socket 异步选择 WSAAsyncSelect 用法

    WSAAsyncSelect 实现给异步socket给了另一种实现方式,就是通过窗口消息的方式来提醒对socket接收还是发送 msdn有非常全面的解释:https://msdn.microsoft. ...

  8. tophat cufflinks cuffcompare cuffmerge 的使用

    Cole Trapnell said: there are three strategies: 1) merge bams and assemble in a single run of Cuffli ...

  9. NSKeyedArchive(存储自定义对象)

    在viewController.m中: - (void)viewDidLoad { [super viewDidLoad]; ZWPerson *p = [[ZWPerson alloc] init] ...

  10. HUD 2203 亲和串

    HUD 2203 亲和串 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768K (Java/Others) [题目描述 - ...