当前位置 : 主页 > 编程语言 > 其它开发 >

从局部信息推测基恩士的Removing BackGround Information算法的实现。

来源:互联网 收集:自由互联 发布时间:2022-06-17
最近从一个朋友那里看到了一些基恩士的资料,本来是想看下那个比较有特色的浓淡补正滤波器的(英文名字叫Shading Correction Filter,翻译过来的意思有点搞笑),不过确鬼使神差的利用
最近从一个朋友那里看到了一些基恩士的资料,本来是想看下那个比较有特色的浓淡补正滤波器的(英文名字叫Shading Correction Filter,翻译过来的意思有点搞笑),不过确鬼使神差的利用现有的简单函数实现了一个简易高效的去除纹理背景的算法。

      最近从一个朋友那里看到了一些基恩士的资料,本来是想看下那个比较有特色的浓淡补正滤波器的(因为名字叫Shading Correction Filter,翻译过来的意思有点搞笑),不过看到起相关文档的附近有一个也比价有意思的功能,如下面的截图所示:

  左侧有个叫Removing BackGround Information的算法,看测试图片,他能够把背景的纹理去除,然后只留下一些细小的线条特征。在我的已经实现的算法里,也确实有一个菜单叫做 Remove BackGruond,尝试利用那个算法对这个图像进行处理,可以得到如下所示图像:

          

  结果也相当不错。

       在基恩士里这个功能的结果大概如下图所示:     

          

  他把这个功能的名字翻译为实时差分,感觉有点无语。

  我也在想基恩士是如何实现的呢,其实基恩士也算开放,他在我第一个贴图里提供了一份中间图像,而且下部还说明是使用了膨胀和收缩后得到的中间结果。

       在上图这个界面中,可以看到这个功能有明暗抽取、抽取大小、处理方向等参数,通过这些参数我觉得就可以大概的猜测出函数的内部使用了哪些功能,比如明暗 应该就是决定了膨胀和收缩的前后顺序, 抽取大小其文档有说每次递增2,很明显就是收缩或膨胀的半径的意思(半径增加1,直径增加2)。处理方向不用想就是指单独水平、垂直或者两者均膨胀或收缩。 有了这些猜测,就可以大胆的去尝试了。下面是我对这个算法的尝试结果:

  

   就是按照明暗不同,执行收缩和膨胀,然后和原图求差异,注意如果是提取Dark,最后在反色下。

  这个结果和基恩士是比较接近的,只是对比度有所不同。 

      

       作为对比,我们还那这个图,但是我们抽取明部,然后抽取大小设置为25,相当于半径12,基恩士和我的比较结果如下所示:

      

  除了对比不太一样外,基本差不多。

  另外,这个算法比我们原来的去除背景对光照不均匀图像的处理效果要好,如下所示:

       

          原图                                 早期的Remove BackGround算法                                      基恩士的这个算法

  下面还是起来看下浓淡补正算法了。

  本文Demo下载地址:  https://files.cnblogs.com/files/Imageshop/SSE_Optimization_Demo.rar,位于Detection-》Auxliary Enhance-》Image Extraction。里面的所有算法都是基于SSE实现的。

       如果想时刻关注本人的最新文章,也可关注公众号:

                             

上一篇:拙见--springMVC的controller接受的请求参数
下一篇:没有了
网友评论