美文网首页halcon视觉专栏OpenCv
“名不副实”的inRange函数

“名不副实”的inRange函数

作者: coolTigers | 来源:发表于2019-12-06 00:22 被阅读0次

    前天在改写halcon代码的时候,遇到threshold函数:

    threshold(Image : Region : MinGray, MaxGray : )
    

    image:输入的图像;
    Region:二值化后的结果;
    MinGray:门限值下限;
    MaxGray :门限值上限;
    threshold函数的意义非常简单:


    图片1.png

    我第一个想法就是在opencv中的threshold函数寻找对应的阈值类型Type(原谅我学艺不精)。但是并没有找到支持自定义左右区间的阈值类型,经过一番查找,发现inRange函数完美契合这个功能:

    cv::inRange(InputArray  src,
            InputArray  lowerb,
            InputArray  upperb,
            OutputArray     dst
            )
    

    src:输入的图像
    lowerb:阈值下限
    upperb:阈值上限
    dst:输出图像
    halcon的threshold函数和inRange是支持多通道的。
    当双通道图像输入时:


    图片2.png

    多通道图像依次类推。这里也可以看出dst是一个尺寸与src相同的单通道图像。
    弄清函数的实现原理过后,我就疑惑了:inRange函数的结果明明是二值化,虽然这里的阈值是一个range?为啥不写到Threshold函数的Type中呢?我觉得可能是inRange本义是找出图像中在range中的像素,输出图像的结果以(0 or 255)表示是否在range中,分类结果的输出方式其实也是一种二值化结果。所以从二值化角度而言,inRange确实有点“名不副实”了。

    相关文章

      网友评论

        本文标题:“名不副实”的inRange函数

        本文链接:https://www.haomeiwen.com/subject/nfqsgctx.html