0023-图像处理中核算子的概念

在图像处理的运算中,我们通常会用一个窗口矩阵(即下文和标题中提到的核算子)去遍历待处理的矩阵或图像,在遍历的同时按一定的运算法则把窗口内的数与矩阵或图像中的数作运算得到新值,并用这些新值去更新矩阵或图像。每次运算被更新的象素相对这个核算子的位置称为锚点位置,在opencv中,若锚点坐标为(-1,-1)则代表核算子最中间的点对应的原图像中的点值在运算后被更新。

核算子不同运算结果自然不一样,也实现了不同的处理效果,比如各种滤波器就可以用不同的核算子和运算规则来实现,下面这两篇文章介绍了不同的滤波效果对应的核算子,比如、高通滤波器(锐化滤波器)、边缘滤波器、边缘检测核算子、浮雕滤波器、低通滤波器(均值模糊核算子)等,大家可以参考下,链接如下:
http://m.blog.csdn.net/zouxy09/article/details/49080029
http://www.cnblogs.com/slysky/archive/2011/11/25/2262899.html

在核算子遍历图像时,边界值怎么处理是一个问题,因为窗口覆盖区域存在空值,在OpenCV中一般采用填充来处理这个问题,有几种不同的填充方法,由相关函数中的borderType参数来设置填充方法,详情如下:
在OpenCV的imgproc.hpp中定义了这个参数的可选择值,如下
//! various border interpolation methods
enum { BORDER_REPLICATE=IPL_BORDER_REPLICATE, BORDER_CONSTANT=IPL_BORDER_CONSTANT,
       BORDER_REFLECT=IPL_BORDER_REFLECT, BORDER_WRAP=IPL_BORDER_WRAP, 
       BORDER_REFLECT_101=IPL_BORDER_REFLECT_101, BORDER_REFLECT101=BORDER_REFLECT_101,
       BORDER_TRANSPARENT=IPL_BORDER_TRANSPARENT,
       BORDER_DEFAULT=BORDER_REFLECT_101, BORDER_ISOLATED=16 };
作下精简,实际上是下面这样的
BORDER_REPLICATE  
BORDER_CONSTAN   
BORDER_REFLECT   
BORDER_WRAP      
BORDER_REFLECT_101 
BORDER_REFLECT101  
BORDER_TRANSPARENT 
这些参数的意义在OpenCV的filter.cpp中作了解释如下
/*
Various border types, image boundaries are denoted with '|'

* BORDER_REPLICATE:     aaaaaa|abcdefgh|hhhhhhh
* BORDER_REFLECT:       fedcba|abcdefgh|hgfedcb
* BORDER_REFLECT_101:   gfedcb|abcdefgh|gfedcba
* BORDER_WRAP:          cdefgh|abcdefgh|abcdefg        
* BORDER_CONSTANT:      iiiiii|abcdefgh|iiiiiii  with some specified 'i'
*/
上面的解释说得什么意思?听我慢慢道来!
各位朋友,如果你想知道“上面的解释说得什么意思?”请搜索公众号"qxsf321",关注后回复0023即可获取

猜你喜欢

转载自blog.csdn.net/lehuoziyuan/article/details/84101788