怎么用ps做网站首页背景图片,企业网站手机版源码下载,成都附近的旅游景点大全,重庆巴南区网站开发公司在获得高斯差分金字塔之后#xff0c;我们可以根据邻近尺度和邻近像素一共 26 个像素点的灰度值和中心像素点的灰度值比较#xff0c;如果中心像素点的值是最大或者最小的#xff0c;则作为极值点保留下来。
但是我们知道像素是网格排布的#xff0c;也就是说是离散的我们可以根据邻近尺度和邻近像素一共 26 个像素点的灰度值和中心像素点的灰度值比较如果中心像素点的值是最大或者最小的则作为极值点保留下来。
但是我们知道像素是网格排布的也就是说是离散的如果我们想要获得更精确的极值点就需要根据目前离散的点进行插值拟合让数据连续起来然后得到一个比较精确的极值点。
给我的感觉就是 SIFT 算法经历了一个从连续到离散然后再回归连续的过程首先是通过离散的高斯差分来近似表示拉普拉斯梯度减少计算量然后又对离散的高斯差分进行子像元级别的插值获得一个连续的曲面求真正的极值点。
首先我们的高斯差分函数是通过通过不同尺度的高斯滤波得到的 D ( x , y , σ ) [ G ( x , y , σ 1 ) − G ( x , y , σ 2 ) ] ∗ I ( x , y ) D(x, y, \sigma) [G(x, y, \sigma_1 ) - G(x, y, \sigma_2 )] * I(x,y) D(x,y,σ)[G(x,y,σ1)−G(x,y,σ2)]∗I(x,y)其中 I ( x , y ) I(x, y) I(x,y) 是像素的灰度值。
然后在尺度 σ \sigma σ 下我们要从离散的高斯差分插值到连续的曲面需要用到泰勒展开因为泰勒展开是一种将函数在某一点附近近似为多项式的方法通过使用一阶和二阶导数来拟合函数。所以可以得到 D ( X ) ≈ D ∂ D T ∂ X X 1 2 X T ∂ 2 D ∂ X 2 X D(X) \approx D \frac{ \partial D^T }{\partial X } X \frac{1}{2}X^T\frac{\partial^2 D}{\partial X^2}X D(X)≈D∂X∂DTX21XT∂X2∂2DX这个公式在别的文章很常见但是我觉得不够直观因为是尺度已经确定了是 σ \sigma σ 所以高斯差分函数目前是关于位置 x , y x, y x,y 的函数上面的式子是一个矩阵的形式因为要求极值所以要对 D ( X ) D(X) D(X) 求导并让其导数 ∂ D ∂ X 0 \frac{\partial D}{\partial X} 0 ∂X∂D0 ∂ D ∂ X 0 ∂ D T ∂ X 1 2 ( ∂ 2 D ∂ X 2 ( ∂ 2 D ∂ X 2 ) T ) X \frac{\partial D}{\partial X} 0 \frac{\partial D^T}{\partial X} \frac{1}{2}\left(\frac{\partial^2 D}{\partial X^2}\left(\frac{\partial^2 D}{\partial X^2}\right)^T \right)X ∂X∂D0∂X∂DT21(∂X2∂2D(∂X2∂2D)T)X考虑到 ∂ 2 D ∂ X 2 \frac{\partial^2 D}{\partial X^2} ∂X2∂2D 是 Hessian 矩阵展开表达式如下 ∂ 2 D ∂ X 2 ( ∂ 2 D ∂ x 2 ∂ 2 D ∂ x ∂ y ∂ 2 D ∂ x ∂ y ∂ 2 D ∂ y 2 ) \frac{\partial^2 D}{\partial X^2} \begin{pmatrix} \frac{\partial ^2D}{\partial x^2} \frac{\partial ^2D}{\partial x\partial y}\\ \frac{\partial ^2D}{\partial x\partial y} \frac{\partial ^2D}{\partial y^2} \end{pmatrix} ∂X2∂2D(∂x2∂2D∂x∂y∂2D∂x∂y∂2D∂y2∂2D)可以看出来是对称矩阵所以 ∂ 2 D ∂ X 2 ( ∂ 2 D ∂ X 2 ) T \frac{\partial^2 D}{\partial X^2} (\frac{\partial^2 D}{\partial X^2})^T ∂X2∂2D(∂X2∂2D)T我们就可以得到求导之后的式子为 ∂ D ∂ X ∂ D T ∂ X ∂ 2 D ∂ X 2 X \frac{\partial D}{\partial X} \frac{\partial D^T}{\partial X} \frac{\partial^2 D}{\partial X^2}X ∂X∂D∂X∂DT∂X2∂2DX让导数 ∂ D ∂ X \frac{\partial D}{\partial X} ∂X∂D 为零可以得到 X ^ ∂ D T ∂ X ( − ∂ 2 D ∂ X 2 ) − 1 \hat{X} \frac{\partial D^T}{\partial X} \left (- \frac{\partial^2 D}{\partial X^2} \right )^{-1} X^∂X∂DT(−∂X2∂2D)−1这里的 X ^ \hat{X} X^ 就是我们要求的极值点偏移值然后将其代入原式就可以求得极值点的响应值 D ( X ) D 1 2 ∂ D T ∂ X X ^ D(X) D \frac{1}{2} \frac{\partial D^T}{\partial X} \hat{X} D(X)D21∂X∂DTX^ ∂ ∂ X ( X T A X ) ( A A T ) X \frac{\partial }{\partial X}(X^T A X) (AA^T)X ∂X∂(XTAX)(AAT)X