这篇文章总结比较全面:
http://blog.csdn.net/timidsmile/article/details/6640600
-
HSV颜色空间
[HSV]是把H(色相),S(饱和度),V(亮度)当做色值来定位颜色的空间。色相的取值范围是0-360度,用来表示颜色的类别。其中红色是0度,绿色是120度,蓝色是240度。饱和度的取值范围是0%-100%用来表示颜色的鲜艳程度,灰色的饱和度是0%,纯粹的颜色(比如大红(255,0,0)青色(0,255,255)等等的饱和度是[100%]亮度的取值范围是0%-100%,用来表示颜色的明暗程度,亮度为0%时为黑色,亮度为100%时为白色,介于0%~100%之间时,则用来表示各个颜色的明暗程度。
相对于[RGB]空间能够非常直观的表达色彩的明暗,色调,以及鲜艳程度,方便进行颜色之间的对比,也方便感情的传达。但是缺点是不能直接把颜色值传达给显示器,在转换过程中消耗系统资源。 -
最临近插值:
图像的缩放很好理解,就是图像的放大和缩小。传统的绘画工具中,有一种叫做“放大尺”的绘画工具,画家常用它来放大图画。当然,在计算机上,我们不再需要用放大尺去放大或缩小图像了,把这个工作交给程序来完成就可以了。下面就来讲讲计算机怎么来放大缩小图象;在本文中,我们所说的图像都是指点阵图,也就是用一个像素矩阵来描述图像的方法,对于另一种图像:用函数来描述图像的矢量图,不在本文讨论之列。
越是简单的模型越适合用来举例子,我们就举个简单的图像:3X3 的256级灰度图,也就是高为3个象素,宽也是3个象素的图像,每个象素的取值可以是 0-255,代表该像素的亮度,255代表最亮,也就是白色,0代表最暗,即黑色。假如图像的象素矩阵如下图所示(这个原始图把它叫做源图,Source):
234 38 22
67 44 12
89 65 63
这个矩阵中,元素坐标(x,y)是这样确定的,x从左到右,从0开始,y从上到下,也是从零开始,这是图象处理中最常用的坐标系,就是这样一个坐标:
---------------------->X
|
|
|
|
|
Y∨
如果想把这副图放大为 4X4大小的图像,那么该怎么做呢?那么第一步肯定想到的是先把4X4的矩阵先画出来再说,好了矩阵画出来了,如下所示,当然,矩阵的每个像素都是未知数,等待着我们去填充(这个将要被填充的图的叫做目标图,Destination):
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ?
现在从最简单的情况说起
1.最近邻插值
该算法是最简单的插值算法,就只是把放大后缺失的点的像素值用最靠近的原图的像素值直接填进去就可以了,比如坐标为(0,0),那么该坐标对应源图中的坐标可以由如下公式得出:
放大系数t=dstWidth/srcWidth=4/3
srcX=dstX/t, srcY = dstY/t
好了,套用公式,就可以找到对应的原图的坐标了(0/(4/3),0/(4/3))=>(0,0)
,找到了源图的对应坐标,就可以把源图中坐标为(0,0)处的234象素值填进去目标图的(0,0)这个位置了。
接下来,如法炮制,寻找目标图中坐标为(1,0)的象素对应源图中的坐标,套用公式:
(1/0.75,00.75)=>(0.75,0)
结果发现,得到的坐标里面竟然有小数,这可怎么办?计算机里的图像可是数字图像,象素就是最小单位了,象素的坐标都是整数,从来没有小数坐标。这时候采用的一种策略就是采用四舍五入的方法(也可以采用直接舍掉小数位的方法),把非整数坐标转换成整数,好,那么按照四舍五入的方法就得到坐标(1,0),完整的运算过程就是这样的:
(10.75,0*0.75)=>(0.75,0)=>(1,0)
那么就可以再填一个象素到目标矩阵中了,同样是把源图中坐标为(1,0)处的像素值38填入目标图中的坐标。
依次填完每个象素,一幅放大后的图像就诞生了,像素矩阵如下所示:
234 38 22 22
67 44 12 12
89 65 63 63
89 65 63 63
这种放大图像的方法叫做最临近插值算法,这是一种最基本、最简单的图像缩放算法,效果也是最不好的,放大后的图像有很严重的马赛克,缩小后的图像有很严重的失真;效果不好的根源就是其简单的最临近插值方法引入了严重的图像失真。 -
双线性内插值算法:
对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v) (其中i、j均为浮点坐标的整数部分,u、v为浮点坐标的小数部分,是取值[0,1)区间的浮点数),则这个像素得值 f(i+u,j+v) 可由原图像中坐标为 (i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:
f(i+u,j+v) = (1-u)(1-v)f(i,j) + (1-u)vf(i,j+1) + u(1-v)f(i+1,j) + uvf(i+1,j+1)
其中f(i,j)表示源图像(i,j)处的的像素值,以此类推。
比如,象刚才的例子,现在假如目标图的象素坐标为(1,1),那么反推得到的对应于源图的坐标是(0.75 , 0.75), 这其实只是一个概念上的虚拟象素,实际在源图中并不存在这样一个象素,那么目标图的象素(1,1)的取值不能够由这个虚拟象素来决定,而只能由源图的这四个象素共同决定:(0,0)(0,1)(1,0)(1,1),而由于(0.75,0.75)离(1,1)要更近一些,那么(1,1)所起的决定作用更大一些,这从公式1中的系数uv=0.75×0.75就可以体现出来,而(0.75,0.75)离(0,0)最远,所以(0,0)所起的决定作用就要小一些,公式中系数为(1-u)(1-v)=0.25×0.25也体现出了这一特点。 空间处理
频域处理
检测
-
Canny算子
该算子功能比前面几种都要好,但是它实现起来较为麻烦,Canny算子是一个具有滤波,增强,检测的多阶段的优化算子,在进行处理前,Canny算子先利用高斯平滑滤波器来平滑图像以除去噪声,Canny分割算法采用一阶偏导的有限差分来计算梯度幅值和方向,在处理过程中,Canny算子还将经过一个非极大值抑制的过程,最后Canny算子还采用两个阈值来连接边缘。
Canny边缘检测算法
step1: 用高斯滤波器平滑图象;
step2: 用一阶偏导的有限差分来计算梯度的幅值和方向;
step3: 对梯度幅值进行非极大值抑制
step4: 用双阈值算法检测和连接边缘
详解:http://www.cnblogs.com/cfantaisie/archive/2011/06/05/2073168.html
(1)图象边缘检测必须满足两个条件:一能有效地抑制噪声;二必须尽量精确确定边缘的位置。
(2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子。这就是Canny边缘检测算子。
(3)类似与Marr(LoG)边缘检测方法,也属于先平滑后求导数的方法。 -
Sobel算子
其主要用于边缘检测,在技术上它是以离散型的差分算子,用来运算图像亮度函数的梯度的近似值, Sobel算子是典型的基于一阶导数的边缘检测算子,由于该算子中引入了类似局部平均的运算,因此对噪声具有平滑作用,能很好的消除噪声的影响。Sobel算子对于象素的位置的影响做了加权,与Prewitt算子、Roberts算子相比因此效果更好。
Sobel算子包含两组3x3的矩阵,分别为横向及纵向模板,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。实际使用中,常用如下两个模板来检测图像边缘。
检测水平边沿 横向模板 :
检测垂直平边沿 纵向模板:
图像的每一个像素的横向及纵向梯度近似值可用以下的公式结合,来计算梯度的大小。
然后可用以下公式计算梯度方向。
在以上例子中,如果以上的角度Θ等于零,即代表图像该处拥有纵向边缘,左方较右方暗。缺点是Sobel算子并没有将图像的主题与背景严格地区分开来,换言之就是Sobel算子并没有基于图像灰度进行处理,由于Sobel算子并没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。 -
直方图的性质:
1,直方图反映了图像中的灰度分布规律。它描述每个灰度级具有的像元个数,但不包含这些像元在图像中的位置信息。
2,任何一幅特定的图像都有唯一的直方图与之对应,但不同的图像可以有相同的直方图。
3,如果一幅图像有两个不相连的区域组成,并且每个区域的直方图已知,则整幅图像的直方图是该两个区域的直方图之和 -
直方图处理
1.直方图均衡:增强对比度,补偿图像在视觉上难以区分灰度级的差别。作为自适应对比度增强工具,功能强大。
1.直方图匹配(直方图规定化):变换原图的直方图为规定的某种形式的直方图,从而使两幅图像具有类似的色调和反差。直方图匹配属于非线性点运算。在直方图均衡的基础上规定化,有利于解决像素集中于灰度级暗端的图像。
1.局部直方图处理:用于增强小区域的细节,方法是以图像中的每个像素邻域中的灰度分布为基础设计变换函数,可用于显示全局直方图均衡化不足以影响的细节的显示。
1.5.4直方图统计:可用于图像增强,能够增强暗色区域同时尽可能的保留明亮区域不变,灵活性好。 -
详细参考
http://blog.csdn.net/taoyanqi8932/article/details/52758376
http://blog.csdn.net/guoyk1990/article/details/8112552 (直方图匹配)
常见噪音以及处理
常见噪音分类
a)高斯噪声
在空间域和频域中,由于高斯噪声在数学上的易处理性,这种噪声(也称为正态噪声)模型经常被用在实践中,事实上,这种易处理性非常方便,使高斯模型经常适用于临街情况下。
b)瑞利噪声
需注意,距原点的位移和其密度图形的基本形状向右变形的事实。瑞利密度对于近似偏移的直方图十分适用。
c)伽马(爱尔兰)噪声
d)指数分布噪声
e)均匀分布噪声
f)脉冲噪声(椒盐噪声)
双极脉冲噪声也称为椒盐噪声,同时,它们有时也称为散粒和尖峰噪声。
上述的几种PDF为在实践中模型化宽带噪声干扰状态提供了有用的工具。例如,在一副图像中,高斯噪声的产生源于电子电路噪声和有低照明度或高温带来的传感器噪声。瑞利密度分布在图像范围内特征化噪声现象时非常有用。指数密度分布和伽马密度分布在激光成像中有一些应用。脉冲噪声主要表现在成像中的短暂停留中,例如错误的开关操作。均匀密度分布可能是在实践中描述的最少,然而,均匀密度座位模拟随机数产生器的基础是非常有用的。
- 处理
参考博客:
http://blog.csdn.net/zhoufan900428/article/details/37695357
模式识别
图像匹配
卷积和相关
两个函数,翻转其中一个,再滑动求积分,叫做卷积;不翻转就滑动求积分,叫做互相关,如果其中一个为偶函数,那么卷积和相关效果相同.-
什么是卷积
用一个模板和一幅图像进行卷积,对于图像上的一个点,让模板的原点和该点重合,然后模板上的点和图像上对应的点相乘,然后各点的积相加,就得到了该点的卷积值。对图像上的每个点都这样处理。由于大多数模板都是对称的,所以模板不旋转。
卷积的作用
利用卷积可以实现对图像模糊处理、平滑处理,边缘检测,产生轧花效果的图像。
创建模板:
- 傅里叶变换
傅立叶变换在这里的物理意义就是将光的空间分布转换为频率分布(相空间),在靠近原点的部分为图像低频部分,远离原点部分为图像高频部分。
-
形态学
形态学操作就是基于形状的一系列图像处理操作。OpenCV为进行图像的形态学变换提供了快捷、方便的函数。最基本的形态学操作有二种,他们是:膨胀与腐蚀(Dilation与Erosion)。
膨胀与腐蚀能实现多种多样的功能,主要如下:
1,消除噪声
2,分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素。
3,寻找图像中的明显的极大值区域或极小值区域
4,求出图像的梯度腐蚀和膨胀是对白色部分(高亮部分)而言的,不是黑色部分。膨胀就是图像中的高亮部分进行膨胀,“领域扩张”,效果图拥有比原图更大的高亮区域。腐蚀就是原图中的高亮部分被腐蚀,“领域被蚕食”,效果图拥有比原图更小的高亮区域。
-
膨胀
膨胀就是求局部最大值的操作。
按数学方面来说,膨胀或者腐蚀操作就是将图像(或图像的一部分区域,我们称之为A)与核(我们称之为B)进行卷积。
核可以是任何的形状和大小,它拥有一个单独定义出来的参考点,我们称其为锚点(anchorpoint)。多数情况下,核是一个小的中间带有参考点和实心正方形或者圆盘,其实,我们可以把核视为模板或者掩码。
而膨胀就是求局部最大值的操作,核B与图形卷积,即计算核B覆盖的区域的像素点的最大值,并把这个最大值赋值给参考点指定的像素。这样就会使图像中的高亮区域逐渐增长。如下图所示,这就是膨胀操作的初衷。
-
腐蚀
腐蚀就是求局部最小值的操作
-
开运算
开运算(Opening Operation),其实就是先腐蚀后膨胀的过程。开运算可以用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。
-
闭运算
先膨胀后腐蚀的过程称为闭运算(Closing Operation),闭运算能够排除小型黑洞(黑色区域)
-
形态学梯度
形态学梯度(Morphological Gradient)为膨胀图与腐蚀图之差,对二值图像进行这一操作可以将团块(blob)的边缘突出出来。我们可以用形态学梯度来保留物体的边缘轮廓.
-
顶帽
顶帽运算(Top Hat)又常常被译为”礼帽“运算。为原图像与上文刚刚介绍的“开运算“的结果图之差
-
黑帽
黑帽(Black Hat)运算为”闭运算“的结果图与原图像之差。黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域,且这一操作和选择的核的大小相关。
所以,黑帽运算用来分离比邻近点暗一些的斑块。非常完美的轮廓效果图:
相机标定
摄像机标定(Camera calibration)简单来说是从世界坐标系换到图像坐标系的过程,也就是求最终的投影矩阵的过程。
http://www.cnblogs.com/Jessica-jie/p/6596450.html
- 关于YUV