杭州网站推广优化哪里好,网站引导页是什么,asp网站变成php,网站规划与建设是什么意思Fast角点检测
基本原理是使用圆周长为N个像素的圆来判定其圆心像素P是否为角点#xff0c;如下图所示为圆周长为16个像素的圆#xff08;半径为3#xff09;#xff1b;OpenCV还提供圆周长为12和8个像素的圆来检测角点。
相对中心像素的位置信息
//圆周长为16
static c…Fast角点检测
基本原理是使用圆周长为N个像素的圆来判定其圆心像素P是否为角点如下图所示为圆周长为16个像素的圆半径为3OpenCV还提供圆周长为12和8个像素的圆来检测角点。
相对中心像素的位置信息
//圆周长为16
static const int offsets16[][2]
{{0, 3}, { 1, 3}, { 2, 2}, { 3, 1}, { 3, 0}, { 3, -1}, { 2, -2}, { 1, -3},{0, -3}, {-1, -3}, {-2, -2}, {-3, -1}, {-3, 0}, {-3, 1}, {-2, 2}, {-1, 3}
};//圆周长为12
static const int offsets12[][2]
{{0, 2}, { 1, 2}, { 2, 1}, { 2, 0}, { 2, -1}, { 1, -2},{0, -2}, {-1, -2}, {-2, -1}, {-2, 0}, {-2, 1}, {-1, 2}
};//圆周长为8
static const int offsets8[][2]
{{0, 1}, { 1, 1}, { 1, 0}, { 1, -1},{0, -1}, {-1, -1}, {-1, 0}, {-1, 1}
};角点判定条件
在圆周上顺时针从顺时针方向从1到N的顺序对圆周像素点进行连续编号。如果在圆周上有M个连续的像素的亮度都比圆心像素的亮度还要亮或者比圆心像素的亮度还要暗并且亮度差都大于设置的阈值t则圆心像素被确定为角点。因此成为角点必须满足下列两个条件之一。
条件1集合S由圆周上M个连续的像素x组成该集合的任意像素x都满足 I x I p t I_xI_pt IxIpt条件2集合S由圆周上M个连续的像素x组成该集合的任意像素x都满足 I x I p − t I_xI_p-t IxIp−t
在OpenCV中有三种模式如下
TYPE_9_16表示圆周上16个像素点/连续9个像素点满足条件TYPE_7_12表示圆周上12个像素点/连续7个像素点满足条件TYPE_5_8表示圆周上8个像素点/连续5个像素点满足条件
非角点检测
在一副图像中非角点往往是占多数。而非角点检测比角点检测容易很多因此首先剔除非角点将大大提高角点检测速度。例如当圆周长N为16个像素连续像素M为12所以编号为15913的这4个圆周像素点中应该至少有3个满足条件。在OpenCV中采用了另一种方法来判断非角点即同时检测任意直径上两个端点像素的像素值。
非极大值抑制
如果N一定我们把使P仍然是角点的最大阈值 t t t定义为P的角点响应值通过迭代每次迭代比较8个连续的圆周像素与圆心像素之间的绝对差值得到8个绝对差值中的最小值 d d d与这8个连续像素两端相邻的两个圆周像素与圆心像素的绝对差值分别为 d 0 d_0 d0和 d 9 d_9 d9则此次迭代所得到的角点响应值 v i v_i vi为 v i m a x ( t , m i n ( d , d 0 ) , m i n ( d , d 9 ) ) v_imax(t,min(d,d_0),min(d,d_9)) vimax(t,min(d,d0),min(d,d9)) 16个圆周像素需要迭代16次则最终的角点响应值V为 V m a x ( v i ) Vmax(v_i) Vmax(vi) 角点响应 V V V得到后需要在 3 ∗ 3 3*3 3∗3的邻域内比较 V V V只保留那些比其8邻域都大的像素作为最终的角点。非角点的响应值定义为0。
Fast角点检测步骤
对被检测像素的16个圆周像素的部分像素点进行非角点检测如果初步判断为角点则对圆周上的全部像素进行角点检测对角点进行非极大值抑制最终得到角点
OpenCV函数
void cv::FAST(InputArray image, std::vectorKeyPoint keypoints, int threshold, bool nonmaxSuppression true) void cv::FAST(InputArray image, std::vectorKeyPoint keypoints, int threshold, bool nonmaxSuppression, FastFeatureDetector::DetectorType type) Parameters
image 输入图像灰度图像
keypoints 检测的关键角点
threshold 中心像素与围绕该像素的圆形像素之间强度差的阈值
nonmaxSuppression 如果为true, 则对检测到的角点(关键点)进行非极大值抑制
type 三种选择FastFeatureDetector::TYPE_9_16, FastFeatureDetector::TYPE_7_12, FastFeatureDetector::TYPE_5_8