图像特征检测(Image Feature Detection)(二)

FAST角点检测

FAST角点由E. Rosten教授提出,相比其他检测手段,这种方法的速度正如其名,相当的 快。值得关注的是他所研究的理论都是属于实用类的,都很快。Rosten教授实现了FAST角点 检测,并将其提供给了OpenCv,相当的有爱呀;不过OpenCv中的函数和Rosten教授的实现似 乎有点点不太一样。遗憾的是,OpenCv中目前还没有FAST角点检测的文档。下面是我从 Rosten的代码中找到的函数声明,可以看到粗略的参数说明。

/*
The references are:
  * Machine learning for high-speed corner detection,

    E. Rosten and T. Drummond, ECCV 2006
  * Faster and better: A machine learning approach to corner  detection
    E. Rosten, R. Porter and T. Drummond, PAMI, 2009
*/
void cvCornerFast( const CvArr* image, int threshold, int N,
                    int nonmax_suppression, int*  ret_number_of_corners,
                    CvPoint** ret_corners);

image:      OpenCV image in which to detect corners. Must be 8  bit unsigned.
threshold:  Threshold for detection (higher is fewer corners). 0-- 255
N:          Arc length of detector, 9, 10, 11 or 12. 9 is  usually best.
nonmax_suppression: Whether to perform nonmaximal suppression.
ret_number_of_corners: The number of detected corners is returned  here.
ret_corners: The corners are returned here.

EmguCv中的 Image<TColor,TDepth>.GetFASTKeypoints方法也实现了FAST角点检 测,不过参数少了一些,只有 threshold和nonmaxSupression,其中N我估计取的默认值9, 但是返回的角点数目我不知道是怎么设置的。

使用FAST角点检测的示例代码如下:

FAST关键点

private string FASTKeyPointFeatureDetect()
         {
             //获取参数
             int threshold = int.Parse (txtFASTThreshold.Text);
             bool nonmaxSuppression =  cbFASTNonmaxSuppression.Checked;
             bool showDetail = cbFASTShowDetail.Checked;
             //计算
             Stopwatch sw = new Stopwatch();
             sw.Start();
             MKeyPoint[] keyPoints =  imageSourceGrayscale.GetFASTKeypoints(threshold, nonmaxSuppression);
             sw.Stop();
             //显示
             Image<Bgr, Byte> imageResult =  imageSourceGrayscale.Convert<Bgr, Byte>();
             StringBuilder sbResult = new StringBuilder();
             int idx = 0;
             foreach (MKeyPoint keypoint in keyPoints)
             {
                 imageResult.Draw(new CircleF(keypoint.Point,  (int)(keypoint.Size / 2)), new Bgr(255d, 0d, 0d), (int)(keypoint.Size  / 4));
                 if (showDetail)
                     sbResult.AppendFormat("第{0}点(坐标 :{1},尺寸:{2},方向:{3}°,响应:{4},octave:{5}),",
                                 idx,  keypoint.Point, keypoint.Size, keypoint.Angle, keypoint.Response,  keypoint.Octave);
                 idx++;
             }
             pbResult.Image = imageResult.Bitmap;
             //释放资源
             imageResult.Dispose();
             //返回
             return string.Format("·FAST关键点,用时{0:F05}毫秒 ,参数(阀值:{1},nonmaxSupression:{2}),检测到{3}个关键点\r\n{4}",
                 sw.Elapsed.TotalMilliseconds, threshold,  nonmaxSuppression, keyPoints.Length, showDetail ? (sbResult.ToString() +  "\r\n") : "");
         }

时间: 2024-09-25 06:03:31

图像特征检测(Image Feature Detection)(二)的相关文章

图像特征检测(Image Feature Detection)(三)

SiftDetector类的实现代码如下所示: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; using System.Runtime.InteropServices; using Emgu.CV; using Emgu.CV.Structure; namespace ImageProcessLearn { /// <summa

图像特征检测(Image Feature Detection)(一)

前言 图像特征提取是计算机视觉和图像处理中的一个概念.它指的是使用计算机提取图像信 息,决定每个图像的点是否属于一个图像特征.本文主要探讨如何提取图像中的"角点"这 一特征,及其相关的内容.而诸如直方图.边缘.区域等内容在前文中有所提及,请查看相 关文章.OpenCv(EmguCv)中实现了多种角点特征的提取方法,包括:Harris角点. ShiTomasi角点.亚像素级角点.SURF角点.Star关键点.FAST关键点.Lepetit关键点等等 ,本文将逐一介绍如何检测这些角点.在此

不能ASP图像组件来生成图像的ASP计数器程序(二)

程序|计数器 -----------------------counter.asp---------------------<%user=request.querystring("user")%><!--#include file="header"--><%set fsFilesys=CreateObject("Scripting.FileSystemObject")set myText=fsFilesys.Open

不用ASP图像组件来生成图像的ASP计数器程序(二)

程序|计数器 -----------------------counter.asp---------------------<%user=request.querystring("user")%><!--#include file="header"--><%set fsFilesys=CreateObject("Scripting.FileSystemObject")set myText=fsFilesys.Open

不能ASP图像组件来生成图像的ASP计数器程序(二) by qianfengyun Explorer

-----------------------counter.asp---------------------<%user=request.querystring("user")%><!--#include file="header"--><%set fsFilesys=CreateObject("Scripting.FileSystemObject")set myText=fsFilesys.OpenTextFil

PHP基于phpqrcode生成带LOGO图像的二维码实例_php技巧

本文实例讲述了PHP基于phpqrcode生成带LOGO图像的二维码.分享给大家供大家参考.具体如下: 这里PHP使用phpqrcode生成带LOGO图像的二维码,使用起来很方便,代码中含 生成不带Logo的标准二维码和生成带Logo的二维码,可根据注释修改使用. <?php include ('phpqrcode.php'); $value = 'http://www.codesc.net';//二维码数据 $errorCorrectionLevel = 'L';//纠错级别:L.M.Q.H

OpenCV进行图像相似度对比的几种办法

转载请注明出处:http://blog.csdn.net/wangyaninglm/article/details/43853435, 来自:shiter编写程序的艺术 对计算图像相似度的方法,本文做了如下总结,主要有三种办法: 1.PSNR峰值信噪比 PSNR(Peak Signal to Noise Ratio),一种全参考的图像质量评价指标. 简介:https://en.wikipedia.org/wiki/Peak_signal-to-noise_ratio PSNR是最普遍和使用最为广

C#存取数据库中的图像

一.数据库中的图像存取方法 1. 读取image类型的数据 读取image类型数据的方法可分为以下几步: 1) 先使用无符号字节数组存放数据库对应的数据集中表的image类型字段的值.例如: byte[] bytes= (byte[]) image类型字段值 2) 使用MemoryStream类,该类创建支持存储区为内存的流.即MemoryStream类创建的流以内存而不是磁盘或网络连接作为支持存储区.其构造函数为: public MemoryStream(byte[] buffer); 3)

opencv 二值图 坐标 阈值

问题描述 opencv 二值图 坐标 阈值 opencv为什么设置二值图阈值,保存下来的二值图阈值都?提二值图坐标如何将坐标以线条为单位保存连续坐标?求大神教我,最好有源码,拜托了,新手 解决方案 什么叫以线条为单位保存连续坐标?设置二值图是为了降噪,出去噪音,增加图像的识别率 解决方案二: 什么叫以线条为单位保存连续坐标?设置二值图是为了降噪,出去噪音,增加图像的识别率 解决方案三: 你的问题都没说清楚哦