一.颜色空间缩减 1.概念 如果图像是3通道,深度为1个字节,则每个像素有256*256*256种可能值,这么多的可能值会对算法性能造成严重影响.利用颜色空间缩减就能解决这个问题,例如将颜色值0~9取为新值0,10~19取为10,以此类推,这样每个像素有26*26*26种可能值,比上面的可能值要小很多. 2.公式 P_New = ( P_Old / divide ) * divide   (P表示像素值) 3.处理 如果对原图像每个像素都进行上面的公式运算,运算量将非常大.可以将0~255这25…
一.边缘检测的一般步骤 1.滤波 边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能. 2.增强 增强边缘的基础是确定图像各点领域强度的变化值.增强算法可以将图像灰度点领域强度值有显著变化的点凸显出来.在具体编程实现时,可通过计算梯度幅值来确定. 3.检测 经过增强的图像,往往领域中有很多点的梯度值比较大,而在特定的应用中,这些点并不是要找的边缘点,所以应该采用某种方法来对这些点进行取舍.实际工程中,常用的方法是通过阈值…
一.OpenCV概述 1.OpenCV全程Open Source Computer Vision Library,即开源计算机视觉库.它是一个跨平台的开源计算机视觉库,可以运行在windows.linux.Mac OS.Android.iOS等操作系统上.OpenCV用C/C++编写,轻量且高效,还支持使用C#.Ch.Ruby等编程语言,同时提供对Python.Ruby.MATLAB等语言的接口. OpenCV官方主页:http://opencv.org OpenCV Github主页:http…
一.腐蚀和膨胀 1.腐蚀和膨胀的主要功能 (1)消除噪声 (2)分割出独立的图像元素,在图像中连接相邻的元素 (3)寻找图像中的极大值或者极小值区域 (4)求出图像的梯度 2.膨胀(dilate) 膨胀就是求局部最大值的操作.从数学角度来说,就是将图像与核进行卷积,计算核B覆盖区域的像素点的最大值,并把这个最大值赋值给参考点指定的元素.这样就会使图像中的高亮区域逐渐增长. 3.腐蚀(erode) 腐蚀和膨胀是相反的操作,腐蚀是求局部最小值的操作.腐蚀操作会使图像中的高亮区逐渐减小. 4.膨胀和腐…
一.领域滤波(卷积) 邻域算子值利用给定像素周围像素的值决定此像素的最终输出.如图左边图像与中间图像卷积得到右边图像.目标图像中绿色的像素由原图像中蓝色标记的像素计算得到. 通用线性邻域滤波是一种常用的邻域算子,输入像素加权得到输出像素: 其中权重核   为“滤波系数”.上面的式子可以简记为: 二.线性滤波 1.方框滤波(box Filter) 最简单的线性滤波是移动平均或方框滤波,用 K*K窗口中的像素值平均后输出,核函数为: 其实等价于图像与全部元素值为1的核函数进行卷积再进行尺度缩放. 下…
滤波 blur (均值滤波) 均值滤波是典型的线性滤波算法, 主要方法为领域平均法(即用一片图像区域的各个像素的平均值来代替原图像中的各个像素值) 缺点: 不能很好的保护图像细节, 在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊. 函数原型: void blur(InputArray src, OutputArrary dst, Size ksize , Point anchor=Point(-1, -1), int borderType = BORDER_DEFAULT) ksiz…
经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近期浅墨实在是有些忙,个人独立开发的3D ARPG跨平台游戏App刚刚登陆安卓平台,各大应用商店都须要上架,加之各种学业方面的事情,所以这篇文章直到如今才发出来. OK,先看看<OpenCV编程入门>这本书的封面. 和出版的第一本书<逐梦旅程>一样,这本书的封面依然是浅墨自己设计的原型和…
<C#高级编程>读书笔记 C#类型的取值范围 名称 CTS类型 说明 范围 sbyte System.SByte 8位有符号的整数 -128~127(−27−27~27−127−1) short System.Int16 16位有符号的整数 -32 768~32 767(−215−215~215−1215−1) int System.Int32 32位有符号的整数 -2 147 483 648~2 147 483 647(−231−231~231−1231−1) long System.Int…
Android驱动月考3 第三章 Git的入门 - 读书笔记 对于Github,这是全世界最大的开源平台,你可以把你做的项目在这里开源,把你发现的一些新技术在这里开源,向全世界的开发者们分享,大家都彼此分享彼此的开源技术以及需要的代码,相互贡献,形成一个良好的氛围.同时国内也有一些开源仓库,也可以使用.同时对于Git.甚至于SVN这种工具也是必不可少必须要知道的,对于Git的使用,首先必须要安装Git工具,可以在linux上使用命令安装,apt-get/yum/brew install git*…
[C++]<Windows核心编程>读书笔记 这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入,但应该是合理的.开头几章由于我追求简洁,往往是很多单独的字句,后面的内容更为连贯. 海量细节. 第1章    错误处理 1.         GetLastError返回的是最后的错误码,即更早的错误码可能被覆盖. 2.         GetLas…