角点检测

当一个窗口在图像上移动,在平滑区域如图(a),窗口在各个方向上没有变化。在边缘上如图(b),窗口在边缘的方向上没有变化。在角点处如图(c),窗口在各个方向上具有变化。Harris角点检测正是利用了这个直观的物理现象,通过窗口在各个方向上的变化程度,决定是否为角点。

将图像窗口平移[u,v]产生灰度变化E(u,v)

由:, 得到:

对于局部微小的移动量 [u,v],近似表达为:

其中M是 2*2 矩阵,可由图像的导数求得:

E(u,v)的椭圆形式如下图:

 

定义角点响应函数 R 为:

Harris角点检测算法就是对角点响应函数R进行阈值处理:R > threshold,即提取R的局部极大值。

 

Shi--Tomasi角点检测法,如果像素点的最小特征值大于周围像素的特征值,则该点是角点。


代码:

<span style="font-size:18px;"><strong>im=imread('lena.jpg');
tau=100;
im=double(im);
keyXs=[];
keyYs=[];
win=3;
[height,width] = size(im);
result = zeros(height,width);
%Then I will get the gradients of the image along the x and y axises.
sobel_x=1/4*[-1 0 1;-2 0 2;-1 0 1];
sobel_y=1/4*[-1 0 1;-2 0 2;-1 0 1]';
diffx=imfilter(im,sobel_x);         %对图像x方向进行梯度
diffy=imfilter(im,sobel_y);       %对图像y方向的梯度进行计算
%For smoothing the differentiation of the image along the x and y
%direction, the gauss filter of the diffx and diffy is must.
gauss_win=win;
sigma=1;
[x,y]=meshgrid(-gauss_win:gauss_win,-gauss_win:gauss_win);
gauss2D=exp(-(x.^2+y.^2)/(2*sigma.^2));  %产生高斯算子
gauss2D=gauss2D/(sum(sum(gauss2D)));  %对高斯算子进行归一化
%Then calculate the M matrix.
A=imfilter(diffx.*diffx,gauss2D);      %二阶x方向梯度进行高斯滤波
B=imfilter(diffy.*diffy,gauss2D);      %二阶y方向梯度进行高斯滤波
C=imfilter(diffx.*diffy,gauss2D);      %对图像x y方向的梯度进行高斯滤波
supress_win=2;threshold=100;points_count=0;bigger=zeros(height,width);smaller=zeros(height,width);for x=1:widthfor y=1:heightM=[A(y,x) C(y,x);C(y,x) B(y,x)];%It is too time-consuming.%eigenvalue=eig(M);%bigger(y,x)=max(eigenvalue);%smaller(y,x)=min(eigenvalue);temp1=M(1,1)+M(2,2);temp2=sqrt((M(1,1)-M(2,2))^2+4*M(1,2)^2);bigger(y,x)=(temp1+temp2)/2;smaller(y,x)=(temp1-temp2)/2;endendfor x=supress_win+1:width-supress_winfor y=supress_win+1:height-supress_win     temp=smaller(y,x);if(temp>threshold)%Then I will make the non-maximumu suppression to the%samller matrix after the threholding.flag=0;for i=-supress_win:supress_winfor j=-supress_win:supress_winif(temp>=smaller(y+j,x+i))flag=flag+1;endendendif(flag==((2*supress_win+1)*(2*supress_win+1)))result(y,x)=1;points_count=points_count+1;keyXs(points_count)=x;keyYs(points_count)=y;endendendend
end
</strong></span>


Shi-Tomasi算子的运用 ,用于检测角点相关推荐

  1. OpenCV——Harris、Shi Tomas、自定义、亚像素角点检测

    在图像处理和与计算机视觉领域,兴趣点(interest points),或称作关键点(keypoints).特征点(feature points) 被大量用于解决物体识别,图像识别.图像匹配.视觉跟踪 ...

  2. Harris算子的运用 用于图像配准

    Harris算子介绍: 该算子是C.Harris和M.J.Stephens在1988年提出的一种点特征提取算子.这种算子受信号处理中自相关函数的启发,可以给出图像中某一像素点的自相关矩阵肘,其特征值是 ...

  3. (特征检测)检测角点opencv--python

    检测角点 检测角点是特征检测的一种方法. (所谓特征检测,就是检测有意义的东西) 下面代码中,使用cornerHarris来识别角点. 关键代码: dst = cv2.cornerHarris(gra ...

  4. JS window对象 Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本。...

    Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本. 对象属性: 查看浏览器的名称和版本,代码如下: <script type=" ...

  5. 截断骨干用于检测,YOLO-ReT开源:边缘GPU设备上的高性能检测器

    作者丨happy 编辑丨极市平台 论文链接:https://arxiv.org/pdf/2110.13713.pdf 代码链接:https://github.com/prakharg24/yolore ...

  6. OpenCV使用Harris-Stephens方法检测角点的实例(附完整代码)

    OpenCV使用Harris-Stephens方法检测角点的实例 OpenCV使用Harris-Stephens方法检测角点的实例 OpenCV使用Harris-Stephens方法检测角点的实例 # ...

  7. 深度学习中交叉熵_深度计算机视觉,用于检测高熵合金中的钽和铌碎片

    深度学习中交叉熵 计算机视觉 (Computer Vision) Deep Computer Vision is capable of doing object detection and image ...

  8. softlockup检测(watchdog)原理(用于检测系统调度是否正常)

    softlockup(watchdog)用于检测系统调度是否正常,即软锁的情况,当发生softlockup时,内核不能调度,但还能响应中断,对用户的表现可能为:能ping通,但无法登陆系统,无法进行正 ...

  9. 用于检测浏览器语言偏好的JavaScript

    本文翻译自:JavaScript for detecting browser language preference [duplicate] This question already has an ...

最新文章

  1. 【剑指offer】丑数
  2. 衡量计算机的平均无故障时间6,平均无故障时间MTBF测试及计算过程
  3. WebFlux基础之响应式编程
  4. git学习3--关联不同的网址的远程分支
  5. 机器人卡纸形状图片大全图片_天水生态木天花吊顶图片大全
  6. bert代码使用详解
  7. unix linux性能对比,各有所长!对比LINUX和UNIX系统优势
  8. 固高运动控制卡教程_基于固高运动控制卡的关节阻抗控制设计
  9. python空值填充_pandas妙招之 DataFrame基础运算以及空值填充
  10. 信工所复试(专业面)
  11. 微信小程序--几个常用标签
  12. c++ string常用函数
  13. x y z 1 在python 中非法_Python面试考题
  14. 进阶项目(6)LCD12864液晶屏幕设计讲解
  15. iOS逆向:微信逆向及动态库开发过程中的坑
  16. i(1<<j)什么意思?
  17. 前三季净利同比增67% 全年飙升定局
  18. 陈皓:谈谈数据安全和云存储
  19. 《马云给年轻人的77条忠告》读书笔记2
  20. 如何在canvas画布上自定义鼠标右键菜单内容?

热门文章

  1. Android端IM应用中的@人功能实现:仿微博、QQ、微信,零入侵、高可扩展
  2. Nginx与Tomcat实现请求动态数据与请求静态资源的分离
  3. 前端将数据转化为弹幕效果的实现方式
  4. 事务、视图、索引、备份、还原
  5. [leetcode] Pow(x, n)
  6. HDUOJ---1863畅通工程
  7. Oracle 双机热备 镜像 纯软 实战 配置教程 配置手册
  8. c/c++中typedef与函数指针
  9. php 字符串去html,PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
  10. Feature Map of Pytorch示例