特征描述算子评测

特征描述算子评测
特征描述算子评测

Feature descriptor comparison report

Sharing my research work of behavior of several types of feature descriptors. This article is an update of old "Comparison of feature descriptors" post. I've added a brand new ORB feature descriptor to the test suite, also SIFT descriptor included as well. And a new version of LAZY descriptor present in this test too.

For this test i have written special test framework, which allows me to easily add the new kind of descriptors and test cases and generate report data in CSV-like format. Than i upload it in Google docs and create this awesome charts. Five quality and one performance test was done for each kind of descriptor.

o Rotation test - this test shows how the feature descriptor depends on feature orientation.

o Scaling test - this test shows how the feature descriptor depends on feature size.

o Blur test - this test shows how the feature descriptor is robust against blur.

o Lighting test - this test shows how the feature descriptor is robust against lighting.

o Pattern detection test - this test performs detection of planar平面object (image) on the real video. In contrast to the synthetic综合tests, this test gives

a real picture of the overall stability of the particular descriptor.

o Performance test is a measurement of description extraction time.

All quality tests works in similar way. Using a given source image we generate a synthetic test data: transformed images corresponding feature points. The transformation algorithm depends on the particular test. For the rotation test case, it's the rotation of the source image around it's center for 360 degrees, for scaling - it's resizing of image from 0.25X to 2x size of original. Blur test uses gaussian blur with several steps and the lighting test changes the overall picture brightness.

The pattern detection test deserves a special attention. This test is done on very complex and noisy video sequence. So it's challenging task for any feature descriptor algorithm to demonstrate a good results in this test.

The metric for all quality tests is the percent of correct matches between the source image and the transformed one. Since we use planar object, we can easily select the inliers from all matches using the homography estimation. I use OpenCV's function cvFindHomography for this. This metric gives very good and stable results. I do no outlier detection of matches before homography estimation because this will affect the results in unexpected way. The matching of descriptors is done via brute-force matching from the OpenCV.

In this test i obtain pretty expectable results, because all descriptors are rotation invariant expect the BRIEF. Slight changes in stability can be explained by the feature orientation calculation algorithm and descriptor nature. A detailed study of why the descriptor behaves exactly as it is, takes time and effort. It's a topic for another article. Maybe later on....

SURF and SIFT descriptors demonstrate us very good stability in this test because they do expensive keypoint size calculation. Other descriptors uses fixed-size descriptor and you

can see what it leads to. Currently for LAZY descriptor i do not have separate LAZY feature detector (i use ORB detector for tests) but I'm thinking on lightweight feature detector with feature size calculation, because it's a must-have feature. Actually, scale invariance is much more important rather than precise orientation calculation.

In this test i tried to simulate the motion blur which can occurs if camera moves suddenly. All descriptors demonstrate good results in this test. By “good” I mean that the more blur size is applied the less percent of correct matches is obtained. Which is expected behavior.

In lighting test the transformed images differs only in overall image brightness. All kinds of descriptors works well in this case. The major reason is that all descriptors extracted normalized, e.g the norm_2 of the descriptor vector equals 1. This normalization makes descriptor invariant to brightness changes.

Detection of the object on real video is the most complex task since ground truth contains rotation, scaling a nd motion blur. Also other objects are also present. And finally, it’s not

HD quality. These conditions are dictated by the actual conditions of application of computer vision.

As you can see on diagram, the SIFT and SURF descriptors gives the best results, nevertheless they are far away from ideal, it’s quite enough for such challenging video. Unfortunately, scale-covariant descriptors show very bad results in this test because pattern image appears in 1:1 scale only at the beginning of the video (The “spike” near frame 20). On the rest of the video sequence target object moves from the camera back and scale-covariant descriptors can’t handle this situation.

This chart shows the extraction time for N features. I made Y-axis as logarithm scale to make it more readable. For all descriptor extraction algorithm the extraction time depends on number of features linearly. Local spikes is probably caused by some vector resizing or L2 cache misses. This performance test was done on Mac Book Pro 2.2 with Core 2 Duo 2.13 Ghz.

Add new quality test cases. One additional test i know for sure - affine transformations. Your ideas for other tests are welcome!

o Add new kind of descriptors. Definitely will add an A-SIFT implementation.

o Create an LAZY detector with feature size and orientation estimation.

o Improve the LAZY descriptor extraction procedure. Expect at least 20% performance gain.

o Generate matching video for each test to demonstrate the behavior of each descriptor algorithm.

特征描述算子评测

Feature descriptor comparison report Sharing my research work of behavior of several types of feature descriptors. This article is an update of old "Comparison of feature descriptors" post. I've added a brand new ORB feature descriptor to the test suite, also SIFT descriptor included as well. And a new version of LAZY descriptor present in this test too. For this test i have written special test framework, which allows me to easily add the new kind of descriptors and test cases and generate report data in CSV-like format. Than i upload it in Google docs and create this awesome charts. Five quality and one performance test was done for each kind of descriptor. o Rotation test - this test shows how the feature descriptor depends on feature orientation. o Scaling test - this test shows how the feature descriptor depends on feature size. o Blur test - this test shows how the feature descriptor is robust against blur. o Lighting test - this test shows how the feature descriptor is robust against lighting. o Pattern detection test - this test performs detection of planar平面object (image) on the real video. In contrast to the synthetic综合tests, this test gives a real picture of the overall stability of the particular descriptor. o Performance test is a measurement of description extraction time. All quality tests works in similar way. Using a given source image we generate a synthetic test data: transformed images corresponding feature points. The transformation algorithm depends on the particular test. For the rotation test case, it's the rotation of the source image around it's center for 360 degrees, for scaling - it's resizing of image from 0.25X to 2x size of original. Blur test uses gaussian blur with several steps and the lighting test changes the overall picture brightness. The pattern detection test deserves a special attention. This test is done on very complex and noisy video sequence. So it's challenging task for any feature descriptor algorithm to demonstrate a good results in this test. The metric for all quality tests is the percent of correct matches between the source image and the transformed one. Since we use planar object, we can easily select the inliers from all matches using the homography estimation. I use OpenCV's function cvFindHomography for this. This metric gives very good and stable results. I do no outlier detection of matches before homography estimation because this will affect the results in unexpected way. The matching of descriptors is done via brute-force matching from the OpenCV.

图像局部特征描述子研究分析(未完-待续)

研究背景 在日常生活中,我们主要依赖于视觉来感知外界的信息,比起听觉,视觉能给我们更加丰富的描述。人们一直想通过计算机视觉来描述视觉信息中有意义和有用的东西。首先,我们必须回答什么类型的信息是我们想要的?如何提取这样的特征信息?有人定义视觉为发现图像是什么和在哪里的过程,这强调了视觉是一个信息处理任务[]。而如何构建一个视觉系统来进行这样的信息处理任务是很多学者研究的问题之一。其中,达成统一共识是利用不同的特征层来构建这一个视觉模型系统,最简单的三层体系结构为低层、中层、高层。而本文基于最基本的图像描述方法——尺度的概念,利用尺度空间表示法来分析最低层图像数据。尺度空间方法是一种尺度参数连续、不同尺度空间下采样保持一致性的视觉多尺度分析。 视觉多尺度分析是一种新的视觉信息处理方法,其基本思想是:当我们用眼睛观察物体且物体和观察者之间的距离(将距离视为尺度参数)不断变化时,视网膜将感知到不断变化的图像信息,分析和综合这些不同尺度下的视觉信息以获得被观察物体的本质特征,这种视觉分析方法即称为视觉多尺度分析。 尺度空间方法的基本思想是:在视觉信息(图像信息)处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得不同尺度下的视觉处理信息,然后综合这些信息以深入地挖掘图像的本质特征。尺度空间方法将传统的单尺度视觉信息处理技术纳入尺度不断变化的动态分析框架中,因此更容易获得图像的本质特征。 为什么要研究尺度空间?可以从以下几个通俗的描述来说明: 1)现实世界的物体由不同尺度的结构所组成; 2)在人的视觉中,对物体观察的尺度不同,物体的呈现方式也不同; 3)对计算机视觉而言,无法预知某种尺度的物体结构是有意义的,因此有必要将所有尺度的结构表示出来; 4)从测量的角度来说,对物体的测量数据必然是依赖于某个尺度的,例如温度曲线的采集,不可能是无限的,而是在一定温度范围进行量化采集。温度范围即是选择的尺度; 5)采用尺度空间理论对物体建模,即将尺度的概念融合入物理模型之中。 尺度空间数学定义表示如下: 设多尺度分析的初始图像为0()u x (x , 为图像区域),(,)u x t 为多尺度分析用于图像所获得的在尺度(0)t t 时的图像,称0:()(,)t T u x u x t 为尺度空间算子,尺度空间算子族 0t t T 为尺度空间,并称为0:()(,)t h T u x t u x t h 尺度由t 变化到t h 的尺度空间算子。 依据尺度空间公理,尺度空间算子应满足如下定义的视觉不变性: 定义2 设t T 为尺度空间算子,称t T 具有

Moravec算子特征提取

点特征提取编程实习报告 一.实习简介 本次实习利用VC++6.0编程实现了对8位BMP灰度图像的读取、显示,并用Moravec算子对图像进行点特征的提取。 二.程序设计 1.用MFC创建一个多文档程序框架,用来显示BMP图像: 2.为该程序框架添加菜单: 3.创建一个对话框输入参数: 4.最后提取结果可以显示在视图中:

三.程序框图及核心代码Array 分别定义四个函数计算四个方向的灰度差平方和:

提取特征点: 实验结果分析

1、下图中阈值为8000,窗口大小从上到下从左到右分别为9*9、7*7、5*5、3*3。可 以看出随着窗口的增大,提取到的特征点个数越来越少,但是精度提高,可以防止将噪声提取出来。 2、下图中窗口大小为9,阈值从左到右从上到下分别为20000、15000、10000、5000。 可以看出,随着阈值的增大,能投提取到的特征点越来越少,只有灰度变化十分剧烈的点才能被提取出来,如下图中左上角是阈值为20000时的提取结果,可以发现没有提取出任何特征点。。

实习总结 Moravec 算子是点特征提取算子中的经典算子之一,它具有计算量小, 不丢失灰度信息等优点。用该算子提取特征点时阈值的选取直接影响着提取结果。如本次实习过程中所用的图像是武汉地区的TM影像,这幅影像的灰度范围很小,所以阈值不宜取得过大,否则会丢失很多特征点,如:当阈值选为20000时,没有提取出任何特征点。为了验证对比度对特征点提取的影响,我用Photoshop对图像做了一个对比度的增强,之后用5*5的窗口和10000的阈值对其进行特征点的提取并与原图像的提取结果做了对比,发现增强了对比度的图像中提取出的特 征点确实比原图像中的特征点多,如下图:

forstner算子提取特征点

Forstner算子提取特征点(原创) ;------------------------------ ;Forstner算子 ;; image:输入原始图像 ; vwsize:窗口宽度 ; ithresh:初选差分阈值 ; qthresh:兴趣值阈值 function Forstner,image,vwsize=vwsize,ithresh=ithresh,Tq=Tq IF N_Elements(vwsize) eq 0 THEN vwsize=5 IF N_Elements(ithresh) eq 0 THEN ithresh=50 IF N_Elements(Tq) eq 0 THEN Tq=0.5 image=float(image) imgSize = Size(image, /Dimensions) xsize=imgSize[0] ysize=imgSize[1] ;灰度的协方差矩阵 result=fltarr(xsize,ysize) ;第一步:利用差分算子提取初选点

for i=1,xsize-2 do begin for j=1,ysize-2 do begin dg1=abs(image[i,j]-image[i+1,j]) dg2=abs(image[i,j]-image[i,j+1]) dg3=abs(image[i,j]-image[i-1,j]) dg4=abs(image[i,j]-image[i,j-1]) dg=[dg1,dg2,dg3,dg4] temp=dg[sort(dg)] if temp[2] gt ithresh then begin result[i,j]=255 endif else begin result[i,j]=0 endelse endfor endfor ;第二步:在以初选点为中心的3*3的窗口中计算协方差矩阵与圆度 ;此处可用where提高循环效率 ;权重矩阵 wMatrix=fltarr(xsize,ysize) for i=1,xsize-2 do begin for j=1,ysize-2 do begin ;是初选点 if result[i,j] eq 255 then begin gu2=0.0 & gv2=0.0 & guv=0.0 for ii=-1,1 do begin for jj=-1,1 do begin gu2=gu2+(image[i+1,j+1]-image[i,j])^2 gv2=gv2+(image[i,j+1]-image[i+1,j])^2 guv=guv+(image[i+1,j+1]-image[i,j])*(image[i,j+1]-image[i+1,j]) endfor endfor DetN=gu2*gv2-guv trN=gu2+gv2 q=4*DetN/(trN*trN) ;第三步:设定阈值Tq,若满足则计算权值 if q gt Tq then wMatrix[i,j]=DetN/trN endif

图像处理特征不变算子系列之DoG算子(五)

图像处理特征不变算子系列之DoG算子(五) 时间 2013-09-12 00:24:07 CSDN博客原 文https://www.360docs.net/doc/161731179.html,/kezunhai/article/details/11403733 图像处理特征不变算子系列之DoG算子(五) kezunhai@https://www.360docs.net/doc/161731179.html, https://www.360docs.net/doc/161731179.html,/kezunhai 在前面分别介绍了:图像处理特征不变算子系列之Moravec算子(一)、图像处理特征不变算子系列之Harris算子(二)、图像处理特征不变算子系列之SUSAN算子(三)和图像处理特征不变算子系列之FAST算子(四)。今天我们将介绍另外一个特征检测算子---DoG算子,DoG算子是 由 Lowe D.G. 提出的,对噪声、尺度、仿射变化和旋转等具有很强的鲁棒性,能够提供更丰富的局部特征信息,本文将对DoG算子进行详细地分析。 在开始介绍DoG之前,有必要对尺度空间有一定的了解。尺度空间最早是由Tony Lindeberg提出的,并不断的发展和完善。日常生活中,我们自觉或不自觉的在使用尺度的概念。举个我们个人自觉的经历,当我们读小学的时候,同学间互相询问来自哪个组;当我们读中学的时候,同学们互相询问自哪个村;当我们读高中的时候,同学们互相询问来自哪个镇;当读大学的时候,同学们互相询问来自哪个省?这里的组、村、镇、省就是我们不自觉使用的尺寸。还有一个例子,当我们打开google地图的时候,随着鼠标的滚动,地图会由五大洲逐渐定位到国家--》省---》市---》区---》街道办等,这也是尺度的表现。 1)尺度空间 在尺度空间中,尺度越大图像就越模糊,尺度空间中各尺度图像的模糊程度逐渐变大,能够模拟目标由远及近人对目标的感知过程。那为什么要讨论尺度空间呢?因为在用机器视觉系统分析未知场景时,机器并不知道图像中物体的尺度,只有通过对图像的多尺度描述,才能获得对物体感知的最佳尺度。如果在不同尺度上,对输入的图像都能检测到相同的关键点特征,那么在不同尺度下也可以实现关键点的匹配,从而实现关键点的尺度不变特性。尺度空间描述的就是图像在不同尺度下的描述,如果对尺度空间有兴趣,请参考Tony Lindeberg的论文:Scale-Space。 2)金字塔多分辨率 常常有人会将DoG与图像金字塔弄混,从而导致对SIFT算法第一步构造DoG不甚理解。这里首先介绍下金字塔多分辨率。金字塔是早起图像多尺度的表示形式,图像金字塔一般包括2个步骤,分别是使用低通滤波平滑图像;对图像进行降采样(也即图像缩小为原来的1/4,长宽高缩小为1/2),从而得到一系列尺寸缩小的图像。金字塔的构造如下所示:

LBP算子介绍

LBP算子介绍 LBP(Local Binary Pattern,局部二值模式)是一种用来描述图像局部纹理特征的算子;显然,它的作用是进行特征提取,而且,提取的特征是图像的纹理特征,并且,是局部的纹理特征; 原始的LBP算子定义为在3*3的窗口内,以窗口中心像素为阈值,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3*3领域内的8个点可产生8bit的无符号数,即得到该窗口的LBP值,并用这个值来反映该区域的纹理信息。如下图所示: 原始的LBP提出后,研究人员不断对其提出了各种改进和优化,从而得到了诸如半 径为R的圆形区域内含有P个采样点的LBP算子;LBP均匀模式;LBP旋转不变模式;LBP等价模式等等,具体请参考T. Ojala在IEEE TPAMI上2002年发表的那篇文章“Multiresolution Gray-Scale and Rotation Invariant Texture Classification with Local Binary Pat terns”。另外,LBP算子的中文参考文章,可以参考以下: (1)基于LBP的人脸识别研究,黄非非,重庆大学硕士毕业论文,2009年 (2)基于LBP的特征提取研究,王玲,北京交通大学硕士毕业论文,2009年 (3)基于局部二值模式的人脸识别方法研究,周凯,中南大学硕士毕业论文,2009年 显而易见的是,上述提取的LBP算子在每个像素点都可以得到一个LBP“编码”,那么,对一幅图像提取其原始的LBP算子之后,得到的原始LBP特征依然是“一幅图片”。不过,这里我们已经将物体从图片(图片可以理解为物体在原始测量空间得到的测量特征)转换为二次特征,也就是得到了我们通常说的“特征”。不过,这个所谓的“特征”并不能直接用于判别分析。因为,从上面的分析我们可以看出,这个“特征”跟位置信息是紧密相关的。直接对两幅图片提取这种“特征”,并进行判别分析的话,会因为“位置没有对准”而产生很大的误差。后来,研究人员发现,可以将一幅图片划分为若干的子区域,对每个子区域内的每个像素点都提取LBP特征,然后,在每个子区域内建立LBP特征的统计直方图。如此一来,每个子区域,就可以用一个统计直方图来进行描述;整个图片就由若干个统计直方图组成;例如:一幅100*100像素大小的图片,划分为10*10=100个子区域,每个子区域的大小为10*10像素;在每个子区域内的每个像素点,提取其LBP特征,然后,建立统

Moravec算子特征提取

点特征提取编程实习报告 实习简介 本次实习利用VC++6.0编程实现了对8位BMP灰度图像的读取、显示,并用Moravec 算子对图像进行点特征的提取。 程序设计 1.用MFC创建一个多文档程序框架,用来显示BMP图像: 0 073 - [ZM.BMP] 一= “ 一=. I亘災 2.为该程序框架添加菜单: 特征提取窗口帶助[ 3.创建一个对话框输入参数: 4.最后提取结果可以显示在视图中:

程序框图及核心代码 Value〉阈 值 在该像素处画上十字丝

提取特征点: BOOL CDib::llorauec(int size,int limit) if(ll_pBHI= = NULL) "屮向位图指针是否为空,若为空,说明役有谄数据,程序返回return FALSE: UORD wBitCnunt =m_pBMI->bniHeader.biBitCount; "得到影像的莓个像素所占比特数if(wBitCount?=8) < AFxlle SSageB ox(-该分类方袪只能处理目位图橡!”); return FALSE: } int nWidth=n_pBM[->bniHeader,biMidtn: int nlleight-ri」RH[-〉bniHE3dE?r .biUEight; "我得愚像的宽厅和高度 ±nt Wi(lthej|tes=WIDTH8VTES(nWidth>24);"快耳丿爭槪厨亍的买际程悔融 LPBVTE IpD.ta-iijaits; 义宇符扌謝菱量,用来慄存範图窮四彎芬起始地址int k=size/2; (W BitCount-=8)"如果是P位桩图,则开始握取特征点 < int i f j: nu(n=0; int ul T V2,u3,u4,uaiue; for (i=k;ii)); value-=Rin(iid.n(v1 B v2) B nd.n(v9 t v4}); if (ualue>limit) {"若兴趣值大于阈值将点的坐标存入数组“和 ual[nLin] ?x=j; ual[niin] .i|=i; nun++;

关于图像处理中特征点描述算子的一点总结

关于图像处理中特征点描述算子的一点总结 1.SIFt算子SIFT算子是David G Lowe在2004提出的,即尺度不变特征变换(Scale Invariant Feature Transform)。它是以尺度空间的构造为基础的局部特征描述算子,对于图像的缩放、旋转和放射变换等具有不变性。SIFT算子在构建好的尺度空间的基础上搜索尺度空间中的极值点(特征点),然后确定极值点的尺度信息以及位置,再确定极值点的方向(其邻域梯度的主方向),最终可以得到具有鲁棒性的128维(4*4*8)的特征描述子。 2.surf特征 SURF(Speed-Up Robust Features

图像处理特征不变算子系列之SUSAN算子(三)

像处理特征不变算子系列之SUSAN算子(三) 作者:飛雲侯相发布时间:September 13, 2014 分类:图像特征算子 在前面分别介绍了:图像处理特征不变算子系列之Moravec算子(一)和图像处理特征不变算子系列之Harris算子(二)。今天我们将介绍另外一个特征检测算子---SUSAN算子。SUSAN 算子很好听的一个名字,其实SUSAN算子除了名字好听外,她还很实用,而且也好用,SUSAN 的全名是:Smallest Univalue Segment Assimilating Nucleus,关于这个名词的翻译国内杂乱无章,如最小核值相似区、最小同值收缩核区和最小核心值相似区域等等,个人感觉这些翻译太过牵强,我们后面还是直接叫SUSAN,这样感觉亲切,而且上口。 SUSAN算子是一种高效的边缘和角点检测算子,并且具有结构保留的降噪功能(structure preserving noise reduction )。那么SUSAN是什么牛气冲天的神器呢?不仅具有边缘检测、角点检测,还具备结构保留的降噪功能。下面就让我娓娓地为你道来。 1)SUSAN算子原理 为了介绍和分析的需要,我们首先来看下面这个图: 该图是在一个白色的背景上,有一个深度颜色的区域(dark area),用一个圆形模板在图像上移动,若模板内的像素灰度与模板中心的像素(被称为核Nucleus)灰度值小于一定的阈值,则认为该点与核Nucleus具有相同的灰度,满足该条件的像素组成的区域就称为USAN(Univalue Segment Assimilating Nucleus)。 接下来,我们来分析下上图中的五个圆形模的USAN值。对于上图中的e圆形模板,它完全处

Moravec算子提取特征点

using System; using System.Collections.Generic; using https://www.360docs.net/doc/161731179.html,ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using System.Drawing.Imaging; namespace 课程作业3_bk20113268 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } ///

/// 打开图像 /// /// /// private void button1_Click(object sender, EventArgs e) { //设置文件的类型 openFileDialog1.Filter = "*.jpg,*.jpeg,*.bmp,*.gif,*.ico,*.png,*.tif,*.wmf|*.jpg;*.jpeg;*.bmp;*.gif;*.ico;*.png;*.tif;*.wmf" ; if (openFileDialog1.ShowDialog() == DialogResult.OK) //打开文件对话框 { //根据文件的路径创建Image对象 Image myImage = System.Drawing.Image.FromFile(openFileDialog1.FileName); pictureBox1.Image = myImage; //显示打开的图片 pictureBox1.Height = myImage.Height;

机器视觉之Halcon算子--区域特征

Halcon算子--区域特征 当我们想要提取Region时,图像处理后,往往存在几个类似的Region,此时,需要根据Reg ion的一些特殊特征,来选择指定的Region。 求Region指定特征值:region_features(Regions : : Features : Value) 根据特征值选择区域:select_shape(Regions : SelectedRegions : Features, Operatio n, Min, Max : ) Region特征一览: 特征英译备area Area of the object 对象的面积 row Row index of the center 中心点的行坐标 column Column index of the center 中心点的列坐标 width Width of the region 区域的宽度 height Height of the region 区域的高度 row1 Row index of upper left corner 左上角行坐标 column1 Column index of upper left corner 左上角列坐标 row2 Row index of lower right corner 右下角行坐标 column2 Column index of lower right corner 右下角列坐标 circularity Circularity 圆度0 compactness Compactness 紧密度0 contlength Total length of contour 轮廓线总长 convexity Convexity 凸性 rectangularity Rectangularity 矩形度0 ra Main radius of the equivalent ellipse 等效椭圆长轴半径长度 rb Secondary radius of the equivalent ellipse 等效椭圆短轴半径长度 phi Orientation of the equivalent ellipse 等效椭圆方向 anisometry Anisometry 椭圆参数,Ra/Rb长轴与短轴的比值 bulkiness Bulkiness 椭圆参数,蓬松度π*Ra*Rb/A struct_factor Structur Factor 椭圆参数,

流体特征描述、检测理论总结

流场特征描述、检测理论总结报告 1.绪论 特征定义为数据中不同成分间相关性的表现模式,具有两方面的含义:“(1)矢量场中有意义的形状、结构、变化和现象,如涡流、激波等;(2)从数据场中分离出来的用户感兴趣的区域。” 。目前流场特征的分析方法有多种,大致可以归结为三类:基于图像处理、基于拓扑分析(即基于矢量场分析)以及基于物理特征方法[1],但主要是基于拓扑分析方法。 原因分析:流场特征结构概念的提出最原始就是基于拓扑分析方法,因此每个流场特征结构一般具有严格的数学定义,而不是像一般图像处理中的模式识别方法针对的目标对象,如人脸、指纹等不存在严格定义。因此拓扑分析仍然是最有效的流场特征提取方法。 缺点:并不是所有的流场结构都有严格的数学定义,譬如涡旋结构,在2D 空间中,源点、汇点以及中心点等对应的流场周围都符合涡旋的特征。 2.基本概念 为更好的描述矢量场,首先介绍如下基本概念[1]。 2.1 梯度 三维空间中,标量p 有三个偏微分算子。标量场的梯度这三个偏微分算子表示: {,,}p p p gradp p x y z ???=?=??? (1) 向量场v 的梯度可以通过应用梯度算子在其分量{u,v,w}上而计算。结果是 一个3*3矩阵,称作Jacobian 矩阵,或者一阶算子。 u u u x y z v v v v x y z w w w x y z ?? ??? ??????? ??????= ??????? ????? ?????? ? (2) 该矩阵可用来计算一些导数场,譬如散度(divergence ),旋度(curl),螺旋性(helicity),加速(acceleration),曲率(curvature)。速度场的旋度称作涡度(vorticity )。这些导数场暗示了流绕旋转轴旋转的强度。这些数量已被用于不同的特征抽取技术方面,将在下面介绍。 2.2 本征分析(Eigenanalysis) 另一种独立的数据技术是本征分析。一个3*3矩阵M 的特征值可以通过求解特征向量方程M x x λ= 求解得到。相应的x 称作特征向量。J 矩阵的特征向量和特征值暗示了流的正切曲线方向,被用来定义矢量拓扑,见下面定义。

图像处理特征不变算子系列之Moravec算子(一)

图像处理特征不变算子系列之Moravec算子(一) 分类:特征算子图像内容检索2013-09-06 20:18 1590人阅读评论(1) 收藏举报Moravec算子特征不变 论文转载请注明出处:https://www.360docs.net/doc/161731179.html,/kezunhai 1977年,Moravec提出了兴趣点(Points of Interests)的概念,并应用于解决Stanford Cart的导航问题。1981年, Moravec在International Joint Conference on Artificial Intelligence 发表了篇题为:Obstacle Avoidance and Navigation in the Real World by a Seeing Robot Rover的文章,并将其应用与立体匹配。本文将主要介绍Moravec算子的点特征提取的原理和过程。 Moravec的原理如果有一句话来说就是:通过滑动二值矩形窗口寻找灰度变化的局部最大值。具体来说主要包括四个过程: 1)滑动窗口计算灰度变化(Calculate intensity variantion from shifting windows) 滑动窗口在现有的技术中已经有了很多应用,如模板匹配、目标检测(hog特征的行人检测)等。在Moravec算子中,一般窗口的大小取3×3、5×5、7×7等等,但是随着窗口的增大,计算量也就越大。Moravec算子通过对窗口的水平、垂直和对角八个方向进行移动(Horizontally、Vertically and four diagonals),计算原窗口与滑动窗口差的平方和来得到灰度的变化。我们进一步通过下图一个3×3的滑窗来进行说明: 上图中,红色框表示的是原始框,而蓝色框表示向右上的滑动框,白色框表示前景255,黑色框表示背景0。那么原始框和滑动框的灰度变化通过对应位置差的平方和来表示,也即通过下式来计算:

Halcon算子介绍

图像、窗口基础操作部分 基础操作 dev_close_window() 关闭当前激活的窗口 read_image( : Image : FileName : ) 读取图像,可以支持多种格式,比如TIFF,PNG,JPEG-XR,JPEG-2000等,还支持一次性读取多个图像。 Image:输出,读取完后在halcon所存放的变量名 FileName:图片路径,可以是多个路径,可以是绝对路径或者相对路径,还可以省略扩展名 示例: * Reading an image: read_image(Image,'mreut') * Reading 3 images into an image array: read_image(Images,['ic0','ic1','ic2']) stop() 停止程序(等待用户继续运行) get_image_size(Image : : : Width, Height) 获取图像的尺寸 Image:要获取尺寸的图像 Width:输出,图像的宽度 Height:输出,图像的高度

dev_open_window( : : Row, Column, Width, Height, Background : WindowHandle) 打开一个新的图像窗口 Row:图像窗口左上角的起始行,默认0。(好像没什么用) Column:图像窗口左上角的起始列,默认0.(好像没什么用) Width:图像窗口的宽度,默认256 Height:图像窗口的高度,默认256 Background:新窗口的背景颜色,默认黑色(black) WindowHandle:窗口的识别Id dev_display(Object : : : ) 将图像显示到当前的图像窗口上 Object:要显示的图像对象 dev_set_draw( : : DrawMode : ) 设置Region的显示形式 DrawMode:区域的显示形式,默认'fill',可选'fill', 'margin',fill表示显示实心区域,margin 表示只显示区域的外边界 dev_set_color( : : ColorName : ) 设置输出颜色 ColorName:颜色名称,默认’white’,可选值(格式):'white', 'black', 'gray', 'red', 'green', 'blue', '#003075', '#e53019', '#ffb529' disp_message( : : WindowHandle, String, CoordSystem, Row, Column, Color, Box : ) 输出一段文字信息 WindowHandle:要显示文字的窗口handle String:要显示的文字信息,会显示在一个行里 CoordSystem:使用的坐标系,默认window,可选'window', 'image'

相关文档
最新文档