一种快速图像阈值处理技术

                                          一种快速图像阈值处理技术

在机器视觉中,阈值处理可能是最基本的一种图像处理。阈值处理需要遍历每一帧的每一个像素以达到检测物体的目的。如果我们能够使这种遍历更加快速,那么CPU将有更多的时间处理其他任务。这篇文章将介绍一种快速阈值处理技术--减少遍历时间的方法。

常规方法:

阈值处理的常规方法中,我们遍历每一个通道的每一个像素值是否处于一定范围内。伪代码如下:

if (redcomponent > somevalue1 &&

    redcomponent < somevalue2 &&

    greencomponent > somevalue3 &&

    greencomponent < somevalue4 &&

    bluecomponent > somevalue5 &&

    bluecomponent < somevalue6)

{

    // Do something (like mark it as white)

}

这种方法的缺陷是:它进行了六次比较----太多了。另一个缺陷是分子太多了,需要处理器经常跳转处理分支。如下图所示,表示的是RGB三通道进行比较的常规方法:

 

新方法:

之前的方法主要问题是对每一个通道进行了两次比较。但是每一次比较总是固定的数值进行比较。比如,对于红色通道而言,比较范围总是从value1到value2。因此,我们有如下方法:

我们可以创建一个拥有256个元素的数组或查找表。把value1到value2的范围设置为1,其他index的值设置为0,类似的,其他两个通道也是可以这样处理的。如下图所示:

 现在,假设需要判断某一个像素的灰度值大小是否在某一范围内,我们可以使用如下伪代码表示:

if(table_red[redcomponent] &&
    table_green[greencomponent] &&
    table_blue[bluecomonent])
{
    // do something
}

假如红色通道的某一像素灰度值在value1到value2之间,table的值将为1,否则为0.类似的,其他两个通道也是这样处理。如果颜色在正确的范围内,判断条件总为真。因此,你可以把相应的像素做任何你想做的事。

很简单不是。典型的空间换时间的方法。在OpenCV中已经使用了这种技术,并利用相应的处理器指令提高阈值处理速度了。其他领域可以借鉴下。

实验结果:

使用常规方和OpenCV所使用的新方法,对比结果如下:

Image size (pixels)Standard (ms)Super fast method (ms)
739021.2786240.394651
6360005.7914502.213925
155520013.6645135.687084

 从对比结果可以看出来,新方法将近有300%的的提速。

参考资料:

super fast thresholding technique

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值