图像识别_图像识别算法 - CSDN
图像识别 订阅
图像识别,是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对象的技术,是应用深度学习算法的一种实践应用。 [1]  现阶段图像识别技术一般分为人脸识别与商品识别,人脸识别主要运用在安全检查、身份核验与移动支付中;商品识别主要运用在商品流通过程中,特别是无人货架、智能零售柜等无人零售领域 [2]  。图像的传统识别流程分为四个步骤:图像采集→图像预处理→特征提取→图像识别。图像识别软件国外代表的有康耐视等,国内代表的有图智能、海深科技等。另外在地理学中指将遥感图像进行分类的技术。 展开全文
图像识别,是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对象的技术,是应用深度学习算法的一种实践应用。 [1]  现阶段图像识别技术一般分为人脸识别与商品识别,人脸识别主要运用在安全检查、身份核验与移动支付中;商品识别主要运用在商品流通过程中,特别是无人货架、智能零售柜等无人零售领域 [2]  。图像的传统识别流程分为四个步骤:图像采集→图像预处理→特征提取→图像识别。图像识别软件国外代表的有康耐视等,国内代表的有图智能、海深科技等。另外在地理学中指将遥感图像进行分类的技术。
信息
所属学科
计算机科学
外文名
image identification
中文名
图像识别
图像识别简介
图形刺激作用于感觉器官,人们辨认出它是经验过的某一图形的过程,也叫图像再认。在图像识别中,既要有当时进入感官的信息,也要有记忆中存储的信息。只有通过存储的信息与当前的信息进行比较的加工过程,才能实现对图像的再认。
收起全文
精华内容
参与话题
  • 本文会从理论基础、数据采集、训练集打包、模型训练、模型测试、模型部署等方面完整讲解一个tensorflow图片识别项目,学完本项目可了解tensorflow
  • 图像识别的原理、过程、应用前景

    万次阅读 多人点赞 2019-05-10 11:29:54
    图像识别的原理、过程、应用前景1、图像识别技术的引入1.1图像识别技术原理1.2模式识别2、图像识别技术的过程3、图像识别技术的分析3.1神经网络的图像识别技术3.2非线性降维的图像识别技术3.3 图像识别技术的应用及...


    在这里插入图片描述
    图像识别技术是信息时代的一门重要的技术,其产生目的是为了让计算机代替人类去处理大量的物理信息。随着计算机技术的发展,人类对图像识别技术的认识越来越深刻。图像识别识别的过程分为信息的获取、预处理、特征抽取和选择、分类器的设计和分类决策。简单分析了图像识别技术的引入、其技术原理以及模式识别等,之后介绍了神经网络的图像识别技术和非线性姜维的图像识别技术以及图像识别技术的应用。从中可以总结出图像处理技术的应用广泛,人类的生活将无法离开图像识别技术,研究图像识别技术具有重大的意义。

    1、图像识别技术的引入

    图像识别是人工智能的一个重要的领域。图像识别的发展经历了三个阶段:文字识别、数字图像处理与识别、物体识别。图像识别,顾名思义,就是对图像做出各种处理、分析,最终识别我们所要研究的目标。今天所指的图像识别并不仅仅是用人类的肉眼,而是借助计算机技术进行识别。虽然人类的识别能力很强大,但是对于高速发展的的社会,人类自身识别能力已经满足不了我们的需求,于是就产生了基于计算机的图像识别技术。这就像人类洋酒生物细胞,完全靠肉眼观察细胞是不现实的,这样自然就产生了显微镜等用于精确观测的仪器。

    1.1图像识别技术原理

    其实图像识别背后的技术的原理并不是很难,只是器要处理的信息比较繁琐。计算机的任何处理技术都不是凭空产生的,它都是学者们从生活实践中得到启发而利用程雪将其模拟实现的。计算机的图像识别技术在原理上并没有本质的区别,只是机器缺少人类在感觉与视觉差上的影响罢了。人类的图像识别也不单单是凭借从整个图像存储在脑海中的记忆来识别的,我们识别图像都是依靠图像所觉有的本身特征而将这些图像分了类,然后通过各个类别所觉有的特征将图像识别出来的,只是很多的时候我们没有意识到这一点,当看到一张图片时,我们的大脑会迅速将图像识别出来的,只是很多时候我们没有意识到这一点。当看到一张图片时,我们的大脑会迅速的感应到是否讲多此图片或与其相似的图片。其实在“看到”与“感应到”的中间经历了一个迅速识别的过程,这个识别的过程和搜索有些类似。在这个过程中,我们的大脑会根据存储记忆中已经分好的类别进行识别,查看是否有与该图像具有相同或类似特征的存储记忆,从而识别出是否见过该图像.机器的图像识别技术也是如此,通过分类并提取重要特征而排除多余的信心来识别图像。机器的图像识别技术也是如此,通过分类并提取重要特征而排出多余的信息来识别图像。机器所提取的这些特征优势会非常明显,有事有事很普通,这在很大程度上影响了机器的识别速率。总之,在计算机视觉识别中,图像的 内容通常是图像特征进行描述。

    1.2模式识别

    模式识别是人工智能和新科学的重要组成部分。模式识别是指对表示事务或现象的不同形式的信息做分析和处理从而得到一个事务或现象做出描述、辨认和分类的过程。

    计算机的图像识别技术就是模拟人类的图像识别过程。在图像识别的过程中进行模式识别是必不可少的。模式识别原本是人类的一项基本智能,但随着计算机的发展和人工智能的兴起,人类本身的模式识别已经满足不了生活的需要,于是人类就希望用计算机来代替或扩展人类的部分脑力劳动。这样计算机的模式识别就产生了。简单地说,模式识别就是对数据进行分类,它是一门与数学紧密结合的科学,其中所用的思想大部分是概率与统计。模式识别主要分为三种:统计模式识别,句法模式识别、模糊模式识别。

    2、图像识别技术的过程

    既然计算机的图像识别技术与人类的图像识别原理相同,那它们的过程也是大同小异的。图像识别技术也分为已下几步:信息的获取,预处理、特征抽取和选择、分类器设计和分类决策。
    信息的获取指通过传感器,将光或声音等信息转化为电信息。也就是获取研究对象的基本信息并通过某种方法将其转变为机器能够认识的信息。
    预处理主要是指图像处理中的去燥、平滑、变换等操作,从而加强图像的重要特征。
    特征抽取和选择是指在模式识别中,需要进行特征的抽取和选择。简单的理解就是我们所研究的图像是各式各样的,如果需要利用某种方法将它们区分开,就要通过这些图像所具有的本身特征来识别,而获取这些特征过程就是特征抽取。在特征抽取中所得到的特征也许对此次识别并不都是有用的,这个时候就要提取有用的特征,这就是特征的选择。特征抽取和选择在图像识别过程中是非常关键的技术之一,所以对这一步的理解是图像识别的重点。
    分类器设计是指通过训练而得到一张识别规则,通过此识别规则可以得到的一种特征分类,使图像识别技术能够得到高识别率。分类决策时是指在特征空间中对识别对对象进行分类,从而更好地识别所研究的对象具体属于哪一类。

    3、图像识别技术的分析

    随着计算机技术的迅速发展和科技的不断进步,图像识别技术已经在众多领域得到了应用。计算机在很多方面确实具有人类所无法超越的优势,也正是因为这样,图像识别技术才能为人类社会带来更多的应用。

    3.1神经网络的图像识别技术

    神经网络图像识别技术是一种比较新型的图像识别技术,是在传统的图像识别方法和基础上融合神经网络算法的一种图像识别方法。这里的神经网络是指人工神经网络,也就是说这种神经网络并不是动物本身所具有的真正的神经网络,而是人类模仿动物神经网络后人工生成的。在神经网络图像识别技术中,遗传算法BP网络项融合的神经网络图像识别模型是非常经典的,在很多领域都有它的应用。在图像识别系统中利用神经网络系统,一般会先提取图像的特征,再利用图像所具有的特征映射到神经网络进行图像识别分类。以汽车牌照自动识别技术为例,当汽车通过的时候,汽车自身具有的检测设备会有所感应,此时检测设备就会启用图像采集装置来获取汽车正反面的图像。获取了图像后必须将图像上传到计算机进行保存以便识别。最后车牌定位模块就会提取车牌信息,对车牌上的字符进行识别并显示最终的结果。在对车牌的上的字符进行识别的过程中就用到了机遇模版匹配算法和人工神经网络算法。

    3.2非线性降维的图像识别技术

    计算机的图像识别技术是一个异常高维的识别技术。不管是图像本身的分辨率如何,其产生的数据经常是多维性的,这给计算机的识别带来了非常大的困难。想让计算极具有高效的识别能力,最直接有效的方式就是降维,降维分为线性降维和非线性降维。例如主要成分分析(PCA)和线性奇异分心(LDA)等就是常见的线性降维方法,他的特点是简单、易于理解。但是通过线性降维处理的是整体的数据集合,所求的是整个数据集合的最优低维投影。经过验证,这种线性的降维策略计算复杂度高而且占用相对较多的时间和空间,因此就产生了基于非线性降维的图像识别技术,它是一种极其有效的非线性特征提取方法。此技术可以发现图像的非线性结构而且可以在不破坏其基础上对其进行降维,是计算机的图像识别在尽量低的维度进行,这样就提高了识别速率。例如人脸图像识别系统所需的维数通常很高,其复杂度之高对计算机来说无疑是巨大的“灾难”。由于在高维度空间中人脸图像的不均匀分布,使得人类可以通过非线性降维技术来得到分布紧凑的人脸图像,从而提高人脸识别技术的高效性.

    3.3 图像识别技术的应用及前景

    计算机的图像识别技术在公共安全、生物、工业、农业、交通、医疗等很多领域都有应用。例如交通方面的车牌识别系统;公共安全方面的的人脸识别技术、指纹识别技术;农业方面的种子识别技术、食品品质检测技术;医疗方面的心电图识别技术等。随着计算机技术的不断发展,图像识别技术也在不断的优化,其算法也在不断改进。

    转自(https://mp.weixin.qq.com/s/THE5B77C_AJa5y6sfOXpaA )侵删

    展开全文
  • python人工智能-图像识别

    万次阅读 多人点赞 2019-08-03 16:43:15
    一、安装库 首先我们需要安装PIL和pytesseract库。...pytesseract:图像识别库。 我这里使用的是python3.6,PIL不支持python3所以使用如下命令 pip install pytesseract pip install pillow 如果是p

    一、安装库

    首先我们需要安装PIL和pytesseract库。
    PIL:(Python Imaging Library)是Python平台上的图像处理标准库,功能非常强大。
    pytesseract:图像识别库。

    我这里使用的是python3.6,PIL不支持python3所以使用如下命令

    pip install pytesseract
    pip install pillow
    

    如果是python2,则在命令行执行如下命令:

    pip install pytesseract
    pip install PIL
    

    这时候我们去运行上面的代码会发现如下错误:

    错误提示的很明显:
    No such file or directory :"tesseract"

    这是因为我们没有安装tesseract-ocr引擎

    二、tesseract-ocr引擎

    光学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程。OCR技术非常专业,一般多是印刷、打印行业的从业人员使用,可以快速的将纸质资料转换为电子资料。关于中文OCR,目前国内水平较高的有清华文通、汉王、尚书,其产品各有千秋,价格不菲。国外OCR发展较早,像一些大公司,如IBM、微软、HP等,即使没有推出单独的OCR产品,但是他们的研发团队早已掌握核心技术,将OCR功能植入了自身的软件系统。对于我们程序员来说,一般用不到那么高级的,主要在开发中能够集成基本的OCR功能就可以了。这两天我查找了很多免费OCR软件、类库,特地整理一下,今天首先来谈谈Tesseract,下一次将讨论下Onenote 2010中的OCR API实现。可以在这里查看OCR技术的发展简史。
    Tesseract的OCR引擎最先由HP实验室于1985年开始研发,至1995年时已经成为OCR业内最准确的三款识别引擎之一。然而,HP不久便决定放弃OCR业务,Tesseract也从此尘封。
    数年以后,HP意识到,与其将Tesseract束之高阁,不如贡献给开源软件业,让其重焕新生--2005年,Tesseract由美国内华达州信息技术研究所获得,并求诸于Google对Tesseract进行改进、消除Bug、优化工作。

    ###安装tesseract-ocr引擎

    brew install tesseract
    

    然后我们通过tesseract -v看一下是否安装成成功

    tesseract 3.05.01
    leptonica-1.75.0
    libjpeg 9b : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11
    

    这时候我们运行上面代码会出现乱码

    这是因为tesseract默认只有语言包中没有中文包,如下图:

    ###安装tesseract-ocr语言包
    我们去GitHub下载我们需要的语言包,这里我只下载了chi_tra.traineddatachi_sim.traineddata
    github:tesseract-ocr/tessdata
    然后放到/usr/local/Cellar/tesseract/3.05.01/share/tessdata路径下面。

    可以通过tesseract --list-langs查看本地语言包:

    可以通过tesseract --help-psm 查看psm

    0:定向脚本监测(OSD)
    1: 使用OSD自动分页
    2 :自动分页,但是不使用OSD或OCR(Optical Character Recognition,光学字符识别)
    3 :全自动分页,但是没有使用OSD(默认)
    4 :假设可变大小的一个文本列。
    5 :假设垂直对齐文本的单个统一块。
    6 :假设一个统一的文本块。
    7 :将图像视为单个文本行。
    8 :将图像视为单个词。
    9 :将图像视为圆中的单个词。
    10 :将图像视为单个字符。

    为什么这里要强调语言包和psm,因为我们在使用中会用到,
    比如多个语言包组合并且视为统一的文本块将使用如下参数:
    pytesseract.image_to_string(image,lang="chi_sim+eng",config="-psm 6")
    这里我们通过+来合并使用多个语言包。

    接下来我们看一下配置好一切的正确结果。

    import pytesseract
    from PIL import Image
    
    image = Image.open("../pic/c.png")
    code = pytesseract.image_to_string(image,lang="chi_sim",config="-psm 6")
    print(code)
    

    此时大公告成。

    ~~号外~~福利~~号外~~
    程序员的福音: “老曾筋骨祛痛贴”,百年祖传配方,专治腰间盘肩周颈椎坐骨神经腰腿疼痛等,博主亲测效果非常棒,因长期久坐写代码,坐姿不规范导致脖子疼,腰椎疼,用过之后疼痛逐渐缓解,现在已无任何疼痛,用过后让你写代码一身轻松,so easy,妈妈再也不用担心我们写代码了。

    扫码下方二维码,关注公众号“伟大程序猿的诞生“,回复“膏药”领取优惠券,进行购买
    扫码关注公众号“伟大程序猿的诞生“,更多干货新鲜文章等着你~

    公众号回复“资料获取”,获取更多干货哦~

    有问题添加本人微信号“fenghuokeji996” 或扫描博客导航栏本人二维码

    我的博客即将同步至腾讯云+社区,邀请大家一同入驻:
    https://cloud.tencent.com/developer/support-plan?invite_code=ncnq0hloo5yw

    展开全文
  • 图像识别算法

    万次阅读 多人点赞 2017-09-04 19:13:49
    图像特征提取是图像分析与图像识别的前提,它是将高维的图像数据进行简化表达最有效的方式,从一幅图像的M×N×3的数据矩阵中,我们看不出任何信息,所以我们必须根据这些数据提取出图像中的关键信息,一些基本元件...

    图像特征包括颜色特征、纹理特、形状特征以及局部特征点等。

    局部特点具有很好的稳定性,不容易受外界环境的干扰。

    1. 局部特征点

    图像特征提取是图像分析与图像识别的前提,它是将高维的图像数据进行简化表达最有效的方式,从一幅图像的M×N×3的数据矩阵中,我们看不出任何信息,所以我们必须根据这些数据提取出图像中的关键信息,一些基本元件以及它们的关系。

    局部特征点是图像特征的局部表达,它只能反正图像上具有的局部特殊性,所以它只适合于对图像进行匹配,检索等应用。对于图像理解则不太适合。而后者更关心一些全局特征,如颜色分布,纹理特征,主要物体的形状等。全局特征容易受到环境的干扰,光照,旋转,噪声等不利因素都会影响全局特征。相比而言,局部特征点,往往对应着图像中的一些线条交叉,明暗变化的结构中,受到的干扰也少。

    而斑点与角点是两类局部特征点。斑点通常是指与周围有着颜色和灰度差别的区域,如草原上的一棵树或一栋房子。它是一个区域,所以它比角点的噪能力要强,稳定性要好。而角点则是图像中一边物体的拐角或者线条之间的交叉部分。

    2. 斑点检测原理与举例

    2.1 LoG与DoH

    斑点检测的方法主要包括利用高斯拉普拉斯算子检测的方法(LOG),以及利用像素点Hessian矩阵(二阶微分)及其行列式值的方法(DOH)。

    LoG的方法已经在斑点检测这入篇文章里作了详细的描述。因为二维高斯函数的拉普拉斯核很像一个斑点,所以可以利用卷积来求出图像中的斑点状的结构。

    DoH方法就是利用图像点二阶微分Hessian矩阵:

    H(L)=[LxxLxyLxyLyy]

    以及它的行列式的值DoH(Determinant of Hessian):

    det=σ4(Lxx(x,y,σ)Lyy(x,y,σ)−Lxy2(x,y,σ))

    Hessian矩阵行列式的值,同样也反映了图像局部的结构信息。与LoG相比,DoH对图像中的细长结构的斑点有较好的抑制作用。

    无论是LoG还是DoH,它们对图像中的斑点进行检测,其步骤都可以分为以下两步:

    1)使用不同的σ生成(∂2g∂x2+∂2g∂y2)∂2g∂x2,∂2g∂y2,∂2g∂x∂y模板,并对图像进行卷积运算;

    2)在图像的位置空间与尺度空间中搜索LoG与DoH响应的峰值。

    2.2 SIFT

    详细的算法描述参考:SIFT定位算法关键步骤的说明

    2004年,Lowe提高了高效的尺度不变特征变换算法(SIFT),利用原始图像与高斯核的卷积来建立尺度空间,并在高斯差分空间金字塔上提取出尺度不变性的特征点。该算法具有一定的仿射不变性,视角不变性,旋转不变性和光照不变性,所以在图像特征提高方面得到了最广泛的应用。

    该算法大概可以归纳为三步:1)高斯差分金字塔的构建;2)特征点的搜索;3)特征描述。

    在第一步中,它用组与层的结构构建了一个具有线性关系的金字塔结构,让我们可以在连续的高斯核尺度上查找特征点。它比LoG高明的地方在于,它用一阶高斯差分来近似高斯的拉普拉斯核,大大减少了运算量。

    在第二步的特征点搜索中,主要的关键步骤是极值点的插值,因为在离散的空间中,局部极值点可能并不是真正意义上的极值点,真正的极植点可以落在了离散点的缝隙中。所以要对这些缝隙位置进行插值,然后再求极值点的坐标位置。

    第二步中另一关键环节是删除边缘效应的点,因为只忽略那些DoG响应不够的点是不够的,DoG的值会受到边缘的影响,那些边缘上的点,虽然不是斑点,但是它的DoG响应也很强。所以我们要把这部分点删除。我们利用横跨边缘的地方,在沿边缘方向与垂直边缘方向表现出极大与极小的主曲率这一特性。所以通过计算特征点处主曲率的比值即可以区分其是否在边缘上。这一点在理解上可以参见Harris角点的求法。

    最后一步,即为特征点的特征描述。特征点的方向的求法是需要对特征点邻域内的点的梯度方向进行直方图统计,选取直方图中比重最大的方向为特征点的主方向,还可以选择一个辅方向。在计算特征矢量时,需要对局部图像进行沿主方向旋转,然后再进邻域内的梯度直方图统计(4x4x8)。

    2.3 SURF

    详细的算法描述参考:1. SURF算法与源码分析、上  2. SURF算法与源码分析、下

    2006年,Bay和Ess等人基于SIFT算法的思路,提出了加速鲁棒特征(SURF),该算法主要针对于SIFT算法速度太慢,计算量大的缺点,使用了近似Harr小波方法来提取特征点,这种方法就是基于Hessian行列式(DoH)的斑点特征检测方法。通过在不同的尺度上利用积分图像可以有效地计算出近似Harr小波值,简化了二阶微分模板的构建,搞高了尺度空间的特征检测的效率。

    SURF算法在积分图像上使用了盒子滤波器对二阶微分模板进行了简化,从而构建了Hessian矩阵元素值,进而缩短了特征提取的时间,提高了效率。其中SURF算法在每个尺度上对每个像素点进行检测,其近似构建的Hessian矩阵及其行列式的值分另为:

    Happrox=[Dxx(σ)Dxy(σ)Dxy(σ)Dyy(σ)]

    c(x,y,σ)=DxxDyy−(0.9Dxy)2

    其中Dxx,DxyDyy为利用盒子滤波器获得的近似卷积值。如果c(x,y,σ)大于设置的门限值,则判定该像素点为关键字。然后与SIFT算法近似,在以关键点为中心的3×3×3像素邻域内进行非极大值抑制,最后通过对斑点特征进行插值运算,完成了SURF特征点的精确定位。

    而SURF特征点的描述,则也是充分利用了积分图,用两个方向上的Harr小波模板来计算梯度,然后用一个扇形对邻域内点的梯度方向进行统计,求得特征点的主方向。

    3. 角点检测的原理与举例

    角点检测的方法也是极多的,其中具有代表性的算法是Harris算法与FAST算法。

    这两个算法我都有专门写过博文来描述其算法原理。Harris角点FAST特征点检测

    3.1 Harris角点特征提取

    Harris角点检测是一种基于图像灰度的一阶导数矩阵检测方法。检测器的主要思想是局部自相似性/自相关性,即在某个局部窗口内图像块与在各个方向微小移动后的窗口内图像块的相似性。

    在像素点的邻域内,导数矩阵描述了数据信号的变化情况。假设在像素点邻域内任意方向上移动块区域,若强度发生了剧烈变化,则变化处的像素点为角点。定义2×2的Harris矩阵为:

    A(x)=∑x,yω(x,y)[Cx2(x)CxCy(x)CxCy(x)Cy2(x)]=[abbc]

    其中,CxCy分别为点x=(x,y)xy方向上的强度信息的一阶导数,ω(x,y)为对应位置的权重。通过计算Harris矩阵的角点响应值D来判断是否为角点。其计算公式为:

    D=detA−m(traceA)2=(ac−b)2−m(a+c)2

    其中,det和trace为行列式和迹的操作符,m是取值为0.04~0.06的常数。当角点响应值大于设置的门限,且为该点邻域内的局部最大值时,则把该点当作角点。

    3.2 FAST角点特征提取

    基于加速分割测试的FAST算法可以快速地提取出角点特征。该算法判断一个候选点p是否为角点,依据的是在一个像素点p为圆心,半径为3个像素的离散化Bresenllam圆周上,在给定阈值t的条件下,如果在圆周上有n个连续的像素灰度值大于I(p)+t或小于I(p)−t

    针对于上面的定义,我们可以用快速的方法来完成检测,而不用把圆周上的所有点都比较一遍。首先比较上下左右四个点的像素值关系,至少要有3个点的像素灰度值大于I(p)+t或小于I(p)−t,则p为候选点,然后再进一步进行完整的判断。

    为了加快算法的检测速度,可以使用机器学习ID3贪心算法来构建决策树。这里需要说明的是,在2010年Elmar和Gregory等人提出了自适应通用加速分割检测(AGAST)算法,通过把FAST算法中ID3决策树改造为二叉树,并能够根据当前处理的图像信息动态且高效地分配决策树,提高了算法的运算速度。

    4. 二进制字符串特征描述子

    可以注意到在两种角点检测算法里,我们并没有像SIFT或SURF那样提到特征点的描述问题。事实上,特征点一旦检测出来,无论是斑点还是角点描述方法都是一样的,可以选用你认为最有效的特征描述子。

    特征描述是实现图像匹配与图像搜索必不可少的步骤。到目前为止,人们研究了各种各样的特征描述子,比较有代表性的就是浮点型特征描述子和二进帽字符串特征描述子。

    像SIFT与SURF算法里的,用梯度统计直方图来描述的描述子都属于浮点型特征描述子。但它们计算起来,算法复杂,效率较低,所以后来就出现了许多新型的特征描述算法,如BRIEF。后来很多二进制串描述子ORB,BRISK,FREAK等都是在它上面的基础上的改进。

    4.1 BRIEF算法

    BRJEF算法的主要思想是:在特征点周围邻域内选取若干个像素点对,通过对这些点对的灰度值比较,将比较的结果组合成一个二进制串字符串用来描述特征点。最后,使用汉明距离来计算在特征描述子是否匹配。

    BRIEF算法的详细描述可以参考:BRIEF特征描述子

    4.2 BRISK算法

    BRISK算法在特征点检测部分没有选用FAST特征点检测,而是选用了稳定性更强的AGAST算法。在特征描述子的构建中,BRISK算法通过利用简单的像素灰度值比较,进而得到一个级联的二进制比特串来描述每个特征点,这一点上原理与BRIEF是一致的。BRISK算法里采用了邻域采样模式,即以特征点为圆心,构建多个不同半径的离散化Bresenham同心圆,然后再每一个同心圆上获得具有相同间距的N个采样点。

    image

    由于这种邻域采样模式在采样时会产生图像灰度混叠的影响,所以BRISK算法首先对图像进行了高斯平滑图像。并且使用的高斯函数标准差σi与各自同心圆上点间距成正比。

    假设在(N2)个采样点中任意选取一对采样点(pi,pj),其平滑后的灰度值分别为I(pi,σi)I(pj,σj),则两点间的局部梯度为:

    g(pi,pj)=(pj−pi)I(pj,σj)−I(pi,σi)∥pj−pi∥2

    假设把所有采样点对构成的集合记为A,则

    A={(pi,pj)∈R2×R2|i<N且j<i且i,j∈N}

    那么短距离采样点对构成的集合S以及长距离采样点构成的集合L分别为:

    S={(pi,pj)∈A|∥pj−pi∥<δmax}⊆A

    L={(pi,pj)∈A|∥pj−pi∥>δmin}⊆A

    其中,通常设置距离阈值为δmax=9.75δ,δmin=13.67δ,其中δ为特征点的尺度。

    由于长距离采样点对含有更多的特征点角度信息,且局部梯度相互抵消,所以可以在集合L中计算出特征点的特征模式方向为:

    g=(gxgy)=1L∑(pi,pj)∈Lg(pi,pj)

    然后将采样模式围绕特征点旋转角度α=arctan2(gy,gx),进而特征描述子具有了旋转不变性。

    最后,在旋转后的短距离采样点集合S内,对所有的特征点对(Piα,pjα)行像素灰度值比较,最终形成512比特的二进制字符串描述子。

    4.3 ORB算法

    ORB算法使用FAST进行特征点检测,然后用BREIF进行特征点的特征描述,但是我们知道BRIEF并没有特征点方向的概念,所以ORB在BRIEF基础上引入了方向的计算方法,并在点对的挑选上使用贪婪搜索算法,挑出了一些区分性强的点对用来描述二进制串。ORB算法的详细描述可以参考:ORB特征点检测

    4.4 FREAK算法

    Fast Retina KeyPoint,即快速视网膜关键点。

    根据视网膜原理进行点对采样,中间密集一些,离中心越远越稀疏。并且由粗到精构建描述子,穷举贪婪搜索找相关性小的。42个感受野,一千对点的组合,找前512个即可。这512个分成4组,前128对相关性更小,可以代表粗的信息,后面越来越精。匹配的时候可以先看前16bytes,即代表精信息的部分,如果距离小于某个阈值,再继续,否则就不用往下看了。

    5. 应用之图像匹配

    图像匹配的研究目标是精确判断两幅图像之间的相似性。图像之间的相似性的定义又随着不同的应用需求而改变。例如,在物体检索系统中(找出含有亚伯拉罕·林肯的脸的图像),我们认为同一物体的不同图像是相近的。而在物体类别检索系统中(找出含有人脸的图像),我们则认为相同类的物体之间是相近的。

    这里局部特征点的应用主要表现在第一种相似性上,也就是说我们需要设计某种图像匹配算法来判断两幅图像是否是对同一物体或场景所成的图像。理想的图像匹配算法应该认为两幅同一物体的图像之间相似度很高,而两幅不同物体的图像之间相似度很低,如下图所示。

    image

    由于成像时光照,环境,角度的不一致,我们获取的同一物体的图像是存在差异的,如同上图中的两辆小车的图像一样,角度不同,成像就不同。我们直接利用图像进行比较是无法进行判断小车是否为同一类的。必须进行特征点的提取,再对特征点进行匹配。

    图像会存在哪些变换呢?一般来说包括了光照变化与几何变化,光照变化表现是图像上是全局或局部颜色的变化,而几何变化种类就比较多了,可以是平移、旋转、尺度、仿射、投影变换等等。所以我们在研究局部特征点时才要求特征点对这些变化具有稳定性,同时要有很强的独特性,可以让图像与其他类的图像区分性强,即类内距离小而类间距离大。

    6. 参考文献

    [1] 基于角点的图像特征提取与匹配算法研究,薛金龙,2014.

    [2] 基于局部特征的图像匹配与识别,宫明明,2014.

    [3] 基于视觉信息的图像特征提取算法研究,戴金波,2014.

    [4] 图像局部不变性特征与描述,王永明,王贵锦编著。

    展开全文
  • H5 图像识别

    千次阅读 2017-12-03 20:10:43
    识别对比1、百度识别发现百度的图片搜索识别率不是特别,下面为测试图片跟测试后的结果:测试图片:下面为测试后的结果:2、采用 tesseract.js 后结果H5 图像识别 (采用Tesseract.js 进行识别)简单的文案之类的,...

    识别对比


    1、百度识别

    发现百度的图片搜索识别率不是特别,下面为测试图片跟测试后的结果:

    测试图片:图片1

    下面为测试后的结果:

    图片2

    图片3


    2、采用 tesseract.js 后结果

    对比图


    H5 图像识别 (采用Tesseract.js 进行识别)


    简单的文案之类的,识别的还算可以,但是稍微复杂点的,准确率就不是那么好了,在学习中。。。

    安装

    <script src='https://cdn.rawgit.com/naptha/tesseract.js/1.0.10/dist/tesseract.js'></script>

    或者

    npm install tesseract.js –save

    PS:如果使用 npm 安装异常,可以使用 cnpm 进行安装使用

    使用

    demo 1:then使用

    var Tesseract = require('tesseract.js')
    
    Tesseract.recognize(myImage).then(function(result){
        console.log(result)
    })

    demo 2:lang切换

    Tesseract.recognize(myImage, {
        lang: 'spa',
        tessedit_char_blacklist: 'e'
    }).then(function(result){
        console.log(result)
    })

    demo 3:(then、progress、catch、then、finally)

    Tesseract.recognize(src, {
            lang:"chi_sim",
        })
        .progress(function(message) {
            console.log(message)
        })
        .catch(function(err) {
            console.error(err)
        })
        .then(function(result) {
            console.log(result.text)
        })
        .finally(function(resultOrError) {
            console.log(resultOrError)
        })

    参数介绍:

    1、image是任何 参数介绍:

    image是任何 ImageLike 对象,取决于它是从浏览器还是通过NodeJS运行。

    第一个参数,可以是 img 路劲地址,可以是图片base64位的二进制码、也可以是Image对象 等。

    附上实现的代码:

    <!DOCTYPE html>
    <html>
    
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no,user-scalable=no,minimum-scale=1,maximum-scale=1">
            <title>图片识别</title>
            <style>body{margin:0 auto;width:500px;font-size:12px;font-family:"arial, helvetica, sans-serif"}fieldset{margin-bottom:10%;border:1px solid #ddd;border-radius:5px}img,select,button{cursor:pointer}img{background:#ddd}h2{font-weight:500;font-size:16px}fieldset legend{margin-left:33%}</style>
        </head>
    
        <body>
    
            <fieldset>
                <legend>
                    <h2> 图片识别前 </h2>
                </legend>
                选择文件:<img src="img/1.png" title="图片" />
                <p>
                    选择语言:
                    <select id="langsel" onchange="recognizeFile()">
                        <option value='afr'> 南非荷兰语(Afrikaans) </option>
                        <option value='ara'> 阿拉伯 (Arabic)</option>
                        <option value='aze'> 阿塞拜疆 (Azerbaijani) </option>
                        <option value='bel'> 白俄罗斯(美式:Belarusian) </option>
                        <option value='ben'> 孟加拉(Bengali) </option>
                        <option value='bul'> 保加利亚语(Bulgarian) </option>
                        <option value='cat'> 西班牙 (Catalan)</option>
                        <option value='ces'> 捷克(Czech) </option>
                        <option value='chi_sim' selected> 中文(Chinese) </option>
                        <option value='chi_tra'> 繁体中文(Traditional Chinese) </option>
                        <option value='chr'> Cherokee </option>
                        <option value='dan'> 丹麦语(Danish) </option>
                        <option value='deu'> 德语(German) </option>
                        <option value='ell'> 希腊语(Greek) </option>
                        <option value='eng'> 英语(English) </option>
                        <option value='enm'> 英文(老)(English (Old)) </option>
                        <option value='meme'> Internet Meme </option>
                        <option value='epo'> Esperanto </option>
                        <option value='epo_alt'> (Esperanto alternative)</option>
                        <option value='equ'> Math </option>
                        <option value='est'> Estonian </option>
                        <option value='eus'> 爱沙尼亚语(Basque) </option>
                        <option value='fin'> (Finnish) </option>
                        <option value='fra'> 芬兰(French) </option>
                        <option value='frk'> Frankish </option>
                        <option value='frm'> 法语(老)(French (Old)) </option>
                        <option value='glg'> 加利西亚(Galician) </option>
                        <option value='grc'> Ancient Greek </option>
                        <option value='heb'> Hebrew </option>
                        <option value='hin'> Hindi </option>
                        <option value='hrv'> Croatian </option>
                        <option value='hun'> Hungarian </option>
                        <option value='ind'> Indonesian </option>
                        <option value='isl'> Icelandic </option>
                        <option value='ita'> 意大利(Italian) </option>
                        <option value='ita_old'> 意大利语(老)(Italian (Old)) </option>
                        <option value='jpn'> 日本(Japanese) </option>
                        <option value='kan'> Kannada </option>
                        <option value='kor'> 朝鲜的(Korean) </option>
                        <option value='lav'> Latvian </option>
                        <option value='lit'> Lithuanian </option>
                        <option value='mal'> Malayalam </option>
                        <option value='mkd'> Macedonian </option>
                        <option value='mlt'> Maltese </option>
                        <option value='msa'> Malay </option>
                        <option value='nld'> Dutch </option>
                        <option value='nor'> Norwegian </option>
                        <option value='pol'> Polish </option>
                        <option value='por'> 葡萄牙语(Portuguese) </option>
                        <option value='ron'> Romanian </option>
                        <option value='rus'> 俄语(Russian) </option>
                        <option value='slk'> Slovakian </option>
                        <option value='slv'> Slovenian </option>
                        <option value='spa'> 西班牙语(Spanish) </option>
                        <option value='spa_old'>老西班牙语 (Old Spanish) </option>
                        <option value='sqi'> Albanian </option>
                        <option value='srp'> 塞尔维亚语(拉丁语)(Serbian (Latin)) </option>
                        <option value='swa'> Swahili </option>
                        <option value='swe'> Swedish </option>
                        <option value='tam'> Tamil </option>
                        <option value='tel'> Telugu </option>
                        <option value='tgl'> Tagalog </option>
                        <option value='tha'> 泰国(Thai) </option>
                        <option value='tur'> 土耳其(Turkish) </option>
                        <option value='ukr'> 乌克兰(乌克兰) </option>
                        <option value='vie'> 越南(Vietnamese) </option>
                    </select>
                </p>
                <p align="center">
                    <button onclick="btn()">执行</button>
                </p>
            </fieldset>
            <fieldset>
                <legend>
                    <h2> 输出结果 </h2>
                </legend>
                <div id="result"></div>
            </fieldset>
        </body>
        <script src='img/tesseract.js'></script>
        <script>
            var src = document.querySelector("img").src,
                selectOption = "",
                result = document.querySelector("#result");
    
            function recognizeFile() {
                var select = document.querySelector("#langsel")
                selectOption = select.options[select.selectedIndex].value;
            }
    
            function btn() {
    
                Tesseract.recognize(src, {
                        lang: selectOption ? selectOption : "chi_sim",
                    }).progress(function(message) {
                        console.log(message)
                    })
                    .catch(function(err) {
                        result.innerHTML = err;
                        console.error(err)
                    })
                    .then(function(result) {
                        console.log(result.text)
                        result.value = result.text;
                    })
                    .finally(function(resultOrError) {
                        result.innerHTML = resultOrError.value;
                        console.log(resultOrError)
                    })
            }
        </script>
    
    </html>


    2、语言支持介绍:

    lang Language
    ‘afr’ Afrikaans
    ‘ara’ Arabic
    ‘aze’ Azerbaijani
    ‘bel’ Belarusian
    ‘ben’ Bengali
    ‘bul’ Bulgarian
    ‘cat’ Catalan
    ‘ces’ Czech
    ‘chi_sim’ Chinese
    ‘chi_tra’ Traditional Chinese
    ‘chr’ Cherokee
    ‘dan’ Danish
    ‘deu’ German
    ‘ell’ Greek
    ‘eng’ English
    ‘enm’ English (Old)
    ‘epo’ Esperanto
    ‘epo_alt’ Esperanto alternative
    ‘equ’ Math
    ‘est’ Estonian
    ‘eus’ Basque
    ‘fin’ Finnish
    ‘fra’ French
    ‘frk’ Frankish
    ‘frm’ French (Old)
    ‘glg’ Galician
    ‘grc’ Ancient Greek
    ‘heb’ Hebrew
    ‘hin’ Hindi
    ‘hrv’ Croatian
    ‘hun’ Hungarian
    ‘ind’ Indonesian
    ‘isl’ Icelandic
    ‘ita’ Italian
    ‘ita_old’ Italian (Old)
    ‘jpn’ Japanese
    ‘kan’ Kannada
    ‘kor’ Korean
    ‘lav’ Latvian
    ‘lit’ Lithuanian
    ‘mal’ Malayalam
    ‘mkd’ Macedonian
    ‘mlt’ Maltese
    ‘msa’ Malay
    ‘nld’ Dutch
    ‘nor’ Norwegian
    ‘pol’ Polish
    ‘por’ Portuguese
    ‘ron’ Romanian
    ‘rus’ Russian
    ‘slk’ Slovakian
    ‘slv’ Slovenian
    ‘spa’ Spanish
    ‘spa_old’ Old Spanish
    ‘sqi’ Albanian
    ‘srp’ Serbian (Latin)
    ‘swa’ Swahili
    ‘swe’ Swedish
    ‘tam’ Tamil
    ‘tel’ Telugu
    ‘tgl’ Tagalog
    ‘tha’ Thai
    ‘tur’ Turkish
    ‘ukr’ Ukrainian
    ‘vie’ Vietnamese


    Tesseract参数支持介绍:

    Parameter Default Value Description
    ambigs_debug_level 0 Debug level for unichar ambiguities
    applybox_debug 1 Debug level
    applybox_exposure_pattern .exp Exposure value follows this pattern in the image filename. The name of the image files are expected to be in the form [lang].[fontname].exp[num].tif
    applybox_learn_chars_and_char_frags_mode 0 Learn both character fragments (as is done in the special low exposure mode) as well as unfragmented characters.
    applybox_learn_ngrams_mode 0 Each bounding box is assumed to contain ngrams. Only learn the ngrams whose outlines overlap horizontally.
    applybox_page 0 Page number to apply boxes from
    assume_fixed_pitch_char_segment 0 include fixed-pitch heuristics in char segmentation
    bestrate_pruning_factor 2 Multiplying factor of current best rate to prune other hypotheses
    bidi_debug 0 Debug level for BiDi
    bland_unrej 0 unrej potential with no chekcs
    certainty_scale 20 Certainty scaling factor
    certainty_scale 20 Certainty scaling factor
    chop_center_knob 0.15 Split center adjustment
    chop_centered_maxwidth 90 Width of (smaller) chopped blobs above which we don’t care that a chop is not near the center.
    chop_debug 0 Chop debug
    chop_enable 1 Chop enable
    chop_good_split 50 Good split limit
    chop_inside_angle -50 Min Inside Angle Bend
    chop_min_outline_area 2000 Min Outline Area
    chop_min_outline_points 6 Min Number of Points on Outline
    chop_new_seam_pile 1 Use new seam_pile
    chop_ok_split 100 OK split limit
    chop_overlap_knob 0.9 Split overlap adjustment
    chop_same_distance 2 Same distance
    chop_seam_pile_size 150 Max number of seams in seam_pile
    chop_sharpness_knob 0.06 Split sharpness adjustment
    chop_split_dist_knob 0.5 Split length adjustment
    chop_split_length 10000 Split Length
    chop_vertical_creep 0 Vertical creep
    chop_width_change_knob 5 Width change adjustment
    chop_x_y_weight 3 X / Y length weight
    chs_leading_punct (‘`” Leading punctuation
    chs_trailing_punct1 ).,;:?! 1st Trailing punctuation
    chs_trailing_punct2 )’`” 2nd Trailing punctuation
    classify_adapt_feature_threshold 230 Threshold for good features during adaptive 0-255
    classify_adapt_proto_threshold 230 Threshold for good protos during adaptive 0-255
    classify_adapted_pruning_factor 2.5 Prune poor adapted results this much worse than best result
    classify_adapted_pruning_threshold -1 Threshold at which classify_adapted_pruning_factor starts
    classify_bln_numeric_mode 0 Assume the input is numbers [0-9].
    classify_char_norm_range 0.2 Character Normalization Range …
    classify_character_fragments_garbage_certainty_threshold -3 Exclude fragments that do not look like whole characters from training and adaption
    classify_class_pruner_multiplier 15 Class Pruner Multiplier 0-255:
    classify_class_pruner_threshold 229 Class Pruner Threshold 0-255
    classify_cp_angle_pad_loose 45 Class Pruner Angle Pad Loose
    classify_cp_angle_pad_medium 20 Class Pruner Angle Pad Medium
    classify_cp_angle_pad_tight 10 CLass Pruner Angle Pad Tight
    classify_cp_cutoff_strength 7 Class Pruner CutoffStrength:
    classify_cp_end_pad_loose 0.5 Class Pruner End Pad Loose
    classify_cp_end_pad_medium 0.5 Class Pruner End Pad Medium
    classify_cp_end_pad_tight 0.5 Class Pruner End Pad Tight
    classify_cp_side_pad_loose 2.5 Class Pruner Side Pad Loose
    classify_cp_side_pad_medium 1.2 Class Pruner Side Pad Medium
    classify_cp_side_pad_tight 0.6 Class Pruner Side Pad Tight
    classify_debug_character_fragments 0 Bring up graphical debugging windows for fragments training
    classify_debug_level 0 Classify debug level
    classify_enable_adaptive_debugger 0 Enable match debugger
    classify_enable_adaptive_matcher 1 Enable adaptive classifier
    classify_enable_learning 1 Enable adaptive classifier
    classify_font_name UnknownFont Default font name to be used in training
    classify_integer_matcher_multiplier 10 Integer Matcher Multiplier 0-255:
    classify_learn_debug_str Class str to debug learning
    classify_learning_debug_level 0 Learning Debug Level:
    classify_max_certainty_margin 5.5 Veto difference between classifier certainties
    classify_max_norm_scale_x 0.325 Max char x-norm scale …
    classify_max_norm_scale_y 0.325 Max char y-norm scale …
    classify_max_rating_ratio 1.5 Veto ratio between classifier ratings
    classify_max_slope 2.41421 Slope above which lines are called vertical
    classify_min_norm_scale_x 0 Min char x-norm scale …
    classify_min_norm_scale_y 0 Min char y-norm scale …
    classify_min_slope 0.414214 Slope below which lines are called horizontal
    classify_misfit_junk_penalty 0 Penalty to apply when a non-alnum is vertically out of its expected textline position
    classify_nonlinear_norm 0 Non-linear stroke-density normalization
    classify_norm_adj_curl 2 Norm adjust curl …
    classify_norm_adj_midpoint 32 Norm adjust midpoint …
    classify_norm_method 1 Normalization Method …
    classify_num_cp_levels 3 Number of Class Pruner Levels
    classify_pico_feature_length 0.05 Pico Feature Length
    classify_pp_angle_pad 45 Proto Pruner Angle Pad
    classify_pp_end_pad 0.5 Proto Prune End Pad
    classify_pp_side_pad 2.5 Proto Pruner Side Pad
    classify_save_adapted_templates 0 Save adapted templates to a file
    classify_training_file MicroFeatures Training file
    classify_use_pre_adapted_templates 0 Use pre-adapted classifier templates
    conflict_set_I_l_1 Il1[] Il1 conflict set
    crunch_accept_ok 1 Use acceptability in okstring
    crunch_debug 0 As it says
    crunch_del_cert -10 POTENTIAL crunch cert lt this
    crunch_del_high_word 1.5 Del if word gt xht x this above bl
    crunch_del_low_word 0.5 Del if word gt xht x this below bl
    crunch_del_max_ht 3 Del if word ht gt xht x this
    crunch_del_min_ht 0.7 Del if word ht lt xht x this
    crunch_del_min_width 3 Del if word width lt xht x this
    crunch_del_rating 60 POTENTIAL crunch rating lt this
    crunch_early_convert_bad_unlv_chs 0 Take out ~^ early?
    crunch_early_merge_tess_fails 1 Before word crunch?
    crunch_include_numerals 0 Fiddle alpha figures
    crunch_leave_accept_strings 0 Dont pot crunch sensible strings
    crunch_leave_lc_strings 4 Dont crunch words with long lower case strings
    crunch_leave_ok_strings 1 Dont touch sensible strings
    crunch_leave_uc_strings 4 Dont crunch words with long lower case strings
    crunch_long_repetitions 3 Crunch words with long repetitions
    crunch_poor_garbage_cert -9 crunch garbage cert lt this
    crunch_poor_garbage_rate 60 crunch garbage rating lt this
    crunch_pot_garbage 1 POTENTIAL crunch garbage
    crunch_pot_indicators 1 How many potential indicators needed
    crunch_pot_poor_cert -8 POTENTIAL crunch cert lt this
    crunch_pot_poor_rate 40 POTENTIAL crunch rating lt this
    crunch_rating_max 10 For adj length in rating per ch
    crunch_small_outlines_size 0.6 Small if lt xht x this
    crunch_terrible_garbage 1 As it says
    crunch_terrible_rating 80 crunch rating lt this
    cube_debug_level 0 Print cube debug info.
    dawg_debug_level 0 Set to 1 for general debug info, to 2 for more details, to 3 to see all the debug messages
    debug_acceptable_wds 0 Dump word pass/fail chk
    debug_file File to send tprintf output to
    debug_fix_space_level 0 Contextual fixspace debug
    debug_noise_removal 0 Debug reassignment of small outlines
    debug_x_ht_level 0 Reestimate debug
    devanagari_split_debugimage 0 Whether to create a debug image for split shiro-rekha process.
    devanagari_split_debuglevel 0 Debug level for split shiro-rekha process.
    disable_character_fragments 1 Do not include character fragments in the results of the classifier
    doc_dict_certainty_threshold -2.25 Worst certainty for words that can be inserted into thedocument dictionary
    doc_dict_pending_threshold 0 Worst certainty for using pending dictionary
    docqual_excuse_outline_errs 0 Allow outline errs in unrejection?
    edges_boxarea 0.875 Min area fraction of grandchild for box
    edges_childarea 0.5 Min area fraction of child outline
    edges_children_count_limit 45 Max holes allowed in blob
    edges_children_fix 0 Remove boxy parents of char-like children
    edges_children_per_grandchild 10 Importance ratio for chucking outlines
    edges_debug 0 turn on debugging for this module
    edges_max_children_layers 5 Max layers of nested children inside a character outline
    edges_max_children_per_outline 10 Max number of children inside a character outline
    edges_min_nonhole 12 Min pixels for potential char in box
    edges_patharea_ratio 40 Max lensq/area for acceptable child outline
    edges_use_new_outline_complexity 0 Use the new outline complexity module
    editor_dbwin_height 24 Editor debug window height
    editor_dbwin_name EditorDBWin Editor debug window name
    editor_dbwin_width 80 Editor debug window width
    editor_dbwin_xpos 50 Editor debug window X Pos
    editor_dbwin_ypos 500 Editor debug window Y Pos
    editor_debug_config_file Config file to apply to single words
    editor_image_blob_bb_color 4 Blob bounding box colour
    editor_image_menuheight 50 Add to image height for menu bar
    editor_image_text_color 2 Correct text colour
    editor_image_win_name EditorImage Editor image window name
    editor_image_word_bb_color 7 Word bounding box colour
    editor_image_xpos 590 Editor image X Pos
    editor_image_ypos 10 Editor image Y Pos
    editor_word_height 240 Word window height
    editor_word_name BlnWords BL normalized word window
    editor_word_width 655 Word window width
    editor_word_xpos 60 Word window X Pos
    editor_word_ypos 510 Word window Y Pos
    enable_new_segsearch 0 Enable new segmentation search path.
    enable_noise_removal 1 Remove and conditionally reassign small outlines when they confuse layout analysis, determining diacritics vs noise
    equationdetect_save_bi_image 0 Save input bi image
    equationdetect_save_merged_image 0 Save the merged image
    equationdetect_save_seed_image 0 Save the seed image
    equationdetect_save_spt_image 0 Save special character image
    file_type .tif Filename extension
    fixsp_done_mode 1 What constitues done for spacing
    fixsp_non_noise_limit 1 How many non-noise blbs either side?
    fixsp_small_outlines_size 0.28 Small if lt xht x this
    force_word_assoc 0 force associator to run regardless of what enable_assoc is.This is used for CJK where component grouping is necessary.
    fragments_debug 0 Debug character fragments
    fragments_guide_chopper 0 Use information from fragments to guide chopping process
    fx_debugfile FXDebug Name of debugfile
    gapmap_big_gaps 1.75 xht multiplier
    gapmap_debug 0 Say which blocks have tables
    gapmap_no_isolated_quanta 0 Ensure gaps not less than 2quanta wide
    gapmap_use_ends 0 Use large space at start and end of rows
    heuristic_max_char_wh_ratio 2 max char width-to-height ratio allowed in segmentation
    heuristic_segcost_rating_base 1.25 base factor for adding segmentation cost into word rating.It’s a multiplying factor, the larger the value above 1, the bigger the effect of segmentation cost.
    heuristic_weight_rating 1 weight associated with char rating in combined cost ofstate
    heuristic_weight_seamcut 0 weight associated with seam cut in combined cost of state
    heuristic_weight_width 1000 weight associated with width evidence in combined cost of state
    hocr_font_info 0 Add font info to hocr output
    hyphen_debug_level 0 Debug level for hyphenated words.
    il1_adaption_test 0 Dont adapt to i/I at beginning of word
    include_page_breaks 0 Include page separator string in output text after each image/page.
    interactive_display_mode 0 Run interactively?
    language_model_debug_level 0 Language model debug level
    language_model_fixed_length_choices_depth 3 Depth of blob choice lists to explore when fixed length dawgs are on
    language_model_min_compound_length 3 Minimum length of compound words
    language_model_ngram_nonmatch_score -40 Average classifier score of a non-matching unichar.
    language_model_ngram_on 0 Turn on/off the use of character ngram model
    language_model_ngram_order 8 Maximum order of the character ngram model
    language_model_ngram_rating_factor 16 Factor to bring log-probs into the same range as ratings when multiplied by outline length
    language_model_ngram_scale_factor 0.03 Strength of the character ngram model relative to the character classifier
    language_model_ngram_small_prob 1e-06 To avoid overly small denominators use this as the floor of the probability returned by the ngram model.
    language_model_ngram_space_delimited_language 1 Words are delimited by space
    language_model_ngram_use_only_first_uft8_step 0 Use only the first UTF8 step of the given string when computing log probabilities.
    language_model_penalty_case 0.1 Penalty for inconsistent case
    language_model_penalty_chartype 0.3 Penalty for inconsistent character type
    language_model_penalty_font 0 Penalty for inconsistent font
    language_model_penalty_increment 0.01 Penalty increment
    language_model_penalty_non_dict_word 0.15 Penalty for non-dictionary words
    language_model_penalty_non_freq_dict_word 0.1 Penalty for words not in the frequent word dictionary
    language_model_penalty_punc 0.2 Penalty for inconsistent punctuation
    language_model_penalty_script 0.5 Penalty for inconsistent script
    language_model_penalty_spacing 0.05 Penalty for inconsistent spacing
    language_model_use_sigmoidal_certainty 0 Use sigmoidal score for certainty
    language_model_viterbi_list_max_num_prunable 10 Maximum number of prunable (those for which PrunablePath() is true) entries in each viterbi list recorded in BLOB_CHOICEs
    language_model_viterbi_list_max_size 500 Maximum size of viterbi lists recorded in BLOB_CHOICEs
    load_bigram_dawg 1 Load dawg with special word bigrams.
    load_fixed_length_dawgs 1 Load fixed length dawgs (e.g. for non-space delimited languages)
    load_freq_dawg 1 Load frequent word dawg.
    load_number_dawg 1 Load dawg with number patterns.
    load_punc_dawg 1 Load dawg with punctuation patterns.
    load_system_dawg 1 Load system word dawg.
    load_unambig_dawg 1 Load unambiguous word dawg.
    m_data_sub_dir tessdata/ Directory for data files
    matcher_avg_noise_size 12 Avg. noise blob length
    matcher_bad_match_pad 0.15 Bad Match Pad (0-1)
    matcher_clustering_max_angle_delta 0.015 Maximum angle delta for prototype clustering
    matcher_debug_flags 0 Matcher Debug Flags
    matcher_debug_level 0 Matcher Debug Level
    matcher_debug_separate_windows 0 Use two different windows for debugging the matching: One for the protos and one for the features.
    matcher_good_threshold 0.125 Good Match (0-1)
    matcher_great_threshold 0 Great Match (0-1)
    matcher_min_examples_for_prototyping 3 Reliable Config Threshold
    matcher_perfect_threshold 0.02 Perfect Match (0-1)
    matcher_permanent_classes_min 1 Min # of permanent classes
    matcher_rating_margin 0.1 New template margin (0-1)
    matcher_sufficient_examples_for_prototyping 5 Enable adaption even if the ambiguities have not been seen
    max_permuter_attempts 10000 Maximum number of different character choices to consider during permutation. This limit is especially useful when user patterns are specified, since overly generic patterns can result in dawg search exploring an overly large number of options.
    max_viterbi_list_size 10 Maximum size of viterbi list.
    merge_fragments_in_matrix 1 Merge the fragments in the ratings matrix and delete them after merging
    min_orientation_margin 7 Min acceptable orientation margin
    min_sane_x_ht_pixels 8 Reject any x-ht lt or eq than this
    ngram_permuter_activated 0 Activate character-level n-gram-based permuter
    noise_cert_basechar -8 Hingepoint for base char certainty
    noise_cert_disjoint -1 Hingepoint for disjoint certainty
    noise_cert_factor 0.375 Scaling on certainty diff from Hingepoint
    noise_cert_punc -3 Threshold for new punc char certainty
    noise_maxperblob 8 Max diacritics to apply to a blob
    noise_maxperword 16 Max diacritics to apply to a word
    numeric_punctuation ., Punct. chs expected WITHIN numbers
    ocr_devanagari_split_strategy 0 Whether to use the top-line splitting process for Devanagari documents while performing ocr.
    ok_repeated_ch_non_alphanum_wds -?*= Allow NN to unrej
    oldbl_corrfix 1 Improve correlation of heights
    oldbl_dot_error_size 1.26 Max aspect ratio of a dot
    oldbl_holed_losscount 10 Max lost before fallback line used
    oldbl_xhfix 0 Fix bug in modes threshold for xheights
    oldbl_xhfract 0.4 Fraction of est allowed in calc
    outlines_2 ij!?%”:; Non standard number of outlines
    outlines_odd %
    output_ambig_words_file Output file for ambiguities found in the dictionary
    page_separator
    pageseg_devanagari_split_strategy 0 Whether to use the top-line splitting process for Devanagari documents while performing page-segmentation.
    paragraph_debug_level 0 Print paragraph debug info.
    paragraph_text_based 1 Run paragraph detection on the post-text-recognition (more accurate)
    permute_chartype_word 0 Turn on character type (property) consistency permuter
    permute_debug 0 Debug char permutation process
    permute_fixed_length_dawg 0 Turn on fixed-length phrasebook search permuter
    permute_only_top 0 Run only the top choice permuter
    permute_script_word 0 Turn on word script consistency permuter
    pitsync_fake_depth 1 Max advance fake generation
    pitsync_joined_edge 0.75 Dist inside big blob for chopping
    pitsync_linear_version 6 Use new fast algorithm
    pitsync_offset_freecut_fraction 0.25 Fraction of cut for free cuts
    poly_allow_detailed_fx 0 Allow feature extractors to see the original outline
    poly_debug 0 Debug old poly
    poly_wide_objects_better 1 More accurate approx on wide things
    preserve_interword_spaces 0 Preserve multiple interword spaces
    prioritize_division 0 Prioritize blob division over chopping
    quality_blob_pc 0 good_quality_doc gte good blobs limit
    quality_char_pc 0.95 good_quality_doc gte good char limit
    quality_min_initial_alphas_reqd 2 alphas in a good word
    quality_outline_pc 1 good_quality_doc lte outline error limit
    quality_rej_pc 0.08 good_quality_doc lte rejection limit
    quality_rowrej_pc 1.1 good_quality_doc gte good char limit
    rating_scale 1.5 Rating scaling factor
    rej_1Il_trust_permuter_type 1 Dont double check
    rej_1Il_use_dict_word 0 Use dictword test
    rej_alphas_in_number_perm 0 Extend permuter check
    rej_trust_doc_dawg 0 Use DOC dawg in 11l conf. detector
    rej_use_good_perm 1 Individual rejection control
    rej_use_sensible_wd 0 Extend permuter check
    rej_use_tess_accepted 1 Individual rejection control
    rej_use_tess_blanks 1 Individual rejection control
    rej_whole_of_mostly_reject_word_fract 0.85 if >this fract
    repair_unchopped_blobs 1 Fix blobs that aren’t chopped
    save_alt_choices 1 Save alternative paths found during chopping and segmentation search
    save_doc_words 0 Save Document Words
    save_raw_choices 1 Deprecated- backward compatablity only
    segment_adjust_debug 0 Segmentation adjustment debug
    segment_debug 0 Debug the whole segmentation process
    segment_nonalphabetic_script 0 Don’t use any alphabetic-specific tricks.Set to true in the traineddata config file for scripts that are cursive or inherently fixed-pitch
    segment_penalty_dict_case_bad 1.3125 Default score multiplier for word matches, which may have case issues (lower is better).
    segment_penalty_dict_case_ok 1.1 Score multiplier for word matches that have good case (lower is better).
    segment_penalty_dict_frequent_word 1 Score multiplier for word matches which have good case andare frequent in the given language (lower is better).
    segment_penalty_dict_nonword 1.25 Score multiplier for glyph fragment segmentations which do not match a dictionary word (lower is better).

    GitHub地址

    展开全文
  • 什么是图像识别

    千次阅读 2018-08-11 23:59:13
    什么是图像识别 参考链接: https://blog.csdn.net/wcl0617/article/details/79034683 计算机本身不具有理解图像的能力,图像识别就是让计算机有和人类一样对图像理解的能力,包括图像表示的内容,图像中物体之间...
  • 图像识别过程(概念)

    万次阅读 多人点赞 2018-05-21 15:31:54
    图像识别过程分为图像处理和图像识别两个部分。 图像处理(imageProcessing)利用计算机对图像进行分析,以达到所需的结果。 图像处理可分为模拟图像处理和数字图像处理,而图像处理一般指数字图像处理。 这种处理...
  • 图像识别的原理、过程、应用前景,精华篇!

    万次阅读 多人点赞 2018-09-28 07:53:49
    图像识别的原理、过程、应用前景,精华篇!   https://mp.weixin.qq.com/s/THE5B77C_AJa5y6sfOXpaA   图像识别技术是信息时代的一门重要的技术,其产生目的是为了让计算机代替人类去处理大量的物理信息。...
  • 图像识别的基本原理

    万次阅读 2017-06-21 20:25:57
    1.图像的组成:图像由什么组成的,这个问题不是通常意义上的概念,它不是指图片里面有什么我们可以看到的东西,而是图像的光学组成概念。即图像是由很多具备色彩种类、...而计算机的图像识别也是一个将原始光学信息进
  • 图像识别技术可能是以图像的主要特征为基础的,每个图像都有它的特征。在人类图像识别系统中,对复杂图像的识别往往要通过不同层次的信息加工才能实现。图像识别技术是立体视觉、运动分析、数据融合等实用技术的基础...
  • 图像识别技术是人工智能的一个重要领域。它是指对图像进行对象识别,以识别各种不同模式的目标和对像的技术。 图像识别发展的三阶段 图像识别的发展经历了三个阶段:文字识别、数字图像处理与识别、物体识别。文字...
  • 人工智能 图片识别 图像识别

    万次阅读 2018-02-26 18:38:02
    图像识别,是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对像的技术。一般工业使用中,采用工业相机拍摄图片,然后再利用软件根据图片灰阶差做进一步识别处理。另外在地理学中指将遥感图像...
  • 数字图像处理:基于MATLAB的车牌识别项目

    万次阅读 多人点赞 2017-07-30 13:48:54
    学过了数字图像处理,就进行一个综合性强的小项目来巩固一下知识吧。前阵子编写调试了一套基于MATLAB的车牌识别的项目的代码。今天又重新改进了一下代码,识别的效果好一点了,也精简了一些代码。这里没有使用神经...
  • 北京大学研究者开发了一款图像识别程序,基于深度卷积和递归神经网络的新型深度网络体系结构,用于单图像去除。 结合递归神经网络以保留先前阶段中的有用信息。团队对合成数据集和现实数据集进行了大量实验。提出的...
  • 数字图像字符识别——数字识别

    万次阅读 多人点赞 2020-04-27 22:57:24
    本文简单介绍图片字符识别的原理,主要识别图片中的数字,其他字符识别原理类似。大家应该知道,对于人类来说,可以很容易理解一张图片所表达的信息,这是人类视觉系统数万年演变进化的结果。但对于计算机这个诞生...
  • 实现android图像识别的几种方法

    万次阅读 热门讨论 2020-01-12 22:21:43
    实现android图像识别的几种方法 点击这里下载第一种代码 杭州驾校网 最近完成了毕业设计,论文名为基于图像识别的移动人口管理系统。编写过程中学到了几种图像识别的技术,先写下来与大家分享。 第一种,直接...
  • 经过几天的努力,实现了在stm32单片机的RGB565图像简单处理,识别橘黄色乒乓球,同时单片机通过串口向上位机输出,乒乓球的重心坐标,和与图像中心线的夹角,在者可以输出的RGB565数据,通过c++读取输出的数据,转化...
  • 1 构建图像分类器 训练一个卷积神经网络,用fastai库(建在PyTorch上)将图像分类为纸板,玻璃,金属,纸张,塑料或垃圾。使用了由Gary Thung和Mindy Yang手动收集的图像数据集。数据集下载地址如下,然后将其移至...
  • 图像识别谈论,不仅限于OCR,基于水表识别,燃气表识别为例图像识别谈论不仅限于OCR基于水表识别燃气表识别为例 图像处理到底靠不靠谱做检测识别需不需要做图像预处理 图像识别中最核心最难搞的模块之一目标检测定位...
  • 目录 一、图像分类 二、图像识别 三、图像检索 四、三者的联系 ... 图像分类是给定一幅测试图像,利用... 图像识别是指计算机对图像进行处理、分析和处理,以识别各种不同模式的目标和对象的技术(百度百科给出...
1 2 3 4 5 ... 20
收藏数 275,401
精华内容 110,160
关键字:

图像识别