图像处理 计算特征距离

2017-08-16 11:03:24 bianlongpeng 阅读数 10259
  • 图像轮廓计算

    掌握OpenCV核心模块,熟练使用相关API 理解各个API背后的相关算法原理,每个参数意义 有能力解决使用应用场景问题,大量工程代码经验分享 掌握图像处理与视频分析,图像分析与测量编码与开发技巧

    80人学习 贾志刚
    免费试看

1.Euclidean Distance

Euclidean Distance(欧氏距离)是一种常用的度量方式,是点和点之间坐标的均方根。通常情况下人们所说到的距离,指的就是欧式距离,它的定义如下:


2.Manhattan Distance

Manhattan Distance(曼哈顿距离)也称为街区距离,表示对点与点之间在不同维度上的绝对距离的叠加,它的定义如下:


3.Canberra Distance

Canberra Distance(堪培拉距离)被用来衡量向量空间中两个点之间的距离,它是曼哈顿距离的加权版本。其定义公式为:


通常Canberra distance对于接近于0(大于等于0)的值的变化非常敏感。

4.Chebychev Distance

Chebychev Distance(切比雪夫距离)也称为最大值距离,是衡量对点之间在不同维度上的最大距离,常用于序数或定量变化的的检测。其定义公式为:


5.马氏距离

数据的协方差距离适用马氏距离表示的。马氏距离是一种能够有效的计算未知样本集的相似度方法。其中样本向量u到v的马氏距离定义公式为:


是协方差矩阵,v是样本集均值。这种方法的优点是不受量纲影响。

6.EMD距离

EMD全称是Earth Mover's Distance,也称为陆地移动距离。主要是用于求某一个特征空间里两个多维分布的相似性。在两个直方图分布中,一个分布r是一堆土的集合,另一个分布s是很多洞的集合,所以EMD是一种填洞式的计算,而土和洞之间的地面距离不相同,所以EMD距离能够计算土来填满所有洞的最小代价或最小工作量。其定义公式为:


7.Hausdorff Distance

Hausdorff Distance(豪斯多夫距离)的定义为:给定两个有限的集合


Hausdorff是一种极大-极小距离,常用于测量两个点集的相似匹配的程度。它是测量集合与集合之间的距离。

8.Minkowsky Distance

Minkowsky Distance是明科斯基距离,它的定义公式为


r=1时叫街区距离;r=2时叫欧氏距离;当r无穷时称作切比雪夫距离。


2017-03-07 22:03:00 twinkle_star1314 阅读数 12306
  • 图像轮廓计算

    掌握OpenCV核心模块,熟练使用相关API 理解各个API背后的相关算法原理,每个参数意义 有能力解决使用应用场景问题,大量工程代码经验分享 掌握图像处理与视频分析,图像分析与测量编码与开发技巧

    80人学习 贾志刚
    免费试看

图像匹配之欧式距离算法

  (2016-12-09 14:23:28)
标签: 

图像处理

 

欧式距离算法

 

python

分类: 图像识别
欧式距离算法       
       在用差分矩阵均值对强噪声的识别失败了之后,我们决定用欧式距离算法。欧式距离算法的核心是:设图像矩阵有n个元素(n个像素点),用n个元素值(x1,x2,...,xn)组成该图像的特征组(像素点矩阵中所有的像素点),特征组形成了n维空间(欧式距离就是针对维空间的),特征组中的特征码(每一个像素点)构成了每一维的数值,就是x1(第一个像素点)对应一维,x2(第二个像素点)对应二维,. . .,xn(第n个像素点)对应n维。在n维空间下,两个图像矩阵各形成了一个点,然后利用数学上的欧式距离公式计算这两个点之间的距离,距离最小者就是最匹配的图像。

  欧式距离公式:
   点A = (x1, x2, ... , xn)
   点B = (y1, y2, ... , yn)
   AB^2  = (x1-y1)^2+(x2-y2)^2+...+(xn-yn)^2
  AB就是所求的A,B两个多维空间中的点之间的距离。
实验图:
                     图像匹配之欧式距离算法
                                                                img

                                          图像匹配之欧式距离算法
                                                                 imgfind
代码如下:(Python)
图像匹配之欧式距离算法
图像匹配之欧式距离算法
图像匹配之欧式距离算法

强噪声(50000随机点)效果图如下:

                      图像匹配之欧式距离算法
          识别成功,再把50000噪声点换成500000(50万)个噪声点,效果会怎样呢?

强噪声(50万随机点)效果图如下:

                         图像匹配之欧式距离算法
                      这图太模糊了,这是范冰冰吗?估计她妈也认不出来了吧!(大笑)
                   但是我们的算法成功的识别出来了,还优雅的把她的头部圈起来了。

我们把图片旋转一下角度会不会也成功的识别呢?(我好坏)
旋转图片的代码如下:(Python)
图像匹配之欧式距离算法
图像匹配之欧式距离算法

旋转20度后的效果图如下:

   图像匹配之欧式距离算法
  我们把这张图片保存下来,用来对欧式距离算法进行测试。

  把这张被旋转20度的图片加载进上面的欧式距离算法,效果如下(无噪声):

    图像匹配之欧式距离算法
      成功识别!

   再来点刺激的,加上强噪声,效果图如下(50000噪声点):

    图像匹配之欧式距离算法
   依旧被识别!

继续挑战,旋转60度:
实验图:

图像匹配之欧式距离算法

运行之后的效果图(无噪声):

图像匹配之欧式距离算法

   头部识别的有点偏,但是考虑头部是斜着的,画矩形的话,本来也就是不可能完全圈中的,除非   你的矩形也可以斜着画。偏差在我们可以接受的范围内,所以这样也算是成功识别了。

  可见欧式距离算法还是蛮强悍的啊!强到没朋友!
2017-08-19 13:46:59 xiazai123time 阅读数 9136
  • 图像轮廓计算

    掌握OpenCV核心模块,熟练使用相关API 理解各个API背后的相关算法原理,每个参数意义 有能力解决使用应用场景问题,大量工程代码经验分享 掌握图像处理与视频分析,图像分析与测量编码与开发技巧

    80人学习 贾志刚
    免费试看

距离变换提供像素与某个图像的子集(可能是表示物体或某些特征)的距离。所产生的图像在该子集元素位置处的像素值为0,邻近的像素具有较小的值,离他越远的数值就越大。换句话说,一幅二值图像的距离变换提供每个像素到最近非零像素的距离。在图像边界外的假象像素也当做非零像素看待。

作为说明,考虑一幅二值图像,1表示物体,0表示背景。这里,距离变换给图像的每个像素赋予到最近物体或到整个图像边界的距离。物体内部像素的距离变换等于0。输入图像如图1所示,D4距离的距离变换结果如图2所示。
图1 二值图像。灰色像素对应于物体而白色像素对应于背景 图2 在计算时考虑D4距离的距离变换结果
D4距离是城市街区距离,在数字栅格中不允许向对角线方向移动。只允许横向和纵向移动。
D4[(i,j),(h,k)]=|i-h|+|j-k|.(数距离时,可以从当前格开始跳,直到跳到离他最近的物体的格子里,所用的步数就是距离)

距离变换的意义:在二值图像中,距离变换就是将二值图像转换为灰度图像的过程。在二值图像中,通常将图像分为前景图像和背景图像,假设目标图像的像素为1为白色,背景图像的像素为0为黑色。在转换后的灰度图像中每个连通域中的像素的灰度级,与该像素点到其背景像素点的最近距离有关。
假设一个二值图像的包含一个连通区域S,其中有目标O和背景B,距离为D,则距离变换的定义如下:
这里写图片描述

其中disf()为距离函数,如果用欧拉距离公式表示,如下:
这里写图片描述

对距离的计算可采用两个模板,分别为向前和向后模板,如下图所示。
这里写图片描述

计算步骤如下:
1.使用向前模板,对图像从上到下,从左到右进行扫描,模板中心0点对应的像素值如果为0则跳过,如果为1则计算模板中每个元素与其对应的像素值的和,分别为sum1,sum2,sum3,sum4,sum5,而中心像素为这五个值中的最小值。
2.使用向后模板,对图像从下到上,从右到左进行扫描,方法同上。
3.一般我们使用的模板为3*3或5*5,分别如下图所示:
这里写图片描述
bwdist函数用于计算元素之间的距离。
如果a=这里写图片描述,那么[D,L]=bwdist(a);
D=这里写图片描述,L=这里写图片描述
其中,D表示零元素所在位置靠近非零元素的最短距离。L表示该元素所靠近的非零元素的位置,matlab中,元素所在的位置标号,是按列来计算的。比如a中各元素的索引值如下:
这里写图片描述
棋盘距离变换的代码,(在二值图像中)
T=bwdist(F,’chessboard’);
%(x1,y1) 和 (x2,y2)的棋盘距离是 (│x1 – x2│,│y1 – y2│)的最大值.

2013-10-17 21:06:43 zsjhxl 阅读数 4446
  • 图像轮廓计算

    掌握OpenCV核心模块,熟练使用相关API 理解各个API背后的相关算法原理,每个参数意义 有能力解决使用应用场景问题,大量工程代码经验分享 掌握图像处理与视频分析,图像分析与测量编码与开发技巧

    80人学习 贾志刚
    免费试看
形状特征

  (一)特点:各种基于形状特征的检索方法都可以比较有效地利用图像中感兴趣的目标来进行检索,但它们也有一些共同的问题,包括:①目前基于形状的检索方法还缺乏比较完善的数学模型;②如果目标有变形时检索结果往往不太可靠;③许多形状特征仅描述了目标局部的性质,要全面描述目标常对计算时间和存储量有较高的要求;④许多形状特征所反映的目标形状信息与人的直观感觉不完全一致,或者说,特征空间的相似性与人视觉系统感受到的相似性有差别。另外,从 
2-D 图像中表现的 3-D 物体实际上只是物体在空间某一平面的投影,从 2-D 图像中反映出来的形状常不是 3-D 
物体真实的形状,由于视点的变化,可能会产生各种失真。

(二)常用的特征提取与匹配方法

Ⅰ几种典型的形状特征描述方法

通常情况下,形状特征有两类表示方法,一类是轮廓特征,另一类是区域特征。图像的轮廓特征主要针对物体的外边界,而图像的区域特征则关系到整个形状区域。

几种典型的形状特征描述方法:

(1)边界特征法该方法通过对边界特征的描述来获取图像的形状参数。其中Hough 
变换检测平行直线方法和边界方向直方图方法是经典方法。Hough 
变换是利用图像全局特性而将边缘像素连接起来组成区域封闭边界的一种方法,其基本思想是点—线的对偶性;边界方向直方图法首先微分图像求得图像边缘,然后,做出关于边缘大小和方向的直方图,通常的方法是构造图像灰度梯度方向矩阵。

(2)傅里叶形状描述符法

傅里叶形状描述符(Fourier 
shape 
descriptors)基本思想是用物体边界的傅里叶变换作为形状描述,利用区域边界的封闭性和周期性,将二维问题转化为一维问题。

由边界点导出三种形状表达,分别是曲率函数、质心距离、复坐标函数。

(3)几何参数法

形状的表达和匹配采用更为简单的区域特征描述方法,例如采用有关形状定量测度(如矩、面积、周长等)的形状参数法(shape 
factor)。在 QBIC 
系统中,便是利用圆度、偏心率、主轴方向和代数不变矩等几何参数,进行基于形状特征的图像检索。

需要说明的是,形状参数的提取,必须以图像处理及图像分割为前提,参数的准确性必然受到分割效果的影响,对分割效果很差的图像,形状参数甚至无法提取。

(4)形状不变矩法

利用目标所占区域的矩作为形状描述参数。

(5)其它方法

近年来,在形状的表示和匹配方面的工作还包括有限元法(Finite 
Element Method 或 FEM)、旋转函数(Turning Function)和小波描述符(Wavelet 
Descriptor)等方法。

Ⅱ 基于小波和相对矩的形状特征提取与匹配

  
该方法先用小波变换模极大值得到多尺度边缘图像,然后计算每一尺度的 7个不变矩,再转化为 10 
个相对矩,将所有尺度上的相对矩作为图像特征向量,从而统一了区域和封闭、不封闭结构。
2019-03-25 20:13:03 tomy2426214836 阅读数 102133
  • 图像轮廓计算

    掌握OpenCV核心模块,熟练使用相关API 理解各个API背后的相关算法原理,每个参数意义 有能力解决使用应用场景问题,大量工程代码经验分享 掌握图像处理与视频分析,图像分析与测量编码与开发技巧

    80人学习 贾志刚
    免费试看

在我的理解里,要实现计算机视觉必须有图像处理的帮助,而图像处理倚仗与模式识别的有效运用,而模式识别是人工智能领域的一个重要分支,人工智能与机器学习密不可分。纵观一切关系,发现计算机视觉的应用服务于机器学习。各个环节缺一不可,相辅相成。

计算机视觉(computer vision):用计算机来模拟人的视觉机理获取和处理信息的能力。就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,用电脑处理成为更适合人眼观察或传送给仪器检测的图像。

计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取‘信息’的人工智能系统。计算机视觉的挑战是要为计算机和机器人开发具有与人类水平相当的视觉能力。

机器视觉需要图象信号,纹理和颜色建模,几何处理和推理,以及物体建模。一个有能力的视觉系统应该把所有这些处理都紧密地集成在一起。

图像处理(image processing):用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。

图像处理一般指数字图像处理。数字图像是指用数字摄像机、扫描仪等设备经过采样和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值。

图像处理技术的主要内容包括图像压缩,增强和复原,匹配、描述和识别3个部分。常见的处理有图像数字化、图像编码、图像增强、图像复原、图像分割和图像分析等。

模式识别(Pattern Recognition)是指对表征事物或现象的各种形式的(数值的、文字的和逻辑关系的)信息进行处理和分析,以对事物或现象进行描述、辨认、分类和解释的过程,是信息科学和人工智能的重要组成部分。

模式识别又常称作模式分类,从处理问题的性质和解决问题的方法等角度,模式识别分为有监督的分类(Supervised Classification)和无监督的分类(Unsupervised Classification)两种。模式还可分成抽象的和具体的两种形式。前者如意识、思想、议论等,属于概念识别研究的范畴,是人工智能的另一研究分支。我们所指的模式识别主要是对语音波形、地震波、心电图、脑电图、图片、照片、文字、符号、生物传感器等对象的具体模式进行辨识和分类。

模式识别研究主要集中在两方面:

一是研究生物体(包括人)是如何感知对象的,属于认识科学的范畴;

二是在给定的任务下,如何用计算机实现模式识别的理论和方法。

应用计算机对一组事件或过程进行辨识和分类,所识别的事件或过程可以是文字、声音、图像等具体对象,也可以是状态、程度等抽象对象。这些对象与数字形式的信息相区别,称为模式信息。

模式识别与统计学、心理学、语言学、计算机科学、生物学、控制论等都有关系。它与人工智能、图像处理的研究有交叉关系。

机器学习(Machine Learning)是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。

机器学习在人工智能的研究中具有十分重要的地位。一个不具有学习能力的智能系统难以称得上是一个真正的智能系统,但是以往的智能系统都普遍缺少学习的能力。随着人工智能的深入发展,这些局限性表现得愈加突出。正是在这种情形下,机器学习逐渐成为人工智能研究的核心之一。它的应用已遍及人工智能的各个分支,如专家系统、自动推理、自然语言理解、模式识别、计算机视觉、智能机器人等领域。

机器学习的研究是根据生理学、认知科学等对人类学习机理的了解,建立人类学习过程的计算模型或认识模型,发展各种学习理论和学习方法,研究通用的学习算法并进行理论上的分析,建立面向任务的具有特定应用的学习系统。这些研究目标相互影响相互促进。

人类研究计算机的目的,是为了提高社会生产力水平,提高生活质量,把人从单调复杂甚至危险的工作中解救出来。今天的计算机在计算速度上已经远远超过了人,然而在很多方面,特别是在人类智能活动有关的方面例如在视觉功能、听觉功能、嗅觉功能、自然语言理解能力功能等等方面,还不如人。

这种现状无法满足一些高级应用的要求。例如,我们希望计算机能够及早地发现路上的可疑情况并提醒汽车驾驶员以避免发生事故,我们更希望计算机能帮助我们进行自动驾驶,目前的技术还不足以满足诸如此类高级应用的要求,还需要更多的人工智能研究成果和系统实现的经验。

什么是人工智能呢?

人工智能,是由人类设计并在计算机环境下实现的模拟或再现某些人智能行为的技术。一般认为,人类智能活动可以分为两类:感知行为与思维活动。模拟感知行为的人工智能研究的一些例子包括语音识别、话者识别等与人类的听觉功能有关的“计算机听觉”,物体三维表现的形状知识、距离、速度感知等与人类视觉有关的“计算机视觉”,等等。模拟思维活动的人工智能研究的例子包括符号推理、模糊推理、定理证明等与人类思维有关的“计算机思维”,等等。

从图像处理和模式识别发展起来的计算机视觉研究对象之一是如何利用二维投影图像恢复三维景物世界。计算机视觉使用的理论方法主要是基于几何、概率和运动学计算与三维重构的视觉计算理论,它的基础包括射影几何学、刚体运动力学、概率论与随机过程、图像处理、人工智能等理论。

计算机视觉要达到的基本目的有以下几个:

(1) 根据一幅或多幅二维投影图像计算出观察点到目标物体的距离;

(2) 根据一幅或多幅二维投影图像计算出目标物体的运动参数;

(3) 根据一幅或多幅二维投影图像计算出目标物体的表面物理特性;

(4) 根据多幅二维投影图像恢复出更大空间区域的投影图像。

计算机视觉要达到的最终目的是实现利用计算机对于三维景物世界的理解,即实现人的视觉系统的某些功能。

在计算机视觉领域里,医学图像分析、光学文字识别对模式识别的要求需要提到一定高度。又如模式识别中的预处理和特征抽取环节应用图像处理的技术;图像处理中的图像分析也应用模式识别的技术。在计算机视觉的大多数实际应用当中,计算机被预设为解决特定的任务,然而基于机器学习的方法正日渐普及,一旦机器学习的研究进一步发展,未来“泛用型”的电脑视觉应用或许可以成真。

人工智能所研究的一个主要问题是:如何让系统具备“计划”和“决策能力”?从而使之完成特定的技术动作(例如:移动一个机器人通过某种特定环境)。这一问题便与计算机视觉问题息息相关。在这里,计算机视觉系统作为一个感知器,为决策提供信息。另外一些研究方向包括模式识别和机器学习(这也隶属于人工智能领域,但与计算机视觉有着重要联系),也由此,计算机视觉时常被看作人工智能与计算机科学的一个分支。

机器学习是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演译。

为了达到计算机视觉的目的,有两种技术途径可以考虑。

第一种是仿生学方法,即从分析人类视觉的过程入手,利用大自然提供给我们的最好参考系——人类视觉系统,建立起视觉过程的计算模型,然后用计算机系统实现之。

第二种是工程方法,即脱离人类视觉系统框框的约束,利用一切可行和实用的技术手段实现视觉功能。此方法的一般做法是,将人类视觉系统作为一个黑盒子对待,实现时只关心对于某种输入,视觉系统将给出何种输出。

这两种方法理论上都是可以使用的,但面临的困难是,人类视觉系统对应某种输入的输出到底是什么,这是无法直接测得的。而且由于人的智能活动是一个多功能系统综合作用的结果,即使是得到了一个输入输出对,也很难肯定它是仅由当前的输入视觉刺激所产生的响应,而不是一个与历史状态综合作用的结果。

不难理解,计算机视觉的研究具有双重意义。

其一,是为了满足人工智能应用的需要,即用计算机实现人工的视觉系统的需要。这些成果可以安装在计算机和各种机器上,使计算机和机器人能够具有“看”的能力。
其二,视觉计算模型的研究结果反过来对于我们进一步认识和研究人类视觉系统本身的机理,甚至人脑的机理,也同样具有相当大的参考意义。

图像特征提取总结

阅读数 42454

关于图像特征提取

阅读数 126963