moravec算子,susan算子,css算子,fast算子,harris算子哪个对模糊的鲁棒性好

html-css029

moravec算子,susan算子,css算子,fast算子,harris算子哪个对模糊的鲁棒性好,第1张

Harris算子介绍:

该算子是C.Harris和M.J.Stephens在1988年提出的一种点特征提取算子。这种算子受信号处理中自相关函数的启发,可以给出图像中某一像素点的自相关矩阵肘,其特征值是自相关函数的一阶曲率,如果算,Y两个方向上的曲率值都高,那么就认为该点是角点。Harris角点检测算子

Harris[2]角点检测算子是Moravec角点检测算子的改进.

(1)算子用高斯函数代替二值窗口函数,对离中心点越近的像素赋于越大的权重,以减少噪声影响。

图1-3高斯函数

(2)算子只考虑了每隔45度方向,Harris算子用Taylor展开去近似任意方向。

写成矩阵形式: :

式子(1-2)

式子(1-3)

式中,Ix为x方向的差分,Iy为y方向的差分,w(x,y)为高斯函数。

(3)Harris采用了一种新的角点判定方法。矩阵M的两个特征向量l1和l2与矩阵M的主曲率成正比。Harris利用l1, l2来表征变化最快和最慢的两个方向.若两个都很大就是角点,一个大一个小就是边缘,两个都小就是在变化缓慢的图像区域.

来自文献[11]

图1- 4用矩阵M的特征向量分类图像像素点

但是解特征向量需要比较多的计算量,且两个特征值的和等于矩阵M的迹,两个特征值的积等于矩阵M的行列式。所以用(1-4)式来判定角点质量。(k常取0.04-0.06)

(1-4)

(4) Harris算法总结

Step 1:对每一像素点计算相关矩阵M。

Step 2:计算每像素点的Harris 角点响应。

Step 3.在w*w范围内寻找极大值点,若Harris 角点响应大于阀值,则视为角点。

Harris算子对灰度的平移是不变的,因为只有差分,对旋转也有不变性,但是对尺度很敏感,在一个尺度下是角点, 在在另一个尺度下可能就不是了.

图1- 5 harris算子对尺度的敏感性

图1- 6 harris算子对简单图像的响应

Harris 算子是一种有效的点特征提取算子,其优点总结起来有:

①计算简单:Harris 算子中只用到灰度的一阶差分以及滤波,操作简单。

②提取的点特征均匀而且合理:Harris 算子对图像中的每个点都计算其兴趣值,然后在邻域中选择最优点。实验表明,在纹理信息丰富的区域,Harris 算子可以提取出大量有用的特征点,而在纹理信息少的区域,提取的特征点则较少。

③稳定:Harris算子的计算公式中只涉及到一阶导数,因此对图像旋转、灰度变化、噪声影响和视点变换不敏感,它也是比较稳定的一种点特征提取算子。

Harris 算子的局限性有:

①它对尺度很敏感,不具有尺度不变性。

②提取的角点是像素级的。

[2]Chris Harris, Mike Stephens, A Combined Corner and Edge Detector, 4th Alvey Vision Conference, 1988, pp147-151

Chrome浏览器,选项中找到“工具”-“开发者工具”,会有两个窗口显示,左边的窗口上方有一排选项按钮,点击“Elements”会显示当前网页的后台代码,右边的窗口会显示对应的样式。

如果样式没起作用,会有一条横线画在对应的样式代码上面

CSS animations, transforms 以及 transitions 不会自动开启GPU加速,而是由浏览器的缓慢的软件渲染引擎来执行。那我们怎样才可以切换到GPU模式呢,很多浏览器提供了某些触发的CSS规则。

现在,像Chrome, FireFox, Safari, IE9+和最新版本的Opera都支持硬件加速,当它们检测到页面中某个DOM元素应用了某些CSS规则时就会开启,最显著的特征的元素的3D变换。

例如:

.cube {

   -webkit-transform: translate3d(250px,250px,250px)

   rotate3d(250px,250px,250px,-120deg)

   scale3d(0.5, 0.5, 0.5)

}

可是在一些情况下,我们并不需要对元素应用3D变换的效果,那怎么办呢?这时候我们可以使用个小技巧“欺骗”浏览器来开启硬件加速。

虽然我们可能不想对元素应用3D变换,可我们一样可以开启3D引擎。例如我们可以用transform: translateZ(0)来开启硬件加速 。

.cube {

   -webkit-transform: translateZ(0)

   -moz-transform: translateZ(0)

   -ms-transform: translateZ(0)

   -o-transform: translateZ(0)

   transform: translateZ(0)

   /* Other transform properties here */

}

在 Chrome and Safari中,当我们使用CSS transforms 或者 animations时可能会有页面闪烁的效果,下面的代码可以修复此情况:

.cube {

   -webkit-backface-visibility: hidden

   -moz-backface-visibility: hidden

   -ms-backface-visibility: hidden

   backface-visibility: hidden

 

   -webkit-perspective: 1000

   -moz-perspective: 1000

   -ms-perspective: 1000

   perspective: 1000

   /* Other transform properties here */

}

在webkit内核的浏览器中,另一个行之有效的方法是

.cube {

   -webkit-transform: translate3d(0, 0, 0)

   -moz-transform: translate3d(0, 0, 0)

   -ms-transform: translate3d(0, 0, 0)

   transform: translate3d(0, 0, 0)

  /* Other transform properties here */

}

原生的移动端应用(Native mobile applications)总是可以很好的运用GPU,这是为什么它比网页应用(Web apps)表现更好的原因。硬件加速在移动端尤其有用,因为它可以有效的减少资源的利用(麦时注:移动端本身资源有限)。