zoukankan      html  css  js  c++  java
  • 详细说说shape_model的使用

    基于形状匹配shape_model是工程上用的最多的,掌握它就有了一张王牌。


    针对ROI小区域建模板,应用场合: 模板的形状和大小一经制作完毕便不再改变,在查找模板的过程中,只会改变模板的方向和位置等来匹配目标图像中的图像。定位对象内部的灰度值可以有变化,但对象轮廓一定要清晰平滑。匹配速度比灰度快

    【创建模板参数 create_shape_model】
    create_shape_model(Template : : NumLevels, AngleStart, AngleExtent, AngleStep, Optimization, Metric, Contrast, MinContrast : ModelID)
    create_shape_model (ImageROI, NumLevels, 0, rad(360), 'auto', 'none', 'use_polarity', 30, 10, ModelID)

    【检察inspect_shape_model 可选】
    inspect_shape_model(Image : ModelImages, ModelRegions : NumLevels, Contrast : )
    创建好模板后,这时还需要监视模板,用inspect_shape_model()来完成,它检查参数的适用性,还能帮助找到合适的参数
    inspect_shape_model (ImageROI, ShapeModelImages, ShapeModelRegions, 8, 30)

    【保留轮廓后用get_shape_model_contours 可选】
    get_shape_model_contours( : ModelContours : ModelID, Level : )
    获得这个模板的轮廓,用于后面的匹配
    get_shape_model_contours (ShapeModel, ModelID, 1)

    【搜寻匹配find_shape_model】
    find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap, SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)
    在一幅图中找出最佳匹配的模板,返回一个模板实例的长、宽和旋转角度
    参数设置:

    find_shape_model (SearchImage, ModelID, 0, rad(360), 0.7, 1, 0.5, 'least_squares', 0, 0.7, RowCheck, ColumnCheck, AngleCheck, Score)

    【 结果转化 vector_angle_to_rigid或 affine_trans_contour_xld】
    后期结果的仿射变换和轮廓处理

    【涉及参数详解】
    Numlevels:
    指定金字塔级数,值越大用时越少,但要保证最高层至少四个点信息,值越大模块不易识别出来,需要设低 MinScore和Greediness
    判断在金字塔最高级上匹配是否失败,可find_shape_model减小NumLevels值来测试;
    用 inspect_shape_model函数的输出结果来选择一个较好的金字塔层数

    AngleStart、AngleExtent:
    决定可能的旋转范围,find时只找这个范围内匹配
    判断是否在相同物体上找到多个匹配值,如物体几乎对称的,则要控制旋转范围;

    AngleStep:
    指定角度范围搜索的步长,auto时可以用 get_shape_model_params查看

    Optimization:
    设置none所有模型点都会被存储,对特别大的模板,不设none用来减少模板点的数量。如果点数设少了,对应 Greediness设一个比较小值
    还可选择预处理(pregenerated completely),'pregeneration'或'no_pregeneration'。根据内存和时间折中

    Contrast:
    有三个参数,第一个数值是比较低的阈值,第二个数值是比较高的阈值。第三个数值是在基于组件尺寸选择重要模型组件时所设置的阈值,可以用 determine_shape_model_params自动确定。

    MinConstrast:
    将模板从噪声中分离,如果灰度值波动范围是10,则应设10
    物体是否具有较低的对比度,又要能识别,减小MinContrast值;
    设置为'auto',最小对比度会基于模板图像中的噪声自动定义。
    自动在图像和噪声近似时才用。在某些情况下为了遮挡鲁棒性,也用

    Metric:
    决定模板识别条件,如果设’use_polarity’,则图中物体和模板必须有相同对比度,都是亮底黑字等, 'ignore_global_polarity',在两者对比度完全相反时也能找到目标。
    判断是否全局或局部地转化对比度极性,又要能识别,设置Metric合适值

    Greediness:
    搜索贪婪度,影响搜索速度,若为0,则为启发式搜索,很耗时,若为1,则为不安全搜索,但最快。在大多数情况下,在能够匹配的情况下,尽可能的增大其值。
    值设的太高,就找不到其中一些可见物体,这时将其设0来执行完全搜索
    如果为0,使用安全的搜索启发式,只要模板在图像中存在就一定能找到,相对浪费时间。为1,使用不安全的搜索启发式,这样即使模板存在于图像中,也有可能找不到模板,但只是少数情况。如果设置Greediness=0.9,在几乎所有的情况下,总能找到模型的匹配。

    MinScore:
    分析模板的旋转对称和它们之间的相似度,值越大,则越相似。
    物体是否有封闭区域,又要能识别,则减小MinScore值

    SubPixel:
    决定是否精确到亚像素级,设为’interpolation’,则会精确到,这模式不会占用太多时间,若需要更精确,则可设为’least_square’,’lease_square_high’,但这样会增加额外的时间,需要在时间和精度上作折中
    通常为'interpolation'。如果希望最小二乘就选择'least_squares', 这样才能确保运行时间和精度的权衡。

    MaxOverlap:
    如果有重叠,又要能识别,增加MaxOverlap值
    MaxOverlap=0, 找到的目标区域不能存在重叠, 为1,所有找到的目标区域都要返回。

    使用的说明:
    *保证物体在图像边缘处截断,也就是保证轮廓的清晰
    速度上的优化:
    *只要匹配成功,则尽可能增加参数MinScore的值
    *增加Greediness值直到匹配失败,同时在需要时减小MinScore值
    *如果有可能,在创建模板时使用大NumLevels,即将图像多分几个金字塔级
    *限定允许的旋转范围和大小范围,调find_shape_model时调整相应参数
    *尽量限定搜索ROI的区域
    *Greediness值尽可能大,用模板匹配进行视频对象跟踪时,它很大程度上影响匹配速度


    看了感觉怎么样?来说说吧。。。
    喜欢记得关注起来!赶紧的。


  • 相关阅读:
    第一周作业
    第八周作业
    第七周作业
    第五周作业
    第四周作业
    第三周作业
    第二周作业(markdown版本)
    第一周作业
    第六次作业
    第五周作业
  • 原文地址:https://www.cnblogs.com/eyesonchip/p/13702546.html
Copyright © 2011-2022 走看看