① 如何用matlab提取棋盘格标定靶的角点
是caltech那个工具箱吧。有个函数叫rodrigues 直接用它就可以了。 R = rodrigues(om); 想转回去还可以om = rodrigues(R)
② 左右图像已经提取了harris角点了后,怎么匹配
楼主,你已经得到了“左图中的一些点和右图中的一些点相匹配”,这就够了,你的目的是“可以将匹配点一一对应起来”,这个思路就是不对的,因为两幅图是分别提取角点,由于噪声、图像质量等各种原因,两幅图中提取的角点并不存在完全的一一对应
③ 角点检测的几种基本方法
也称为特征点检测。角点通常被定义为两条边的交点,更严格的说,角点的局部邻域应该具有两个不同区域的不同方向的边界。而实际应用中,大多数所谓的角点检测方法检测的是拥有特定特征的图像点,而不仅仅是“角点”。这些特征点在图像中有具体的坐标,并具有某些数学特征,如局部最大或最小灰度、某些梯度特征等。现有的角点检测算法并不是都十分的鲁棒。很多方法都要求有大量的训练集和冗余数据来防止或减少错误特征的出现。角点检测方法的一个很重要的评价标准是其对多幅图像中相同或相似特征的检测能力,并且能够应对光照变化、图像旋转等图像变化。 Moravec角点检测算法Moravec角点检测算法是最早的角点检测算法之一。该算法将角点定义为具有低“自相关性”的点。算法会检测图像的每一个像素,将像素周边的一个邻域作为一个patch,并检测这个patch和周围其他patch的相关性。这种相关性通过两个patch间的平方差之和(SSD)来衡量,SSD值越小则相似性越高。如果像素位于平滑图像区域内,周围的patch都会非常相似。如果像素在边缘上,则周围的patch在与边缘正交的方向上会有很大差异,在与边缘平行的方向上则较为相似。而如果像素是各个方向上都有变化的特征点,则周围所有的patch都不会很相似。Moravec会计算每个像素patch和周围patch的SSD最小值作为强度值,取局部强度最大的点作为特征点。 Harris角点检测算法Moravec角点检测算法有几个很明显的缺陷:1,强度值的计算并不是各向同性的,只有离散的8个45度角方向被考虑。因为patch的评议比较最多只有8个方向;2,由于窗口是方形并且二元的,因此相应函数会有噪声;3,对边缘的相应太简单,因为强度值尽取SSD的最小值; FAST角点检测算法Smith 和 Brady在1997年提出了一种完全不同的角点提取方法,即“SUSAN (Smallest UnivalueSegment AssimilatingNucleus)”提取算子。SUSAN 提取算子的基本原理是,与每一图像点相关的局部区域具有相同的亮度。如果某一窗口区域内的每一像元亮度值与该窗口中心的像元亮度值相同或相似,这一窗口区域将被称之为“USAN”。计算图像每一像元的“USAN”,为我们提供了是否有边缘的方法。位于边缘上的像元的“USAN”较小,位于角点上的像元的“USAN”更小。因此,我们仅需寻找最小的“USAN”,就可确定角点。该方法由于不需要计算图像灰度差,因此,具有很强的抗噪声的能力。Edward Rosten and TomDrummond 在2006年提出了一种简单快速的角点探测算法,该算法检测的角点定义为在像素点的周围邻域内有足够多的像素点与该点处于不同的区域。应用到灰度图像中,即有足够多的像素点的灰度值大于该点的灰度值或者小于该点的灰度值。考虑下图中p点附近半径为3的圆环上的16个点,一个思路是若其中有连续的12个点的灰度值与p点的灰度值差别超过某一阈值,则可以认为p点为角点。这一思路可以使用机器学习的方法进行加速。对同一类图像,例如同一场景的图像,可以在16个方向上进行训练,得到一棵决策树,从而在判定某一像素点是否为角点时,不再需要对所有方向进行检测,而只需要按照决策树指定的方向进行2-3次判定即可确定该点是否为角点。
④ 我想问下 用SIFT提取的特征点 也就是关键点是些什么点 这些点中有角点或者圆心么
第一个为题:SIFT算法里面把角点,边缘点看做了不稳定的点,是需要去除的。所以提取不到角点;
匹配问题:只要找到了两幅图片的角点坐标,那么对两幅图片进行拼接,对应点连线即可,这里面也就涉及到一个坐标变换的问题。
⑤ 各位高手,matlab实现了两幅图像的角点检测,怎样实现角点匹配
角点匹配的话可以用描述子(比如sift)描述该点,给定一定阈值就可以匹配。 至于图像拼接,你可以参考homography这部分的内容。
⑥ 怎样利用CASS提取CAD方格网角点坐标及高程
我有CASS或CAD里提取点坐标及高程的插件,能够批量提取
⑦ CAD批量提取 闭合的不规则图形的角点坐标
我有CAD里批量提取点坐标的插件,并能够导出到EXCEL表格里
⑧ 求图像处理中角点检测算法FAST详细步骤,急
算法介绍:
1)通常情况下,可以将区域内的点分为3类,a.平坦的点,b.边缘上的点,c.角点。
2)若对于这3类点分别求取Ix,Iy,很显然,a类点的Ix和Iy都很小,b类点则是Ix和Iy有一个稍大一个稍小,而角点c则是两个值都很大。所以根据这种性质,可以区分出角点来。
【
求解Ix,Iy的过程说明:
利用单方向上(横轴&纵轴),点与周围点的差分来计算,有两种方法,
一是,取3x3邻域计算,通常取
Ix子模板: Iy子模板:
-1 0 1 -1 -1 -1
-1 0 1 0 0 0
-1 0 1 1 1 1
先对图像矩阵上每一点分别求取其Ix,Iy乘积后叠加的值,记为Ix(m,n),Iy(m,n).(其中,m,n分别为原矩阵的大小)
二是,直接只采用横轴和纵轴上的点计算差分。
】
% fx = [-1 0 1;-1 0 1;-1 0 1]; % 高斯函数一阶微分,x方向(用于改进的Harris角点提取算法)
fx = [-2 -1 0 1 2]; % x方向梯度算子(用于Harris角点提取算法)
Ix = filter2(fx,ori_im); % x方向滤波
% fy = [-1 -1 -1;0 0 0;1 1 1]; % 高斯函数一阶微分,y方向(用于改进的Harris角点提取算法)
fy = [-2;-1;0;1;2]; % y方向梯度算子(用于Harris角点提取算法)
Iy = filter2(fy,ori_im); % y方向滤波
3)考虑到图像一般情况下的噪声影响,采用高斯滤波去除噪声点。
Ix2 = Ix.^2;
Iy2 = Iy.^2;
Ixy = Ix.*Iy;
clear Ix;
clear Iy;
h= fspecial('gaussian',[7 7],2); % 产生7*7的高斯窗函数,sigma=2
Ix2 = filter2(h,Ix2);
Iy2 = filter2(h,Iy2);
Ixy = filter2(h,Ixy);
4)计算角点的准则函数R(即用一个值来判断该点来衡量这个点是否是角点),并标记角点(R(i,j)>0.01*Rmax,且R(i,j)为3x3邻域局部最大值)。
M = [Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)];
R(i,j) = det(M)-k*(trace(M))^2; % 计算R
【可以通过改变准则函数的计算来改进harris算法,上式中的k一般取0.04~0.06】
[height,width] = size(ori_im);
result = zeros(height,width); % 纪录角点位置,角点处result的值为1
R = zeros(height,width);
Rmax = 0; % 图像中最大的R值
for i = 1:height
for j = 1:width
M = [Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)];
R(i,j) = det(M)-0.06*(trace(M))^2;
if R(i,j) > Rmax
Rmax = R(i,j);
end
end
end
cnt = 0; %角点个数
for i = 2:height-1
for j = 2:width-1
% 进行非极大抑制,窗口大小3*3
if R(i,j) > 0.01*Rmax && R(i,j) > R(i-1,j-1) && R(i,j) > R(i-1,j) && R(i,j) > R(i-1,j+1) && R(i,j) > R(i,j-1) && R(i,j) > R(i,j+1) && R(i,j) > R(i+1,j-1) && R(i,j) > R(i+1,j) && R(i,j) > R(i+1,j+1)
result(i,j) = 1;
cnt = cnt+1;
end
end
end
[posc, posr] = find(result == 1);
disp(cnt); % 显示角点个数
imshow(ori_im);
hold on;
plot(posr,posc,'r+');
原图来自http://zh.wikipedia.org/wiki/%E8%A7%92%E6%A3%80%E6%B5%8B
检测后:
为了验证harris算子的旋转不变性,将原图旋转30度,见下
关于角点检测的其他算法:
1).susan算法
利用面积,如下:
如下图所示为SUSAN圆形模板与物体的5种几何位置关系,对于图像中非纹理区域的任一点,在以它为中心的模板窗中存在一块亮度与其相同的区域,这块区域即为SUSAN的USAN区域。USAN区域包含了图像结构的重要信息,
由图可知,当模板中心像素点位于区域内部时,USAN的面积最大,
当该像素点位于区域边界时,则面积为最大的一半,
当该像素点为角点时,USAN区域面积约为最大的1/4。
SUSAN根据不同位置时USAN区域的面积来考察当前像素点为区域内部点、边缘点或角点。
值得注意的是,关于计算usan面积,在圆邻域中,当像素点与某一点的灰度差小于某一阈值(通常取十分之一的极值(最大值-最小值))时,则认为该点在usan内。
2) CSS角点检测
通过canny算子计算出图像的edge,然后对edge进行表示成:
Γ (u)=[X(u,δ),Y(u,δ)](x(u,δ)表示高斯滤波后的横坐标,...)
对曲线上的点计算曲率,
选择曲率局部极大值点作为候选值点,当点同时满足下面两个条件时,认为该点为角点:
a.大于阈值T;
b.至少大于两侧相邻的点曲率极小值的两倍。
【对于canny提取出的曲线的填补(曲线可能有断裂),形成T型角点,若得出的角点与T型角点相邻,去掉T型角点】
3)
还有诸多算法,留待以后讨论。
参考:http://walle.sdsmt.e/faculty/rhoover/teaching/F11/692/Papers/HarrisStephens.pdf
以及F. Mokhtarian and R. Suomela, Robust Image Corner Detection Trough Curvature Scale Space, TPAMI, Vol. 20, No. 12, 1998.