图像处理需要哪些基础

2016-05-28 21:26:11 haifengid 阅读数 1212
 
图像处理基础:冈萨雷斯的数字图像处理
图像中的目标更好的识别
模式识别相关理论‘机器学习、计算机视觉。这些都是交叉的学科
数学基础:高数(基础),概率论(比如高斯分布,马尔科夫,贝叶斯用的超多。每个像素点都可以看做是个样本。等等),线性代数、矩阵论、信号与系统(傅氏变换,需要变换到频域进行分析。

相关论文都是这方面的东西。比如pca这个很经典的东西,就是线代的。

如果要搞机器视觉还要看一些成像
 

2018-03-20 18:34:45 qq_16481211 阅读数 5501

图像像素操作

  • 几何运算-加减乘除

  • 逻辑运算-与或非取反

  • 像素读写

  • 通道混合与调整

  • 对比度与亮度调整

图像变换

  • 插值(zoom in或out)

  • 旋转(rotate)

  • 透视变换

  • 错切变换

  • 翻转

像素统计

  • 计算均值与方差

  • 计算直方图

  • 计算最大最小

  • 计算像素内方差

色彩空间

  • RGB

  • HSL

  • YUV

  • YCrCb

  • 色彩空间转换

  • 灰度转换

  • 调整饱和度与亮度

  • 主色彩提取与分析

卷积图像处理

-空间域卷积

-频率域卷积

-FFT空域到时域转换

-模糊

-边缘提取

-去噪

-增强

-直方图均衡化

-直方图反向投影

形态学处理

-腐蚀

-膨胀

-开闭操作

-形态学梯度

-顶帽

-黑帽

-内梯度与外梯度

图像分割

-K-Means

-Mean-Sift

-分水岭

-Fuzzy-C Means

-GMM

-Graphic Cut

-区域生长

特征提取

-SIFT

-SURF

-LBP

-HOG

-Haars

-Blob

-DOG或者LOG

-金字塔

-Haars Corner

-Shi-Tomasi Corner

-Hessian

二值图像

-全局阈值二值化

-局部阈值二值化

-轮廓提取

-区域测量

-几何矩特性

-连通区域计算

-泛洪填充

-霍夫变换

-距离变换

-分水岭分割

-链式编码

-骨架提取

-欧拉数计算

对象识别与匹配

  • 直方图匹配

  • 相关性匹配

  • 模板匹配

  • KNN

  • SVM

计算机视觉深度学习后续补充…

2016-04-12 20:36:48 qq_20823641 阅读数 14837

基础储备知识列表(图像必备基础)

1.     图像会表示成一个2D实数矩阵f(x,y),也称为是图像在那个像素的灰度或者是亮度,对于double类型的是0.0黑      1.0白,对于unit8类型是0黑,255是白

2.     图像常见的数字形式编码:位图(栅格)和矢量

3.     图像表示

        二值化图像,1比特图像(一个像素是1比特)0 1
       灰度图像,8比特图像(1个像素是8比特)0-255
       彩色图像24比特(RGB各占8比特),同时也会有第四通道,提供对每个像素透明性的测度

      索引图像 24比特,其中每个像素给出的索引和索引所指示的彩色调色板中的元素R G B的值

4.     基本术语

     图像拓扑:常用于二值图像并借助形态学

     领域:围绕一个给定像素的周围构成它的领域,4领域 8领域

     邻接;通路;连接性;组元

5.     图像处理分为3个层次

     底层:基本操作(噪声消除,对比度增强),其中输入和输出都是图像

     中层:从图像中提取属性(如边缘,轮廓,区域)

     高层:对一个场景的内容进行分析和解释

6.     图像的处理分为:空间域和频域

     空间域:

     全局(点)操作

     面向领域的操作,卷积

     结合多幅图像的操作

             频域:

7.     图像的采集需要光,光可用电磁波或者粒子秒速,一个光子是一个微小的电磁振动能量包,可以用波长和频率来刻画,波长乘以频率等于波传播的速度,人类的视觉系统(HVS)对波长在400-700nm,1nm=10-9m

8.     彩色编码和表达

      彩色可使用3个数值分量和恰当的增加权函数来编码。最简单的编码方式就是像素的RGB

9.     人对光的感知以及对颜色的感知常用3个参数来描述:

      辉度:对于发光强度的主观感受

     色调:一个视感觉的属性,对应区域是否类似于一个感知的彩色,红绿蓝或者是组合

     饱和度:对一个区域用与其亮度成比例来判断的彩色行,对光源白色性的描述

     注:亮度可以用红绿蓝的加权和来计算

10.   数字图像处理的硬件:采集装置,负责捕获数字化图像或视频序列camera link。当相机产生模拟视频输出时,需要使用一个图像数字化器(图像采集卡)将其转化成数字格式;

      处理装置,计算机;显示和硬拷贝设备;存储设备,光盘。

      数学图像处理的软件,matlab c++

11.   图像传感器:将电磁辐射能量转换为可以处理、显示和解释成图像的电信号。主要是基于CCD(电荷耦合装置)和CMOS(互补型金属氧化物半导体器件)工艺。

      相机长常用的是CCD传感器,他们不受几何失真的影响并对入射光有线性的响应,一个CCD传感器由一组光敏单元构成,用硅制造,每个能产生正比于落在上面光密度的电压。一个感光单元具有一个约10^6能量载体的有限能力,这限制了被成像物体的明度上限,一个饱和的感光单元会溢出,从而影响它相邻单元并导致成为渗色的缺陷

     一个CCD相机有时候插入一个计算机板子,称为帧缓存,它包括对相机采集的图像快速访问的内存(典型的是每幅图像0.1ms),图像在被采集和临时存储在帧缓存后,将被处理货复制到长时存储设备中。

    在单CCD的相机中,使用具有对每种光基色(红蓝绿)不同感光单元的三色成像仪,其中感光单元排列成贝叶斯模式,这样,每个像素实际上仅仅记录了三个基色之一。

     COMS传感器是分层传感器堆栈,在网格的每个位置都有分层的对所有三种基色都敏感的光电传感器,在每个像素只有一个仅对一种基色敏感的光电传感器。

相机的镜头有2个重要的参数是它的放大倍数和光收集能力

12.   图像数字化:(时间或者空间)采样、(幅度上)量化

     采样就是去离散的值,有采样率,采样率要大于信号中最高频率分量的2倍(乃奎斯特准则),采样模式

     量化是将一个连续变化函数用一个离散集合的量化级替换的过程。图像的量化级是灰度级,量化理解为映射,就是把一个范围的灰度值隐射到单个点,例如0-255可以均匀量化为4,1代表0-64 2代表65-128 3代表129-1924代表193-255

     空间分分辨率;描述衣服图像中像素密度,空间分辨率高,将有越多的像素用来显示一副固定尺寸的图像,每英寸点数dpi表示,空间分辨率降低的时候,质量变化不是很明显,但是像素化,锯齿化 细节的损失,甚至会出现莫尔模式

     灰度分辨率是HVS能辨别的亮度级的最小变化,对于单色图像每个像素8比特是在主观质量和实际实现(每个像素值对应一个字节对应)中较好的平衡

 


2017-09-19 10:07:05 Strive_0902 阅读数 6285

1、数字图像:

数字图像,又称为数码图像或数位图像,是二维图像用有限数字数值像素的表示。数字图像是由模拟图像数字化得到的、以像素为基本元素的、可以用数字计算机或数字电路存储和处理的图像。


2、数字图像处理包括内容:

图像数字化;图像变换;图像增强;图像恢复;图像压缩编码;图像分割;图像分析与描述;图像的识别分类。


3、数字图像处理系统包括部分:

输入(采集);存储;输出(显示);通信;图像处理与分析。


4、从“模拟图像”到“数字图像”要经过的步骤有:

图像信息的获取;图像信息的存储;图像信息处理;图像信息的传输;图像信息的输出和显示。


5、数字图像1600x1200什么意思?灰度一般取值范围0~255,其含义是什么?

数字图像1600x1200表示空间分辨率为1600x1200像素;灰度范围0~255指示图像的256阶灰阶,就是通过不同程度的灰色来来表示图像的明暗关系,8bit的灰度分辨率。 


6、图像的数字化包括哪两个过程?它们对数字化图像质量有何影响?

采样;量化  

采样是将空间上连续的图像变换成离散的点,采样频率越高,还原的图像越真实。量化是将采样出来的像素点转换成离散的数量值,一幅数字图像中不同灰度值得个数称为灰度等级,级数越大,图像越是清晰。


7、数字化图像的数据量与哪些因素有关?

图像分辨率;采样率;采样值


8、什么是灰度直方图?它有哪些应用?从灰度直方图中你可可以获得哪些信息?

灰度直方图反映的是一幅图像中各灰度级像素出现的频率之间的关系

它可以用于:判断图像量化是否恰当;确定图像二值化的阈值;计算图像中物体的面积;计算图像信息量。

从灰度直方图中你可可以获得:

暗图像对应的直方图组成成分几种在灰度值较小的左边一侧  

明亮的图像的直方图则倾向于灰度值较大的右边一侧 

对比度较低的图像对应的直方图窄而集中于灰度级的中部 

对比度高的图像对应的直方图分布范围很宽而且分布均匀


9、什么是点处理?你所学算法中哪些属于点处理?

在局部处理中,输出值仅与像素灰度有关的处理称为点处理。如:图像对比图增强,图像二值化。


10、什么是局部处理?你所学算法中哪些属于局部处理?

在对输入图像进行处理时,计算某一输出像素值由输入图像像素的小领域中的像素值确定,这种处理称为局部处理。如:图像的移动平均平滑法,空间域锐化法。


------------图像增强-----------------空域------------------平滑去噪-----------------


11、图像增强的目的是什么?

图像增强的目的是要改善图像的视觉效果,针对给定图像的应用场合,有目的的增强图像的整体或局部特性,将原来不清晰的图像变得清晰或增强某些感兴趣的特征,扩大图像中不同物体的特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,将强图像判读和识别效果,满足某些特征分析的需求。


12、什么是灰度图像的直方图?简述用它可以简单判断图像质量? 

灰度直方图定义为数字图像中各灰度级与其出现的频数间的统计关系,它能描述该图像的概貌,例如图像的灰度范围,每个灰度级出现的频率,灰度级的分布,整幅图像的平均明暗和对比度等


13、常用图像增强方法有哪些?

图像的线性变换;图像的非线性变化;图像的直方图均衡化和规定化。


14、“平均模板”对图像做哪种处理?写出 3x3和5x5“平均模板”?

抑制噪声,改善图像质量


15、“中值滤波”对图像做哪种处理?是如何运算的?

中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心像素的灰度
值的滤波方法,它是一种非线性的平滑法,对脉冲干扰及椒盐噪声的抑制效果好,在抑
制随机噪声的同时能有效保护边缘少受模糊。


16、什么叫点处理、局部处理、全局处理?3x3平均模板、直方图修正、灰度反转各属于哪种处理?

点处理:输出值仅与像素灰度有关的处理称为点处理。(直方图修正)

局部处理:计算某一输出像素值由输入图像像素的小领域中的像素值确定,这种处理称为局部处理。(灰度反转)

全局处理:图像某一像素灰度的变化与图像全部像素灰度值有关。(3x3平均模板)


-------------图像变换----------频域处理---------------频域--------------


17、常用图像变换算法:

图像的几何变换(图像畸变校正、图像缩放:双线性插值、旋转、拼接)

图像变换(傅立叶、余弦、沃尔什-哈达玛、K-L变换、小波变换)

图像频域处理(增强算法:高频率提升、同态滤波;平滑去噪:低通滤波)


18、为什么要进行图像变换?各种变换应用在图像什么处理上?

图像变换在数字图像处理与分析中起着很重要的作用,是一种常用的、有效的分析手段。图像变换的目的在于:使图像处理问题化;有利于图像特征提取;有助于从概念上增强对图像信息的理解。


19、简述空域滤波跟频域滤波的不同

 空域法:直接对图像的像素灰度进行操作。常用算法:图像的灰度变换;直方图修正(均衡化、规定化);平滑和锐化处理;彩色增强。

频域法:在图像的变换域中,对图像的变换值进行操作,然后经逆变换获得所需要的增强结果。常用算法:低通滤波;高频提升滤波;同态滤波。


20、频域进行图像增强、去噪、边缘检测分别用哪种滤波器?

增强------------同态滤波器

去噪------------低通滤波器

边缘检测------高通滤波器


21、频域处理图像的步骤:

a.清除噪声,改善图像的视觉效果     

b.突出边缘有利于识别和处理


------------------------- 图像复原--------------------------------------------

常用图像变换算法:

(1) 逆滤波;  (2)维纳滤波(Wiener Filter); (3)盲卷积


22、什么叫图像复原?与图像增强有什么区别?

图像在形成、传输和记录中,由于成像系统、传输介质和设备的不完善,导致图像质量下降,这一现象称为图像退化。

图像复原和图像增强是有区别的,虽然二者的目的都是为了改善图像的质量,但图像增强不考虑图像是如何退化的,只通过试探各种技术来来增强图像的视觉效果。因此,图像增强可以不顾增强后的图像是否失真,只要看着舒服就行。而图像复原则完全不同,需知道图像退化的机制和过程等先验知识,据此找出一种相应的逆过程解算方法,从而得到复原的图像。如果图像已退化,应先做复原处理,再做增强处理。


23、说出几种图像退化:

图像模糊、失真、有噪声等


24、什么是维纳滤波器?

是一种以最小平方为最优准则的线性滤波器,在一定的约束条件下,其输出与给定函数的差的平方达到最小,通过数学运算最终可变为可变为一个拖布列兹方程的求解问题,是利用平稳随机过程的相关特性和频谱特性混有噪声的信号进行滤波。


25、说出几种常用的图像复原方法?

代数恢复方法:无约束复原;约束最小二乘法  

频域恢复方法:逆滤波恢复法;去除由均匀运动引起的模糊;维纳滤波复原法


---------------------------------图像压缩编码----------------------

常用图像变换算法:

(1)哈夫曼编码;(2)算术编码;(3)预测编码;(4)变换编码 


26、图像为什么可以压缩?(即数字图像中存在哪几种冗余?) 

图像数据之所以可以被压缩,是因为数据中存在着冗余。  在图像压缩中,有三种基本的数据冗余:编码冗余;像素间冗余;视觉冗余。


27、什么是有损和无损压缩?

无损压缩:是对文件本身的压缩,和其它数据文件的压缩一样,是对文件的数据存储方式进行优化,采用某种算法表示重复的数据信息,文件可以完全还原,不影响文件内容,对于数字图像而言,也不会使图像细节有任何损失。  

有损压缩:是对图像本身的改变,在保存图像时保留了较多的亮度信息,而将色相和色纯度的信息和周围的像素进行合并,合并的比例不同,压缩的比例也不同,由于信息量减少了,所以压缩比可以很高,图像质量也会相应的下降。


28、霍夫曼编码算法的基本思想是什么? 

是根据源数据符号发生的概率进行编码的。在源数据中出现概率越大的符号,分配的码字越短;出现概率越小的信号,其码长越长,从而达到用尽可能少的码表示源数据。


29、损和有损预测编码算法不同之处?各在哪个环节对数据实现了压缩?

无损(亦称无失真、无误差、信息保持)编码中删除的仅仅是图像数据中冗余的数据,经解码重建的图像和原始图像没有任何失真。  

有损(亦称有误差、有失真)编码是指解码重建的图像与原图像相比有失真,不能精确的复原,但视觉效果上基本相同,是实现高压缩比的编码方式。


30、简述统计编码、算术编码、预测编码、变换编码算法的基本原理

统计编码:根据信源的概率分布可变长码,使平均码长非常接近于熵。 

算数编码:利用编码符号的联合概率,用一个单独的浮点数来代替一串输入符号。 

预测编码:不是直接对信号编码,而是对图像预测误差编码。实质上是对新的信息进行编码,以消除相邻像素之间的相关性和冗余性。  

变换编码算法:是通过正交变换把图像从空间域转化为能量比较集中的变换域系数,然后对变换系数经行编码,从而达到压缩数据的目的。


--------------------------图像边缘检测、分割---------------------------

图像处理常用算法:

(1)边缘检测:Canny 算子、Laplacian算子、Sobel 算子 

(2)Hough变换检测直线和圆算法  

(3)图像分割:阈值分割算(也叫二值化)、区域分割算法 :区域生长法、分裂合并法、空间聚类法。


31、说出几个常用的边缘检测算子:

Canny 算子、Laplacian算子、Sobel 算子


32、分别说出下面四种模板分别实现平滑去噪(低通滤波器)、图像锐化(梯度法)、边缘检测(高通滤波器)哪种处理?





附加:

1、灰度图像跟彩色图像:

灰度图像:是一个二维的灰度(亮度)函数f(x,y)

彩色图像:由三个二维灰度函数f(x,y)组成。三个是RGB或者HSV


2、图像处理:

从图像到图像:从图像到经过加工的另一图像

一个决策:将一幅图像转化为一种非图像的表示


3、相邻像素:

四邻域:


对角领域:


八领域:



4、像素的连接、邻接、与连通

邻接adjacency:仅考虑像素间的空间关系 

由像素间的度量关系知:

四领域也可以定义为:

八领域也可以定义为:

连接connectivity

空间关系:满足邻接

灰度关系:灰度值是否满足某个特定的相似准则,用V来表示这个准则。

                        

4-连接:2个像素p和r在V中取值且r在p的4邻域中

8-连接:2个像素p和r在V中取值且r在p的8邻域中

m-连接(混合连接):2个像素 p 和 r 在V 中取值,且满足下面条件之一即可

1、r在p的4领域中。
2、r在p的对角领域中且p的4领域与r的4邻域的交集是空集。如下图所示:eg:彩色图像中左边是m-连接,右边不是。


                         



5、像素间的距离

3个像素p,q,r,分别具有坐标(x, y),(s, t),(u, v),度量函数记为D。

像素间距离的性质:

1>D(p,q)>=0 两个像素之间的距离总是正的

2>D(p,q)=D(q,p) 距离与起终点的选择无关

3>D(p,R)<=D(p,q)+D(q,r) 最短距离是沿直线的

距离度量函数:

1>欧氏距离:距离p小于或者等于某一值是:以p为原点的圆


2>城市街区距离:距离小于或者等于某一值是以p为中心的菱形


3>棋盘距离:距离p小于或者等于某一值是以p为中心的正方形


                                     



























2017-12-24 09:55:07 David_Han008 阅读数 2384

     @DavidHan,
    http://blog.csdn.net/David_Han008/article/details/78883641

前言
最近这段时间,导师这边有个人脸识别做跟随移动的机器人,想利用这个机会总结一些关于图像处理的基础知识
实践部分
这部分,主要写利用ROS在phil333的代码基础上,添加了跟随功能,以及解决,多级控制的的方法,来实现安卓控制和人脸跟随的两个级别的控制。
原作者的github:点击这里
用法:打开摄像头之后,直接roslaunch face_detection face_tracking.launch 就可以了。 在使用的时候,会遇到face_tracking的包的话题,没办法映射,因此应该在cfg当中修改。如下图所示:
这里写图片描述
原作者代码解析:
1、 在发布图像方面:
phil333默认的初值是0也就是不发布图像,但是我们需要发布图像,因此这个地方应该设置成3
这里写图片描述
在发布的msg当中,作者已经通过 std_msgs::Int32MultiArray 这个数据,将所有的数据存储下来,数据第0位:帧率。第1位:图片当中脸的个数。第2位:图像列数,第3位:图像的行数,第4位,脸的ID 第5位,框住同一张脸的数量。第6位,框的左上角x,第7位,框右上角y,第8位,框的宽度,第9位,框的高度。这个设计真的很贴心,而且最后在发布topic的时候,也可以产生compress压缩图像的topic ,这样我就可以通过手机来订阅这个图像。从而在安卓手机上显示,最后我吧我修改后的代码上传到github上面。
2、opencv测试版本
还需要注意的一点是,安装的opencv版本是2.4.13的版本,上是通过的,如果cv_bridge没有找到opencv的安装的位置的话,就将整个/usr/local/include/openc和/usr/local/include/opencv2 复制到/usr/include/opencv /usr/include/opencv2,使用的命令是cp -r
这里写图片描述
扩展:如果在ROS当中eigen出现问题的话,就用下面:
这里写图片描述

一、添加人脸跟随左转右转
添加的原理:
这里写图片描述
原作者的msg已经提供我们需要使用的量。我们使用的,就是x,框的width,以及图像的cols(列数),我们可以通过x+width/2来求出图像中心的位置,通过质心的位置,判断质心是否超过我们设置的阈值,然后来来发布速度。这里发布速度的频率是是根据帧率来确定的。也就是你没是被一张图片,发现他是一张人脸,然后在这张上面画一个框,,提取出框的坐标,来发布左转或者右转的命令。
最后为了防止,当图像中没有脸的时候,我们利用上面的msg进行判断,如果没有脸的时候,发布速度是0.
二、解决遥控和人脸识别控制的优先级问题
问题简述:

这里写图片描述
解决问题的总体的思路:
如何判断,是否有安卓手机发布的速度值
尝试过的解决方案:
1、通过nodename来判断
刚开始的时候,也尝试过利用Mux来进行优先级,进行设置。也尝试股哟,来判断订阅一个node的名字,判断时候有这个节点的名字,但是这种方案,有个不好的时候,就是当你的安卓app退出之后,这个节点的名字仍然存在,在使用getsubscriberNumber,也查阅了相关API,但是反馈的数值一直不是很准确,姑此方案舍弃
2、通过mux来判断
mux,感觉挺复杂的,看了wiki的介绍,感觉理解需要一些时间,我尝试过,采用两个topic,最后映射成一个topic,感觉意义不大,姑此方案舍弃
3、通过订阅这个话题,然后来判断是否需要数据替换。
这种方案测试成功:
大体的思路:
这里写图片描述
代码逻辑框图:
这里写图片描述
核心代码:

 //这里的
image.cols*image*row是640*480
//printf("faces[0].x:%d",faces[1].x);
 /*
如果没有框的时候,也就是data=0的时候,发布速度是0
如果有框的data的时候,发布速度是+
如果data
*/
double j_people_num,j_b_x,j_b_width,j_p_width,OFFSET;
j_people_num=myMsg.data[1];//人的个数
j_b_x=myMsg.data[6];//x
j_b_width=myMsg.data[8]/2;//B一半宽
j_p_width=myMsg.data[2]/2;//P一半宽
OFFSET=50;//范围
//std::cout<<"j_b_x+j_b_width:"<<j_b_x+j_b_width<<"j_p_width+OFFSET"<<j_p_width+OFFSET<<std::endl;
//std::cout<<"twi.angular.z="<<twi.angular.z<<std::endl;
//如果这两组数据都不存在,那么进行下面的步骤
twi.linear.x=joy_twi.linear.x;
twi.angular.z=joy_twi.angular.z;
if((joy_twi.angular.z==0)&&(joy_twi.linear.x==0))//如果说,是joy=0
{
//进行图像判断
if (j_people_num==0)
{
 twi.angular.z=0;
}
if (j_people_num>0)
{
  if((j_b_x+j_b_width)<=(j_p_width+OFFSET)&&(j_b_x+j_b_width)>=(j_p_width-OFFSET))
   {
    twi.angular.z =0;
   }
   if((j_b_x+j_b_width)<(j_p_width-OFFSET))
   {
   twi.angular.z=0.6;
   }
   if((j_b_x+j_b_width)>(j_p_width+OFFSET))
   {
   twi.angular.z=-0.6;
   }
}
//joy_twi.angular.z=twi.angular.z;//进行数据替换
//joy_twi.linear.x=twi.linear.x;
}
veb_pub_.publish(twi);//发twi

具体的代码,详见github。
三、添加人脸识别之后说欢迎光临
问题简述:希望在人脸识别之后,播放欢迎光临
问题解决办法:利用科大讯飞的语音识别的PKG,xfei_asr中的tts_subscribe_speak.cpp
这里写图片描述
只是在人脸识别之后,框住框了之后,便开始说欢迎光临
这里写图片描述
具体的代码,详见github。