文章目录

  • 1.Harris角点检测基本思想
    • 1.1基本思想
    • 1.2 数学表达
  • 2.简单代码实现
    • 2.1 对于纹理平坦的图
      • 2.1.1 正面图像
        • 运行结果如下
        • 结果分析
      • 2.1.2 侧面图像
        • 运行结果如下
        • 结果分析
      • 2.1.3 旋转角度图像
        • 运行结果如下
        • 结果分析
      • 2.1.4 远近不同
        • 运行结果如下
        • 结果分析
      • 2.1.5 亮度不同
        • 运行结果如下
        • 结果分析
      • 结论
    • 2.2.边缘较多的图像
      • 2.2.1 正面图像
        • 运行结果如下
        • 结果分析
      • 2.2.2 侧面图像
        • 运行结果如下
        • 结果分析
      • 2.2.3 旋转角度不同
        • 运行结果如下
        • 结果分析
      • 2.2.4 远近不同
        • 运行结果如下
        • 结果分析
      • 结论
    • 2.3 角点丰富的图像
      • 2.3.1 正面图像
        • 运行结果如图
        • 结果分析
      • 2.3.2 侧面图像
        • 运行结果如图
        • 结果分析
      • 2.3.3 远近不同
        • 运行结果如图
        • 结果分析
      • 2.3.4 旋转角度不同
        • 运行结果如图
        • 结果分析
      • 结论
  • 3.实验结果分析

1.Harris角点检测基本思想

1.1基本思想

  • 从图像局部的小窗口观察图像信息
  • 窗口向任意方向移动都导致图像灰度的明显变化,窗口所在位置即为角点,如下图所示

    Harris角点检测在检测三种不同区域时:

1.2 数学表达

设以目标像素为中心的矩形窗口W在任意方向上的以为(u,v)的灰度变换为E(u,v),定义如下: E ( u , v ) = ∑ x , y w ( x , y ) [ I ( x , y ) − I ( x + u , y + u ) ] 2 … … … … ( 1 ) E(u,v)=\sum_{x,y} w(x,y)[I(x,y)-I(x+u,y+u)]^2…………(1) E(u,v)=x,y∑​w(x,y)[I(x,y)−I(x+u,y+u)]2…………(1)
其中 w ( x , y ) = e x p ( − ( x 2 + y 2 ) / σ 2 w(x,y)=exp(-(x^2+y^2)/σ^2 w(x,y)=exp(−(x2+y2)/σ2为高斯核函数。
求解此表达式可用泰勒级数展开。
由泰勒级数可知


其中 A = I x ∗ w , B = I y ∗ w , C = ( I y I y ) ∗ w A=I_x*w,B=I_y*w,C=(IyI_y)*w A=Ix​∗w,B=Iy​∗w,C=(IyIy​)∗w。矩阵M称为自相关矩阵,易知该矩阵为Hessian矩阵,也就是说其特征值( λ 1 , λ 2 λ_1,λ_2 λ1​,λ2​,)反映了自相关函数 E ( u , v ) E(u,v) E(u,v)的曲率,当两个特征值都较小时,表示平坦区域,一个较大另一个较小为边缘区域,两个都较大为角点。
为了避免求解特征值,通常使用如下角点响应函数:

其中| -|表示矩阵的行列式,tr表示矩阵的迹,k一般取值0.04-0.06,此时可利用R的取值来确实目标像素点的特征,R绝对值较小时为平坦区域,负表示边界,正表示角点。

归纳入下:

2.简单代码实现

Harris_1.py

# -*- coding: utf-8 -*-
from pylab import *
from PIL import Image
from PCV.localdescriptors import harris
"""
Example of detecting Harris corner points (Figure 2-1 in the book).
"""# 读入图像
im = array(Image.open('data/flat/flat_zheng.jpg').convert('L'))# 检测harris角点
harrisim = harris.compute_harris_response(im)# Harris响应函数
harrisim1 = 255 - harrisimfigure()
gray()#画出Harris响应图
subplot(2,2,1)
imshow(harrisim1)
print(harrisim1.shape)
axis('off')
axis('equal')threshold = [0.01, 0.05, 0.1]
for i, thres in enumerate(threshold):filtered_coords = harris.get_harris_points(harrisim, 6, thres)subplot(2, 2, i+2)imshow(im)print(im.shape)plot([p[1] for p in filtered_coords], [p[0] for p in filtered_coords], '*')axis('off')
for item in filtered_coords:print(item)
#原书采用的PCV中PCV harris模块
#harris.plot_harris_points(im, filtered_coords)# plot only 200 strongest
# harris.plot_harris_points(im, filtered_coords[:200])show()

2.1 对于纹理平坦的图

2.1.1 正面图像

运行结果如下

左边的大图为图像的原图,右边figure中的4副小图为检测结果。

结果分析

检测结果中图1应该为轮廓图,但是由于图像中的物品纹理平坦,所以轮廓很不清晰。图2中聚集了一大堆点的地方是光线,往下几个稀疏的点是图中原本的几个黑点。从图2到图4,可以看出,图中的点逐渐变少,直到最后,只剩下原图中的几个黑点又被标记。

2.1.2 侧面图像

运行结果如下

结果分析

侧面图像的运行结果和正面图像相差不大。

2.1.3 旋转角度图像

运行结果如下

结果分析

相比正面和侧面图像,也只是点的位置略有不同。

2.1.4 远近不同

本次运行用的图片相比于正面使用的图像,摄像头更加近。

运行结果如下

结果分析

图2出现了大量点狙击的情况,是因为由于摄像头较近,光源在我身后,导致图中的木板反射了较大片亮光,导致右上区域的灰度变换较大,所以相比上面才有更多的点聚集,图3和图4与其他相差不大。

2.1.5 亮度不同

本次运行用的图片相比于正面图像,更加暗。

运行结果如下

结果分析

可以看到,由于亮度变暗,图中的物品没有反光,所以图2并没有出现大量点聚集的情况。

结论

对于纹理平坦的图片,光线对Harris的检测结果影响较大,其他的条件影响较小。

2.2.边缘较多的图像

2.2.1 正面图像

运行结果如下

结果分析

图片中的房子有很多的方形窗户,随着阈值的不断增大,检测的结果越来越清晰。

2.2.2 侧面图像

运行结果如下

结果分析

与正面结果对比,随着阈值增大,检测出来的点越来越,点也越来越靠近边缘。

2.2.3 旋转角度不同

运行结果如下

结果分析

即使是角度不同,也仍然能检测出图像中的边缘(房子的窗户等)。

2.2.4 远近不同

运行结果如下

本次运行相对于侧面图像,建筑更小。亮度也较暗。

结果分析

与上面结果无较大差别。

结论

对于边缘较多的图像,如果阈值从0.01变为0.05(图2到图3的变化),图中的点会显著减少,但是当阈值从0.05变化为0.1时,图像检测的变化并不明显。而且亮度较暗的图像检测出的角点较少。

2.3 角点丰富的图像

2.3.1 正面图像

运行结果如图

结果分析

随着阈值增大,检测的角点变少,图4中地板中的角点甚至没有检测出来

2.3.2 侧面图像

运行结果如图

结果分析

正面和侧面对角点检测影响不大。

2.3.3 远近不同

运行结果如图

结果分析

角度变化对检测结果影响不大。只是图1相比于其他图片中的图1对地板的角点检测效果更好。

2.3.4 旋转角度不同

运行结果如图

结果分析

检测结果与上面的无较大差别,由于角度变换,树旁边多了更多的地板,图3对地板的角点检测效果最好。

结论

对于角点丰富的图片,旋转角度对角点的检测来说差别不大。

3.实验结果分析

  • 不管是平坦的图片,角点丰富的还是边缘丰富的,检测时如果光线较好,角点越多,在平坦纹理的图中标新更加明显。

  • 随着阈值增大,图片的角点检测结果,检测出的角点越少,本次实验的三个阈值,0.01,0.05,0.1,其中0.05的检测效果最好。

  • 光线不变的情况下,即使图片再怎么旋转,再怎么换角度拍,得到的角点也不会相差太大。

  • 关于远近问题,近可能会增加图片中的详细信息,进而检测出更多角点。

计算机视觉图像基本处理--Harris角点检测相关推荐

  1. 计算机视觉(二)HARRIS角点检测算法与SIFT

    文章目录 前言 一.HARRIS角点检测算法 1.什么是角点(corner points) 2.角点检测算法的基本思想 3.什么是好的角点检测算法 4.角点特征的数学刻画 5.度量角点响应 6.HAR ...

  2. OpenCV + CPP 系列(卅三)图像特征提取(Harris角点检测、Shi-Tomasi角点检测、自定义角点检测)

    文章目录 一.常用图像特征描述 二.Harris角点检测 演示Harris角点检测 三.Shi-Tomasi角点检测 四.自定义角点检测器 一.常用图像特征描述 SIFT.SURF.HOG.Haar. ...

  3. Python+OpenCV:图像Harris角点检测(Harris Corner Detection)

    Python+OpenCV:图像Harris角点检测(Harris Corner Detection) 理论 corners are regions in the image with large v ...

  4. opencv harris 角点检测

    一.图像特征的分类 [OpenCV入门教程之十六]OpenCV角点检测之Harris角点检测_[浅墨的游戏编程Blog]毛星云(浅墨)的专栏-CSDN博客_基于轮廓曲线的角点检测 下面部分图像来自与B ...

  5. 图像局部特征(二)--Harris角点检测子

     一.角点定义 有定义角点的几段话: 1.角点检测(Corner Detection)是计算机视觉系统中用来获得图像特征的一种方法,广泛应用于运动检测.图像匹配.视频跟踪.三维建模和目标识别等领域 ...

  6. 图像特征-Harris角点检测

    1. 角点定义 角点检测又称为特征点检测,是图像处理和计算机视觉中用来获取局部特征点的一类方法,广泛应用于运动检测.图像匹配.视频跟踪等领域.角点可以简单地定义为轮廓之间的交点,严格地定义是在两个主方 ...

  7. 计算机视觉(角点检测)- 1 - Harris角点检测

    计算机视觉(角点检测)- 1 - Harris角点检测 学习前言 一.Harris角点检测   1.什么是角点?   2.Harris角点检测的基本原理&基本思想   3.Harris角点检测 ...

  8. Python计算机视觉——Harris角点检测

    Python计算机视觉--Harris角点检测 文章目录 Python计算机视觉--Harris角点检测 写在前面 1 Harris角点检测基本思想 2 Harris角点检测公式推导 3 实验分析 写 ...

  9. 计算机视觉 — Harris角点检测

    文章目录 一.角点 二.Harris角点检测基本思想 三.Harris算法数学表达 四.实验结果分析 五.代码 六.总结 一.角点 角点(corner points):局部窗口沿各方向移动,均发生明显 ...

最新文章

  1. java.lang.IllegalArgumentException: No view found for id 0x7f07005f (xx) for for fragment xxFragment
  2. Resultset获取行数和列数
  3. 深度学习在工业推荐如何work?Netflix这篇论文「深度学习推荐系统Netflix案例分析」阐述DL在RS的优劣与经验教训...
  4. .net core 杂记:用Autofac替换内置容器
  5. hadoop-0.20.2完全分布式集群
  6. 用两种方法求解九宫算问题
  7. 如何在Java中将集合转换为列表
  8. SpringBoot整合Atomikos实现2PC二阶段分布式事务
  9. MySQL 入门常用命令大全
  10. 佳能Canon imageCLASS MF4712 打印机驱动
  11. python控制苹果手机触摸屏失灵怎么办_苹果手机触摸屏失灵的各种解决方法
  12. GT9xx触摸屏驱动总结
  13. fieldtrip学习——1.坐标系介绍(ctf坐标系和acpc坐标系简介)
  14. android多个module打包aar,android 多module打包aar
  15. MySQL使用空间索引问题
  16. 基于FFmpeg+rtsp读取摄像头实时图像
  17. 博客匿名评论功能正式上线了!
  18. obsidian vim模式切换输入法
  19. ***JLink Error: Supply voltage too low (1 Volt is required, Measured: 0.4 Volt).Please check target
  20. 浅谈MyEclipse2014中花括号对应

热门文章

  1. 【ACF和AMDF】基于ACF和AMDF合作算法的语音编码matlab仿真
  2. 在Refit上模拟ApiException
  3. Unity动态创建Avatar骨骼映射
  4. 矿井水深度除氟装置CH-87的技术应用
  5. 什么是 :kail LINUX
  6. 【计算机网络学习笔记18】防火墙技术、入侵检测技术
  7. Wisdom RESTClient 工具
  8. Linux命令:tar压缩/解压包, zip/unzip
  9. 华为视频与优酷深度合作
  10. 程序 = 数据结构 + 算法《禅与计算机程序设计艺术》 / 陈光剑