码迷,mamicode.com
首页 > Windows程序 > 详细

halcon与delphi

时间:2015-10-01 14:01:09      阅读:7584      评论:0      收藏:0      [点我收藏+]

标签:

halcon与delphi

技术分享

      halcon与delphi系列,早两年就想写,不过一方面,因为halcon是售价高达数万欧元(不是人民币)的专业软件,知道的人不多,
      另外一方面,个人琐事太多,一直没时间动笔,这次,借国庆空闲,匆匆忙忙,开个头先。
      这个标题本来准备用:《halcon、opencv与delphi、python、vb、c++》
     太杂,虽然现在流行长标题,还是简化了。

技术分享

 

      做图像分析有十多年,写过原生的OCR字符识别,当时没有opencv,全部是原生代码,写的很痛苦,和写汇编差不多
      不过也学习到不少东西,blur、细化、骨架、闭合、。。。。。。,从这点看,学习下opencv,对于基础也是必要的
      效果还可以,基本上除开QQ过于变态,一般的论坛、csdn、工行、移动、博客园、老版新浪微博的验证码,都能简单愉快的暴力识别。
      这几年,主要做图像分析、字体结构的图像分析、AI方面的项目,实业方面,主要是PCB抄板设计,这个是protel电路图逆向工程,必需的。

      图像分析主要用过agg、opencv、cgal、labview、vision、halcon、sci、pil,以及一大波gis内置的高素质几何计算库
      编程语言早期是:c、c++、,这几年是:python、delphi,
      目前,图像分析基本上就只是:delphi+halcon,(机器学习与大数据,是python+sci.xxx+pandas)
      delphi+halcon,这个组合,可以说是图像分析的神级配置,无论是开发效率,还是运行实在是太高了,分分钟秒杀c+opencv,c+python,以及其他各种组合,

      特别是开发效率,几乎只有cv与c++的十分之一一,因为halcon内置的就是简化版本的pascal脚本型编程语言,而且halcon的控件封装,非常庞大、专业、细致,基本上和原生vcl控件差不多。

halcon与opencv

      机器人,是目前国家鼓励的科技、产业项目,目前程序员缺口极大,而国内早期,和目前,delphi程序员,可能是世界上最多的,早几年,还传说,盛大准备收购delphi,虽然没成,不过绝对不是钱的问题。
      机器人,最核心的人工智能与机器视觉,人工智能,python已经是标准
      机器视觉,说白了,还是图像分析,这块,德国的halcon(海尔肯,自己随便音译的),是目前行业最好的方案,基本上没有对手,
      国内,学术界目前还是opencv为主,虽然cv是免费的,halcon的售价高达数万欧元,但凭借其强大的功能和一线生产力效率,企业领域,基本上是halcon独大。
      opencv虽然很强大,但与halcon相比,无论在开发效率,运行速度以及内置模块功能方面,完全是业余级的。
      这个原因是多方面的:

  • ::opencv是开源软件,无法收录最新的专利、商业算法,至少有5-10年时间的技术差距
  • ::许多企业自身开发的算法是严格保密的,halcon不少内置函数,即使是专业人员也无法理解函数采用的算法、模型。
  • ::opencv偏重于学术,算法虽然简单,但效率不高,即使是最基本的hough直线检测,如果不对内部源码进行二次修改,对原图进行过滤,结果基本无法直接使用
  • ::opencv优化不够,近年虽然也加入gpu、cuda和c语言高效函数,但与halcon汇编级的优化,差距还是很大的
  • ::opencv不够全面,只有最基本的图像分析模块,缺乏专业的几何计算模块,由于实际项目,必需记住sci,sympy,cgal等其他几何计算库,大大增加了开发成本和学习周期

   例如,即使是最简单的轮廓分析,opencv只有最基本的矩形、园、椭圆几种,而halcon要丰富的多;

    而再如,形态学内置模型,cv只有cross、rect、circle三种,而halcon预支模型高达数十种。

    象下图的堆砌原件,opencv基本上无能为力,而halcon直接秒杀:(ps,本blog还缺几张图,有时间补)

技术分享

halcon与delphi

      halcon的内置语言,基本上是简化版本的pascal,不过增加了python的元组tuple数据。
      奇怪的是,国内halcon开发,基本上是vb,和c++(csharp)两种模式
      一线,基层用户用vb的多,专业学者,大部分使用c++(csharp),而delphi很少有人用。
      这个一方面,与delphi自身近年衰退有关,另外,delphi调用halcon,每次会有20m左右的内存泄露,也有关系。
     不过,delphi再不行,在TIOBE2105编程语言排名榜上,也是仅次与c(含c、c++、objc、occsharp)的行业第二大原生编程语言。
     (ps,xe9、xe10,delphi强化了并行开发,不过远不如python的map优雅方便,如果delphi能够整合cuda开发,进入gpu、hpc领域,才是真正凤凰涅槃)

       而内存泄露,是crack的问题,就是c++,也有,用vb因为使用halcon的.net封装模块,因为net平台内置gc管理,可以解决,其实delphi也可以采用.net模块

 技术分享

delphi、c++、vb、python与图像处理

 

      vb即使对于初学者,和在产品开发原型阶段,也是很差的图像开发语言。
      初学者,以及简单的产品原型开发,笔者推荐python+opencv,cv3.0已经支持python3了,
      可惜,delphi的cv库还是v2.49版本的,不然,delphi+cv3也是个不错的选择,特别是调试、效率方面

     c++,无论如何,不是图像分析理想的工具,
     对于图像分析,c语言类的底线,差不读只有c了,即使是opencv,90%也是c,
    (fontforge的开发者,是如此痛恨c++,以至于在faq里,对c++大段吐槽)

     图像分析起点就是2D,二维的,复杂一些,连续图像序列,3D,动态图像分析,都必需是多维的数据模型。
     而c语言,先天缺乏内置数组,采用*指针结构,作为数组。
     *指针数组,对于简单的一维数据分析,勉强可以,但对于2维、3维以及更高的多维数据,非常痛苦。
     大家知道,图像处理非常吃内存,而c的内存管理,完全是*指针,欧式,复杂无比。
     对于一线程序员而言,采用c++进行图像处理,在c++编程语言方面的时间成本,甚至要高于图像分析算法本身。
     至于c++,唯一的优点,可能就是速度。
     而c的速度优势,是相对于vb、python的,可能有10-20倍的运行速度优势,不过对于delphi,就是在最严格的对比当中,也是基本差不多。
     不过delphi十倍于c的开发效率,使程序员,能够在软件开发的原型、中期、调试、交付、维护等各个阶段,采用更多的模型算法,进行优化,因此,实战当中,delphi+halcon的组合,要远远优于c+halcon,c+opencv
     以往,图像处理,delphi唯一的短板,是缺乏工业级的图像库,cv、cgal对于delphi的支持一直不够好
     不过短板这个已经被halocn给完美的弥补了。

     重要的话要说三遍,3x

      delphi+halcon,图像分析神级配置,分分钟秒杀c+opencv,c+python,以及其他各种组合

      delphi+halcon,图像分析神级配置,分分钟秒杀c+opencv,c+python,以及其他各种组合

      delphi+halcon,图像分析神级配置,分分钟秒杀c+opencv,c+python,以及其他各种组合

 

halcon与delphi

标签:

原文地址:http://www.cnblogs.com/ziwang/p/4850898.html

(1)
(9)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!