Accord的FAST图像特征点算法样例解…

    xiaoxiao2021-03-25  233

    相比于基于c++的Opencv来说,Accord的大部分都是基于c#,偶尔会有托管调用来执行一些功能

     

    这里使用的用例,基于官方文档所提供的样例,我在理解结构的过程中修改了窗口的一部分。

    网盘链接:http://pan.baidu.com/s/1bpzA7AR 密码:yv2d

     

     

    FAST算法是一种角点检测算法,具体的原理可以看这里对Opencv官方文档所进行的翻译:http://blog.csdn.net/candycat1992/article/details/22285979

     

     Accord作为一个c#的类库,只要短短的几句就能完成,非常便捷,交互性也不错(相对于使用mfc或者cmd的opencv来说)。通过winform,wpf,我们可以简单的调用。

     

    总的来说就只有三个文档为主

     

     

     

     

    原先的文件只是利用了工程文件夹中的图片,为固定的图片调用与演示,为了更好的试验所以

    我追加了一个OpenFile按钮和一个textbox控件

     

    代码如下(用textbox来保存文件路径):

     

    private void button2_Click(object sender, EventArgs e)         {             if (DialogResult.OK == openFileDialog1.ShowDialog())             {                 textBox1.Text = openFileDialog1.FileName;                 pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);             }             if(textBox1.Text.Length >0)             {                 lenna.Dispose();                 lenna = new Bitmap(openFileDialog1.FileName);                            }         }

     

     

    整个程序的大致调用过程:

     

    读取目标图片-----》图片存入内存-----》设置FAST的临界值与抑制(?)------》应用FAST到图像上------》在picturebox控件上显示处理后的图片

     

    其中还有对描点颜色的配置

     

    ==================================================================

     

    创建新的FAST结构的实例化fast类,并直接进行配置

     FastCornersDetector fast = new FastCornersDetector()             {                 Threshold = (int)numThreshold.Value,                 Suppress = true             };

     

      创建一个新的FAST滤波,第二个参数就是描点的颜色             CornersMarker corners = new CornersMarker(fast, Color.DarkSeaGreen);

     

     

    这一句就是应用滤波器结果并显示到picturebox上面             pictureBox1.Image = corners.Apply(lenna);

     

     

     

     

    使用这一句

     pictureBox1.Image = Image.FromFile(openFileDialog1.FileName);

    来选定后面的pB图像位置,打开文件实际上是选定文件的路径。

     

     

    如果选用的文件路径正确那么就释放原先图片并载入该图片

     if(textBox1.Text.Length >0)             {                 lenna.Dispose();                 lenna = new Bitmap(openFileDialog1.FileName);                            }

     

     

    临界值40

    减少临界值为20

     

    转载请注明原文地址: https://ju.6miu.com/read-325.html

    最新回复(0)