为完成对棋盘标板的角点检测,特此记录。

角点:最直接的定义为在水平、垂直两个方向上变化均较大的点

最常用的角点检测算法为Harris角点检测方法,原理如下:

  1. 计算图像I(x,y)在X和Y两个方向的梯度Ix、Iy
  2. 计算图像两个方向梯度的乘积
  3. 使用高斯函数对Ix^2、Iy^2和Ixy进行高斯加权(取σ=1),生成矩阵M的元素A、B和C
  4. 计算每个像素的Harris响应值R,并对小于某一阈值t的R置为零
  5. 在3×3或5×5的邻域内进行非最大值抑制,局部最大值点即为图像中的角点

在matlab中对该方法进行了实验,代码如下:

function [posr,posc]=Harris1(in_image,a)
% 功能:检测图像harris角点
% in_image-待检测的rgb图像数组
% a--角点参数响应,取值范围:0.04~0.06
% [posr,posc]-角点坐标
in_image=rgb2gray(in_image);
I=double(in_image);
%%%%计算xy方向梯度%%%%%fx=[-1,0,1];%x方向梯度模板
Ix=filter2(fx,I);%x方向滤波
fy=[-1;0;1];%y方向梯度模板(注意是分号)
Iy=filter2(fy,I);
%%%%计算两个方向梯度的乘积%%%%%
Ix2=Ix.^2;
Iy2=Iy.^2;
Ixy=Ix.*Iy;
%%%%使用高斯加权函数对梯度乘积进行加权%%%%
%产生一个7*7的高斯窗函数,sigma值为2
h=fspecial('gaussian',[3,3],2);
IX2=filter2(h,Ix2);
IY2=filter2(h,Iy2);
IXY=filter2(h,Ixy);
%%%%%计算每个像元的Harris响应值%%%%%
[height,width]=size(I);
R=zeros(height,width);
%像素(i,j)处的Harris响应值
for i=1:heightfor j=1:widthM=[IX2(i,j) IXY(i,j);IXY(i,j) IY2(i,j)];R(i,j)=det(M)-a*(trace(M))^2;end
end
%%%%%去掉小阈值的Harris值%%%%%
Rmax=max(max(R));
%阈值
t=0.005*Rmax;
for i=1:heightfor j=1:widthif R(i,j)<tR(i,j)=0;endend
end
%%%%%进行3*3领域非极大值抑制%%%%%%%%%
corner_peaks=imregionalmax(R);
%imregionalmax对二维图片,采用8领域(默认,也可指定)查找极值,三维图片采用26领域
%极值置为1,其余置为0
num=sum(sum(corner_peaks));
%%%%%%显示所提取的Harris角点%%%%
[posr,posc]=find(corner_peaks==1);
figure;
imshow(uint8(in_image));
hold on
for i=1:length(posr)plot(posc(i),posr(i),'r+');
end
end

对于规则的棋盘标板,可准确检测,对于不规则的棋盘标板,边缘区域存在误差,改变角点参数a对结果有些微影响,该方法存在一个问题,对同一个角点会重复检测:在同一个角点附近同时定位出坐标相差细微的多个角点坐标,对最终结果造成影响。

MATLAB——Harris角点检测相关推荐

  1. 测角误差估计算法matlab,Harris角点检测 及 Matlab实验

    目录 1 基础知识 1.1 图像变化的类型 1.2 提取点特征的作用 1.3 什么是好的角点检测算法? 2 Harris 角点检测 2.1 Harris角点检测基本思想 2.2 Harris角点检测: ...

  2. Harris角点检测,及其Matlab和OpenCV实现

    1.Harris角点检测算法实现步骤 (1)计算图像I(x,y)I(x,y)I(x,y)在XXX和YYY两个方向的梯度Ix,Iy{{I}_{x}},{{I}_{y}}Ix​,Iy​:Ix=∂I∂x=I ...

  3. 用matlab实现harris角点检测,基于MatlabGUI的Harris角点检测程序

    基于MatlabGUI的Harris角点检测程序 作 者: Bugzhao Mailto: bugzhao@http://www.doczj.com/doc/fd59aac50c22590102029 ...

  4. Harris角点检测算法优化

    Harris角点检测算法优化 一.综述 用 Harris 算法进行检测,有三点不足:(1 )该算法不具有尺度不变性:(2 )该算法提取的角点是像素级的:(3 )该算法检测时间不是很令人满意. 基于以上 ...

  5. 《OpenCV3编程入门》学习笔记10 角点检测(一)Harris角点检测

    第10章 角点检测 10.1 Harris角点检测 10.1.1 角点 1.图像特征类型: (1)边缘 (2)角点(感兴趣点) (3)斑点(感兴趣区域) 2.角点定义: (1) 一阶导数(灰度的梯度) ...

  6. 通俗易懂的Harris 角点检测

    Harris 角点检测 认为  特征点具有局部差异性. 如何描述"特征点具有局部差异性": 以每一个点为中心,取一个窗口,窗口大小为5*5或7*7像素大小. 这个窗口描述了这个特征 ...

  7. harris角点检测_角点检测(2) - harris算子 - 理论与Python代码

    数字图像,图像=矩阵,[m*n]从[0,255]的灰度值 角点检测:物体边缘的拐点 ->应用:图像匹配与检索.图像物体形变恢复(摄像机标定).三维重建 Harris角点检测(早期,原理简单,视频 ...

  8. OpenCV Harris角点检测

    Harris角点检测的思想是通过图像的局部的小窗口观察图像,角点的特征是窗口沿任意方向移动都会导致图像灰度的明显变化,如下图所示: .判断角点,如下图所示: 当R为大数值的正数时是角点 当R为大数值的 ...

  9. OpenCV角点检测之Harris角点检测

    本篇文章中,我们一起探讨了OpenCV中Harris角点检测相关的知识点,学习了OpenCV中实现Harris角点检测的cornerHarris函数的使用方法.此博文一共有两个配套的麻雀虽小但五脏俱全 ...

最新文章

  1. 关于ES6中Promise的应用-顺序合并Promise,并将返回结果以数组的形式输出
  2. 新装ubuntu9.10后配置全过程(很多常见问题的解决方法)
  3. Web如何应对流量劫持?
  4. vue click同时传入事件对象和自定义参数
  5. php数组添加省会城市,【JSON数据】中国各省份省会城市经纬度 JSON
  6. face.evoLVe:高性能人脸识别开源库,内附高能模型
  7. mysql用一条sql语句删除重复记录_mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句...
  8. java求最小生成树的权重_给定有权无向图的邻接矩阵如下,求其最小生成树的总权重,代码。...
  9. python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)
  10. C++ HDC作图 内存画图
  11. 计算机c盘快满了怎么办,电脑C盘满了怎么办?教你快速清理C盘的垃圾
  12. 腾讯信鸽推送,部分手机不能接收到推送弹窗
  13. mysql实现oracle的同义词_ORACLE同义词总结(上)
  14. 墨画子卿第三章第8节:第三元素
  15. 小程序+spring boot校园交友平台毕业设计-附源码191733
  16. python 获取本机IP地址
  17. js 使用 canvas 绘制地图路线
  18. aspf ftp_FTP主动模式和被动模式
  19. 使用metasploit破解ssh密码
  20. 浅谈PageRank算法

热门文章

  1. 全球某工商云战役自动打卡系统
  2. java数组初始化0_Java自学-数组 初始化数组
  3. LaTex 自动生成IEEE格式的参考文献
  4. 老毛桃U盘启动,装Linux
  5. Merged region A1 must contain 2 or more cells
  6. Linux刻录光盘win10认不到,Windows10系统读不取DVD光驱和刻录光盘
  7. 实现一个操作系统系列2-《操作系统真象还原》BIOS启动
  8. matlab绘制银河系,科学家们是如何绘制宇宙星系图的?
  9. paddle 41 在paddledetection添加RotateScaleCopyPaste数据增强方法
  10. 机械振动信号15个时域统计指标