F R E A K 特 征 点 匹 配 算 法 介 绍 ( 2 0 2 0 )
三个描述符的比较:SURF,FREAK和BRISK=================分割线=================我认为从事对象识别,图像注册和使用关键点提取的其他领域的开发人员和研究人员可以发现这个帖子很有用。
最近(从2.4.2),一个新的特征描述符算法被添加到OpenCV库中。
据称FREAK描述符优于ORB和SURF描述符,但速度非常快(与ORB相当)。
也有人在我的博客上的评论提到BRISK描述符,这是比SURF更新,更高效。
那么,最后我找到一个时间来比较他们,并发表我的研究成果。
这篇文章与我过去的OpenCV比较报告非常相似。
虽然这些报告是多年前发表的,但它们还是有些实际的。
对于这个测试,我决定从头开始重写整个测试框架。
源代码即将可用。
但现在,让我解释我做了什么来找到最好的三种算法。
将图像转换为描述符的主要目标是什么?从像素域移动到更紧凑的表示形式相同的数据。
此外,我们希望我们的表示是旋转和比例不变的(例如,当源图像旋转或缩放时,表示保持不变或略微变化)。
SURF,FREAK和BRISK描述符宣称它们是旋转和尺度不变的。
========================分割线==============================就像在OpenCV比较报告中一样,测试应用程序与测试模式图像一起工作。
我们有四个基本的转换:旋转,缩放,模糊和亮度调整。
这里是如何旋转转换类看起来像:class ImageRotationTransformation : public ImageTransformationImageRotationTransformation(float startAngleInDeg, float endAngleInDeg, float step, cv::Point2f rotationCenterInUnitSpace): ImageTransformation("Rotation"), m_startAngleInDeg(startAngleInDeg), m_endAngleInDeg(endAngleInDeg), m_step(step),m_rotationCenterInUnitSpace(rotationCenterInUnitSpace) -- Fill the argumentsfor (float arg = startAngleInDeg; arg = endAngleInDeg; arg += step)m_args.push_back(arg);virtual std::vector getX() constreturn m_args;virtual void transform(float t, const cv::Mat source, cv::Mat result) constcv::Point2f center(source.cols * m_rotationCenterInUnitSpace.x, source.cols * m_rotationCenterInUnitSpace.y);cv::Mat rotationMat = cv::getRotationMatrix2D(center, t, 1);cv::warpAffine(source, result, rotationMat, source.size());private:float m_startAngleInDeg;float m_endAngleInDeg;float m_step;cv::Point2f m_rotationCenterInUnitSpace;std::vector m_args;其他类型的转换看起来相似。
但它显示了这个想法。
========================分割线==============================FeatureAlgorithm正如你可能知道的,当处理描述符时我们需要三个组件:特征检测器 - 从cv :: FeatureDetector派生的类,实现特定的检测算法。
例如,cv :: SurfFeatureDetector实现SURF文件中描述的检测算法。
描述符提取器 - 从cv :: DescriptorExtractor派生的类。
它从传递的关键点计算描述符。
cv :: SurfDescriptorExtractor将计算机的SURF描述符。
描述符匹配器 - cv :: FlannBasedMatcher类的cv :: BFMatcher的一个实例用于匹配两组描述符。
我们将这三个对象存储在FeatureAlgorithm类中:?class FeatureAlgorithmFeatureAlgorithm(std::string name, cv::FeatureDetector* d, cv::DescriptorExtractor* e, cv::DescriptorMatcher* m);std::string name;bool knMatchSupported;bool extractFeatures(const cv::Mat image, Keypoints kp, Descriptors desc) const;void matchFeatures(const Descriptors train, const Descriptors query, Matches matches) const;void matchFeatures(const Descriptors train, const Descriptors query, int k, std::vector matches) const;private:cv::FeatureDetector* detector;cv::DescriptorExtractor* extractor;cv::DescriptorMatcher* matcher;========================分割线==============================测试程序主要测试功能采用FeatureAlgorithm,Transformation和测试图像。
作为输出,我们返回每个运行的匹配统计信息列表。
这是一个简短的序列:将输入图像转换为灰度检测关键点并从输入灰度图像中提取描述符使用传递的转换算法生成所有变换的图像对于每个变换的图像:检测关键点并提取描述符匹配列车描述符和查询使用单应性估计将分段匹配到内点和外点计算统计数据(消耗时间,匹配百分比,正确匹配的百分比等)主循环使用OpenMP并行,在我的四核酷睿i5上,在测试的同时加载100%的所有内核。
特征算法:?algorithms.push_back(FeatureAlgorithm("SURF-BRISK-BF", new cv::SurfFeatureDetector(),new cv::BriskDescriptorExtractor(),new cv::BFMatcher(cv::NORM_HAMMING, true)));algorithms.push_back(FeatureAlgorithm("SURF-FREAK-BF", new cv::SurfFeatureDetector(),new cv::FREAK(),new cv::BFMatcher(cv::NORM_HAMMING, true)));algorithms.push_back(FeatureAlgorithm("SURF-SURF-BF", new cv::SurfFeatureDetector(),new cv::SurfDescriptorExtractor(),new cv::BFMatcher(cv::NORM_L2, true)));图像转换:transformations.push_back(new GaussianBlurTransform(9));transformations.push_back(newBrightnessImageTransform(-127, +127, 10));transformations.push_back(new ImageRotationTransformation(0, 360, 10, cv::Point2f(0.5f,0.5f)));transformations.push_back(new ImageScalingTransformation(0.25f, 2.0f, 0.1f));========================分割线==============================计算以下指标:匹配百分比?- 分割匹配的商数计算关键点的最小值,以两个百分数计算。
正确匹配的百分比?- 分配正确匹配的商数以百分比计总匹配数。
匹配比例?-匹配百分比*正确匹配百分比。
在所有图表中,我将使用Y轴的“匹配比率”(百分比)值。
========================分割线==============================运行所有测试后,我们收集每个转换和算法的统计信息。
特定转换算法的报表如下所示:Argument SURF-BRISK-BF SURF-FREAK-BF SURF-SURF-BF1 100 88.5965 82.67522 100 86.9608 79.16893 100 85.6069 70.67314 100 85.0897 64.90575 100 83.1528 59.47766 100 85.1648 58.97637 100 88.6447 59.30668 100 94.9109 64.80199 100 95.9707 69.1154为了制作图表,我使用Google Spreadsheets导入CSV表格并生成图表。
您可以在这里找到这个电子表格:?OpenCV2.4.9功能比较报告。
========================分割线=======================================================分割线==============================说明:原博文打开慢,请耐心等待,可能话需要翻墙。
===========================END========================== ==δmax=9.75δ,δmin=13.67δ,其中δ为特征点的尺度。
基于特征点匹配的图像拼接方法
提取 , 则计 算 量 会 过 于 庞 大 。 为此 在 进 行 SF 提 IT 取 特 征前应 先将 彩 色图转 变为 灰度 图 , 即采用 公式
fr a geH ti,teeo e ma et e woi g s ihh v n l df rn e du t ov ri o m n l mar x h rfr , k h t ma e c a ea ge iee c js et wh f a t — cl h oigpa e ial , si iga jse woi g sa cr igS F n rjcinag — a s o t ln .F n l mo ac n du tdt n y k ma e codn I a dpoet lo T o
抽样一致性去粗 算法求得 两幅图像 间的 H 矩 阵初值 , 并运 用迭代精 炼算法求 出 H 矩阵的精确值 , 用摄像 头预 先 利
拍摄好 的固定角度 的 图像 来得 到转换角度的 H 矩 阵, 而将 均具有 角度 差的 两幅图像调 整至垂直拍摄 的平 面, 从 最 后根据尺度 不变特征 变换 匹配算法及投影算法将调 整后 的 两幅 图像拼 接 。实验表 明, 本方 法简单 易行 , 可降低 具 有 角度 差的两幅图像 拼接 后的边缘变形 , 而改善拼接 质量 。 从 关键词 : 尺度不变特征 变换 匹配算法; 图像拼 接 ; 影矩 阵; 投 投影 变形 中图分 类号 : P 5 . T 7 11 文献标识码 : A 文章编 号 :0 7 2 4 2 1 )1 0 8 —0 1 0 —3 6 (0 2 0 — 0 7 5
析 图像 中 的多种 不 变量 , 从 多 方 面进 行 限制 与 筛 并 选 , 而在选 择候 选 特征 点 时充 分 根据 配准 的需 要 进
基于sift特征的图像匹配算法
21 .特征点方向的确定
利用特征点邻域像素的的梯 度方 向分布特征 ,为每
一
个特征点指定方 向参数 ,使算子具有 尺度不变性 。
mx )√ + y L 一) + , 1 L , l ( = l) ( 1) ) (Y , , 一 x , , +一 x— 0x )o n OyO L , 1/ ( 1)三 一) ) 9 , = 2 , -(y )( x ,一 O 1) ( ) y t t a +  ̄ -)L + ,) ,
22 * 个种子 点 ,每个 种子 点8 方 向 ,共可生 产3 个数 个 2
二 、算 法 实现 和 实验 结果
实验算法采用V 2 0 开发 。结果如下 : C 08 第一 组实 验 ,上 图是 由下 图放大 而来 ,且 ±
光 照 强 度 。两 幅 图 中
的箭 头 方 向代 表 了该 像 素 点 的梯 度 方 向 ,
LxYo =G xY ) (,) ( ) (,, ) (, ,o Ix 2
SF 特征匹配算法是Dai L we 0 4 IT vdG.o 在2 0 年总结了
现有 的基于不变量特征检测技术的基 础上 ,提出的一种
基于尺度空 间的,对 图像缩放 、旋转甚至仿 射变换保持
不 变性 的 图像 局部特 征描述算 法 。SF 特征是 图像 局 IT
骤 :1 特征点 的检测 ;2特 征 向量 的生成 ;3特 征 向 . 是 . .
量的匹配。
尺度对应 于图像 的概貌特征 ,小尺度对应于图像 的细节
特征 。选择 合适 的尺度 因子平 滑是建 立 尺度空 间 的关 键 。在这里 ,主要是建立高斯金字塔和D G( i ee c O D f rn e
1 . .
二次函数特点及应用
三、要充分利用抛物线“顶点”的作用.
1、要能准确灵活地求出“顶点” .形如y=a(x+h)2+K →顶点(-h,k),对于其它形式的二次函数,我们可化为顶点式而求出顶点.
列表:
x
-3
-2
-1
0
1
2
3
y
-3
-1.5
-1
-1.5
-3
-5.5
-9
描点,连线成如图13-11所示不能反映其全貌的图象。
正解:由解析式可知,图象开口向下,对称轴是x=-1,顶点坐标是(-1,-1)
列表:
x
ቤተ መጻሕፍቲ ባይዱ-4
-3
-2
-1
0
1
2
y
-5.5
-3
-1.5
-1
-1.5
-1.5
-5.5
描点连线:如图13-12
图13-11
例如,要研究抛物线L1∶y=x2-2x+3与抛物线L2∶y=x2的位置关系,可将y=x2-2x+3通过配方变成顶点式y=(x-1)2+2,求出其顶点M1(1,2),因为L2的顶点为M2(0,0),根据它们的顶点的位置,容易看出:由L2向右平移1个单位,再向上平移2个单位,即得L1;反之,由L1向左平移1个单位,再向下平移2个单位,即得L2.
活动步骤:①举例:x²=y;x²+1=y;x²+x=y;x²+x+1=y。②画直角坐标系;列表(找出(x,y));描点;连线。③小组一起观察图像并讨论他们的共同点。记下讨论结果。④利用统式(ax²+bx+c=y)证明讨论结果的必然性。
范特-霍夫规则
上限:1010 mol-1·dm3·s-1
2. 过渡状态理论的应用
A+B
(A:B)≠→P
非电解质溶液:
(G ) GS G0
k
k0
exp
(G RT
)
GS :溶剂S中的标准活化自由能
G0 : 基准溶剂中的标准活化自由能
电解质溶液:
ln A B Le2 (AB) RT
(1
k
k0
A B
(AB)
0. 35
900 3.9×10-4
▲ H +CCl4→HCl+CCl3 16
7
1400 5×10-3
▲ COCl +Cl→Cl2+CO 3.5 400
65 6.15
并不是在任何方位上的碰撞都会引起反应:
方位因素 NO2-C6H4-Br+OH- NO2-C6H4-OH+Br-
OH-必须与Br原子端碰撞→可能发生反应。 复杂分子传递能量需要时间:
A
RTe
exp(
r
S
)
hL
R
的振动频率
◆ A与活化熵变有关,与碰撞理论的结果相
比较得:P与活化熵有关;
◆ 若知道过渡状态的构型,就可计算k值。
——绝对速率理论
§5 液相反应和多相反应动力学分析
一、液相反应
多相反应
化学反应
气相反应
均相反应
液相反应
气态:分子间作用力可忽略→分子运动理论描述
晶态:质点排列有序
阿氏公式得:lnk~ (1/T)呈线性关系; 硬球碰撞理论得: ln(k/T1/2)~ (1/T)呈线性关系;
Ec —— 发生化学反应的最小临界能, Ec= Lε0
一种基于灰度投影块匹配算法的电子稳像方法
值 , 为 第 k帧 图像 第 行 的灰 度 投影 值 , G () G (,)
为第 k帧图像 上 (,) 置 处的像 素灰 度值 。 位 ② 相关计 算 将 第 点帧 图像 的行 、 灰度 投 影 曲线 与 参考 帧 图 列 像 的行 、 列灰 度投 影 曲线 做互 相关 运算 , 根据 两条相关 曲线 的波谷值 即可确定 当前 帧图像 相对 于参考 帧 图像 的行 、 位移 矢量值 。 式为进 行行 相关 运算 的计 算公 列 下
式 ( ) , . 为第 k帧 图像 第 列 的灰 度 投 影 4 中 G () 『
索 区域 内所有 的候 选块 中 , 出于前 一 帧参 考块 在 某 找 匹配 准则 下 最相似 的块 , 即匹配块 , 考块 与其 匹配块 参
之 间 的相对 位移 即为该块 的运动矢 量 。 最 佳 匹配可 以通过使某 一 目标 函数最 小或最 大而 求 出 , 用 的 目标 函数 有 绝 对 误 差 和 ( AD, u f 常 S S m o
一
种 基 于 灰 度 投 影 块 匹 配 算 法 的 电 子稳 像 方 法
向量 。全 局块 匹配法 的实 现过程 如 图 1 示 。 引 所
当前 帧 ()
现过 程 可 由两 个 主要 的步 骤 组成 , 图像 的灰度 映 射 即 和相关 计算 。
①灰 度映 射
搜 索 块
把 每 一 帧 图像 灰 度 值 映射 成 两 个 独 立 的一 维 波 形, 即把两 维 图像信息 用两 个独 立 的一维 信息来 表示 。 其 投 影公式 可表 示为 :
M SE( x ) 1 # , = )
近似匹配公式(二)
近似匹配公式(二)近似匹配公式1. Levenshtein距离(编辑距离)公式•描述:Levenshtein距离用于衡量两个字符串之间的差异程度,即通过添加、删除和替换字符将一个字符串转换为另一个字符串的最小操作次数。
•公式:d[i,j] = min(d[i-1,j]+1, d[i,j-1]+1, d[i-1,j-1]+(s[i]!=t[j]))•例子:比如字符串s为“kitten”,字符串t为“sitting”,计算Levenshtein距离时,最小编辑次数为3次,即将”i”替换为”i”,“e”替换为”i”,“n”替换为”g”。
2. 欧几里得距离公式•描述:欧几里得距离用于衡量两个向量之间的差异程度,即两个向量的欧式距离。
•公式:d = sqrt((x2-x1)^2 + (y2-y1)^2)•例子:比如有两个二维向量A(1, 2)和B(4, 6),计算欧几里得距离时,即d = sqrt((4-1)^2 + (6-2)^2) = sqrt(9+16) = 5。
3. Jaccard相似性系数公式•描述:Jaccard相似性系数用于衡量两个集合之间的相似程度,即两个集合的交集与并集的比值。
•公式:J(A,B) = |A ∩ B| / |A ∪ B|•例子:比如有两个集合A={1, 2, 3}和B={2, 3, 4},计算Jaccard相似性系数时,即J(A,B) = |{2, 3}| / |{1, 2, 3,4}| = 2 / 4 = 。
4. 余弦相似度公式•描述:余弦相似度用于衡量两个向量之间的夹角余弦值,范围在-1到1之间,数值越接近1表示越相似。
•公式:similarity = cos(θ) = (A·B) / (||A|| ||B||)•例子:比如有两个向量A(1, 2)和B(3, 4),计算余弦相似度时,即similarity = (13 + 24) / (sqrt(1^2 + 2^2) * sqrt(3^2 + 4^2)) = (3+8) / (sqrt(5) * sqrt(25)) ≈ 。
指纹中心点的定位和特征匹配方法
大 的指 纹 有较 强 的抗 干扰 性 , 法相 对 简单 且效 果 良好 . 算 关 键 词 :图像处 理 ;中心 点 ; 向图 ;特 征提 取 ;匹配 方
文献标 识 码 : A 文 章 编 号 :17 —5 2 2 0 )00 7 —3 6 14 1 ( 0 2 1 —0 80 中 图分 类号 : 3 TP 9
即是 此 块 的块 方 向编 码 值 , 方 向 编 码 如 图 1 , 块 示 然 后 在 这个 粗 的块 方 向 图 上 按 照 以 下 原 则 去 粗 搜 索 中心 区 域 :
a 逐 行 检 查 块 方 向 数 组 b c l [ , ] 若 . l k6 iJ , o bok 6 iJ =12 3且 b c l [ , l l [ ,] , , c l k 6 iJ+1 =5 6 o ] ,,
数组 b c l [ , ( l k6 i o ] =1 ,… ,1 ; ,2 6 J=1 , ,2
特征点 的位置 参数 显得 格外 重要 . 常 的做法 是 通
选 取 一 个 中心 点 , 出 特 征 点 相 对 于 中心 的 位 置 , 求
再 进 行 比 对 . 心 点 的 算 法 有 P icrid x J 中 on a n e l 算 _
维普资讯
第 3 0卷 第 1 0期
20 0 2年 1 0月
华 中
科
技
大
学
学
报( 自然科 学 版 )
Vo.0 No 1 1 3 .0
Oc. 2 0 t 02
J .Huz o gUnv f c.& T c . N tr c n eE io ) ah n i.o i S eh ( aueS i c dt n e i
阻抗匹配计算详解
首先应知道是特性阻抗还是差分阻抗,具体阻抗线在哪些信号层上,阻抗线的参考面是哪 些层?其次根据文件选择正确的阻抗模型来计算阻抗,最后通过调整各层间的介质厚度,或者 调整阻抗线的线宽及间距来满足阻抗及板厚的要求! [( p; R* t. k/ h9 T 五,举例说明怎样使用 Polar Si9000 计算阻抗及设计层叠结构:6 `: C$ i4 k2 W. ^/ ?
半固化片(即 PP),一般包括:106,1080,2116,7628 等,其厚度为:106 为 0.04MM,1080 为 0.06MM,2116 为 0.11MM,7628 为 0.19MM.5 j( g- f. l& [0 V* |" l 当我们计算层叠结构时候通常需要把几张 PP 叠在一起,例如:2116+106,其厚度为 0.15MM,即 6MIL;1080*2+7628,其厚度为 0.31MM,即 12.2MIL 等.但需注意以下几点:1,一般不允许 4 张或 4 张以上 PP 叠放在一起,因为压合时容易产生滑板现象.2,7628 的 PP 一般不允许放在外层, 因为 7628 表面比较粗糙,会影响板子的外观.3,另外 3 张 1080 也不允许放在外层,因为压合时 也容易产生滑板现象.0 g# a. _2 T$ H- h8 B; {
S1=20mil S1=40mil
我们可以看到如果要使线宽达到 4mil 那么差分间距 S1 要达到 20mil,此 距离是比较大的,对布线空间要求比较严格。 所以综上所述,一般我们采取的做法实际上是有误差的,但是还是接近于 计算结果的。如果要真的严格控制,是比教难达到的,何况差分还要严格 平行等间距,这在设计中都比较难实现。下图是个实际的设计例子:
第三章水文地质参数计算
内,s~t/r2曲线和W(u)~1/u标准曲线在形状上是相同的,只是
纵坐标平移了 Q 4T,横坐标平移了
* 。 4T
将二曲线重合,任选一匹配点,记下对应的坐标值,代入
Theis公式可求。
②具体步骤
在双对数坐标纸上绘制W(u)—1/u标准曲线。
在另一张模数相同的透明双对数纸上绘制实测的s—t/r2曲 线。
流计算。其降深s的计算公式为:
s
Q
2KM
r K0( B)
因为:r r B
B
对二式两边取对数,得:
lg
s
lg
k0
r B
lg
Q
2T
lg
r
lg
r B
lg
B
式中,lg Q 和 lg B是常数。曲线 lg s ~ lg r与曲线
2T
相似l,gk只0 是Br 坐~标lg Br平移了
lg
Q
2T
在另一张模数相同的透明双对数纸上绘制实测的 s—t曲线。
将实际曲线置于标准曲线上,在保持对应坐标轴彼 此平行的条件下相对平移,直至两曲线重合为止。
任取一配点(在曲线上或曲线外均可),记下匹配 点的对应坐标:W(u)、1/u、s、t,代入下式求参数:
T
Q
4 s
W
* 4T t
r
2
1 u
u
配线法的优点:
)
,
K M
T B2
B
§3-3 利用地下水动态资料确定 水文地质参数
利用地下水动态长期观测资料来确定水文地质参数 是一种比较经济的方法,并且确定参数的范围比前 者更为广泛,可以求出一些用抽水试验不能求得的 一些参数。
本节主要介绍给水度、降水入渗系数和潜水蒸发系 数的确定方法。
基于优化ICP算法的机器人双目相机点云配准
转矩阵和位移矩阵ꎬ实现目标点云与源点云数据集的相交
平行于相平面ꎮ 保证在两像平面同一行高度搜寻匹配点
半全局匹配算法生成如图 3 所示的 8 位视差图ꎮ
以最小二乘法进行矩阵刚体运算ꎬ迭代数次后得到最优旋
区域特征描述符最大限度重合ꎮ 配准前后只变更点云的
相对位置ꎬ不改变点云数据ꎮ
设源点云集 S 的点云数为 n s ꎮ 目标点云集 Q 的点云
faster speed while ensuring the registration accuracy.
Keywords: robotꎻ point cloud registrationꎻ recognition grabbingꎻ binocular camera
度概念的局部特征搜索方法ꎬ保证了不同分辨率传感器获
的相对位置关系ꎮ
双目相机成像及矫正原理如图 2 所示ꎮ 极点 e l 和 e r
位于成像光心连接线上ꎬl l 和 l r 表示共轭极线ꎬI l 和 I r 表
示相平面ꎬ空间任意点 P 与光心 O l 和 O r 构成截交极平
面 Sꎮ
第一作者简介:陈壮(1995—) ꎬ男ꎬ山东青岛人ꎬ硕士ꎬ研究方向为机器视觉及自动化控制ꎮ
T M 等针对稀疏点云相邻点间的对应关系ꎬ提出基于超密
双目视觉为物体的三维重建提供原始图像输入ꎬ通过
RGB-D 图像以及相机内外参数矩阵ꎬ生成物体点云数据
集ꎮ 双目相机与 Kinova 机器人采用如图 1 所示“ 手在眼
外” 的安装方式ꎬ为双目相机{ C l } { C r } 与机器人基座{ B}
经过坐标转换成为抓取位姿矩阵ꎮ
ICP 算法在局部寻优时出错率较高ꎬ容易陷入局部最
优解ꎬ此外原始的数据结构不利于处理数据量大的点云
