随笔分类 -  算法

摘要://记录一下 public Image<Gray, byte> SIFT(Image<Gray, byte> img1, Image<Gray, byte> img2) { SIFTDetector sift = new SIFTDetector(); var f1 = sift.DetectFeatures(img1, null); var f2 = sift.DetectFeatures(img2, null); Features2DTracker... 阅读全文
posted @ 2011-12-02 09:53 RayTracer 阅读(734) 评论(3) 推荐(0)
摘要:以下为类的方法概览,方法摘要里标注[OK]的是效率已经超过调用OpenCV(使用Emgu 2.3版本)的,未标注的速度慢于OpenCV,标注[??]的尚未进行测试。代码下载地址:http://download.csdn.net/detail/wmesci/3868534namespace wmesci.Images { /// <summary>像素格式</summary> public enum PixelFormat { GRAY, BGR, RGB } /// <summary>非托管图像类</summary> public unsafe 阅读全文
posted @ 2011-11-29 22:16 RayTracer 阅读(474) 评论(0) 推荐(1)
摘要:经过前面的讨论,我对Image类进行了优化,代码如下: //C#灰度图像处理类,作者:wmesci //http://http://blog.csdn.net/wmesci unsafe class Image :CriticalHandle, IDisposable { [DllImport("kernel32.dll")] static extern IntPtr LocalAlloc(int flags, int size); [DllImport("kernel32.dll")] s... 阅读全文
posted @ 2011-11-25 20:17 RayTracer 阅读(1478) 评论(0) 推荐(1)
摘要:方便起见,下面再贴一下上次的对比结果: 1、 2、 注意:由于上面两次比较不在同一系统上,Stopwatch.Frequency的值可能不同,故这两次的结果之间不具有可比性!!—————————————————————————————————————————————————————— 先分析下Add/Sub两个方法,在Image类里使用的是指针+TPL(.NET 并行任务库),使用Parallel.For方法对每一行进行循环,这个应该很容易看懂,就不多讲了。下面来看下OpenCV是如何实现的: //文件:opencv\modules\core\srcvoid c... 阅读全文
posted @ 2011-11-25 11:31 RayTracer 阅读(2070) 评论(3) 推荐(0)
摘要:OpenCV是一套使用C/C++编写的开源计算机视觉库,全称Open Computer Vision,因其高效、全面,在计算机视觉领域应用极广。其在C#下的包装有多种,最常用的是Emgu。 本人最近在写一套计算机视觉处理软件,用的就是C# + Emgu,因为用到的OpenCV方法就那么几个(大概10多个),为了这些为数不多的方法而带着数MB的Emgu DLL,心里很是不爽,于是乎萌生了将这些方法全部用C# unsafe代码重写的想法,反正OpenCV是开源的,算法可以写成一样的,效率上应该差不到哪去。下面是我自己写的一个图像类: ///<summary>灰度图像处理类,作者:... 阅读全文
posted @ 2011-11-24 22:49 RayTracer 阅读(3839) 评论(0) 推荐(0)
摘要:这种方式的基本思想就是循环使用正则表达式找出字符串中不带括号的那一部分,再分析出各个数字和运算符以及函数,并执行运算,然后将结果替换原表达式中相应部分,直到最后不能再进行任何替换。如: (3+5)*sin(7+9) -----> (3+5)*sin(7+9) ----->8*sin(7+9) ----->8*sin16---->8*sin16 ------> 8*-0.2879 -----> -2.3 先定义几个正则表达式: static Regex Num = new Regex(@"(\-?\d+\.?\d*)"); //匹配浮点数字 阅读全文
posted @ 2011-09-28 12:16 RayTracer 阅读(1532) 评论(0) 推荐(0)