[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题

注:友情提示,在没有矩阵的情况下,数字相乘,其实点乘和×乘一样

后面写式子有时候忘了统一,大家当作一个就行,因为我写完了才看见!!抱歉了

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第1张图片

归一化互相关 NCC (normalized cross correlation)

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第2张图片

到底啥事NCC一直比较困惑我,之前导师教过我,但是当时我才接触图像,不会复现,不会深入

参考博客:

【图像配准】基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA、SATD算法

【图像配准】基于灰度的模板匹配算法(二):局部灰度值编码

【图像配准】基于互信息的图像配准算法:MI、EMI、ECC算法

【图像配准】基于灰度的模板匹配算法(三):划分强度一致法(PIU)


NCC使用了积分图加速,积分图有很多应用:

图像处理之积分图算法   - CSDN博客

图像处理之积分图应用二(快速边缘保留滤波算法)   - CSDN博客

图像处理之积分图应用一(半径无关的快速模糊算法)   - CSDN博客

图像处理之积分图应用四(基于局部均值的图像二值化算法)   - CSDN博客

图像处理之积分图应用三(基于NCC快速相似度匹配算法)   - CSDN博客


NCC是一种基于统计学计算两组样本数据相关性的算法,其取值范围为[-1, 1]之间,而对图像来说,每个像素点都可以看出是RGB数值,这样整幅图像就可以看成是一个样本数据的集合如果它有一个子集与另外一个样本数据相互匹配则它的ncc值为1,表示相关性很高,如果是-1则表示完全不相关,基于这个原理,实现图像基于模板匹配识别算法。 

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第3张图片

公式:

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第4张图片

当模板与原图找到最佳匹配部分时,NCC值最大,原理类似于:

把上述公式展开

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第5张图片

其中均值计算如下:

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第6张图片

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第7张图片

当a,b越接近时,R值越大,趋近于1

博客写到这里时候,我脑子有点大,md,这不是概率论的知识点吗?马上翻书,哎自己不会学以致用

当然NCC和我们学的相关系数还是有点不一样

注:图像一上传就这样,下载下来看吧大家

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第8张图片

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第9张图片

 

至于博客:https://blog.csdn.net/jia20003/article/details/53021614

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第10张图片

博客:https://blog.csdn.net/jia20003/article/details/53021614中的公式推导如下:

由于协方差公式:

公式可以变成:

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第11张图片

这里我接着找了几个博客:

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第12张图片

这里我没有推导出博客:https://blog.csdn.net/jia20003/article/details/53021614的公式

只能继续讲,这个过,因为大多数博客都没有那么写


接下来说一下关于积分图的加速,在公式中:

如果提前建立好了原图像与模板图像的积分图,就可以快速的通过公式

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第13张图片

计算出给定的区域,或者

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第14张图片

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第15张图片

上图中的1,2,可以通过积分图快速计算    u = 积分图结果 / (m*n)  ;

这里我们将原始公式中的分子:

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第16张图片

前面乘一个(1/m*n)就能凑成

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第17张图片

分子前面以及推导了,这里我们不管那个[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第18张图片

就直接把前面的拿过来:

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第19张图片

5这一块,其实就是模板之间的相关运算

(模板的相关运算和卷积相似,只是不翻转,按位相乘再相加,具体参考博客:图像卷积-图像相关的区别)

NCC的基本运算已经完全写好可,但是为了用积分图加速,写到现在虽然还是有点迷糊,但是大致知道什么情况了,这里我们直接把

博客:https://blog.csdn.net/jia20003/article/details/53021614的公式拿过来

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第20张图片

这里我们提前创建两种积分图,P原始积分图,Q平方积分图,然后图像和模板都有,一共四个

3,4的加速是通过创建一个,像素点值的平方和的一个积分图,每个位置的值,是原像素点的值平方  u = Q(积分公式) ;

1,2是通过积分图快速计算    u = P(积分公式) / (m*n)  ;

5  模板相关操作(类卷积操作),或者建立像博客中的模板乘积积分图,但是我觉得有点浪费时间,直接模板相关很简单

现在已经理清楚了,就剩分母的推导了

拿出刚开始博客写的公式对比一下:

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第21张图片

这里在我冥思苦想的时候,看到方差的定义,才恍然大悟,哎数学忘得差不多了:

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第22张图片

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第23张图片

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第24张图片

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第25张图片

 

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第26张图片

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第27张图片

同理,分母的第二个也这么推导

才想起来分子那里推导错了,也应该像这么一步一步,告诉大家提出什么,凑出什么,不过看到这里你肯定已经明白了

因此,推导完毕。!!!

算了还是写吧,分子再推(正确的):

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第28张图片

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第29张图片

擦,心累,一早上,一篇博客,这效率

[再再次续]关于opencv2.4.10-3.3.1左右版本的特征点剔除与显示问题_第30张图片

 

你可能感兴趣的:(SLAM+SFM)