zl程序教程

您现在的位置是:首页 >  后端

当前栏目

图像处理作窗口运算时边界的几种扩展方法(详解OpenCV中的参数borderType)

Opencv扩展方法图像处理 详解 参数 几种 窗口
2023-09-11 14:15:39 时间

上一篇博文在讲述“窗口、核算子、模板、结构、卷积核、高斯核、锚点”的概念时,涉及到了边界扩展的概念,详情见链接 https://www.hhai.cc/thread-177-1-1.html

当窗口在图像的边缘滑动时,窗口将有部分覆盖不到原图像的像素,这时我们就需要扩展图像的边界。

按照OpenCV中borderType的取值来看,通常有以下几种扩展方法:

  • BORDER_CONSTANT
  • BORDER_REPLICATE
  • BORDER_REFLECT
  • BORDER_WRAP
  • BORDER_REFLECT_101
  • BORDER_TRANSPARENT
  • BORDER_ISOLATED

下面这张截图把上面的扩展方法讲得比较清楚了:
注意,截图中的第一根竖线“|”代表图像的左边界,第二根竖线“|”代表图像的右边界。
在这里插入图片描述
上面的截图已经把这个问题说得比较清楚了,如果还有不明白的地方,可参考博文 https://blog.csdn.net/shuiyixin/article/details/106472722

补充说明几点:
关于BORDER_CONSTANT:这是以常数的方式作边界扩展,默认值为0。并不是OpenCV中的每个函数可以设置这个常数值的,比如函数copyMakeBorder()是可以设置这个常数值的,其原型如下:

void cv::copyMakeBorder(InputArray src,
                        OutputArray dst,
                        int top,
                        int bottom,
                        int left,
                        int right,
                        int borderType,
                        const Scalar & value = Scalar() )

上面原型中的参数value便是设置这个常数值的参数,示例代码如下:

copyMakeBorder(YT, YT_new, top, bottom, left, right, BORDER_CONSTANT, Scalar(21, 222, 214));

但是函数filter2D()就不能设置这个常数,其原型如下:

void cv::filter2D(InputArray src,
                  OutputArray dst,
                  int ddepth,
                  InputArray kernel,
                  Point anchor = Point(-1,-1),
                  double delta = 0,
                  int borderType = BORDER_DEFAULT ) 

从这个原型中可以看出,函数filter2D()并不能设置这个常数值的参数。

关于BORDER_DEFAULT:这个值等效于BORDER_REFLECT_101,而不是很多同学想像的以常数0作为扩展填充。

关于BORDER_ISOLATED:当我们处理的对象是完整的图像或矩阵而不是ROI区域时,它等同于BORDER_CONSTANT以0值作填充;当处理的对象是ROI区域时,它无视ROI区域外的图像值或矩阵值,而以0值对ROI区域作边界扩展处理。

关于BORDER_TRANSPARENT:这个在OpenCV4中已经被取消了。
在OpenCV4中运行下面这条语句:

B1 = cv.copyMakeBorder(A1, 3, 3, 3, 3, borderType=cv.BORDER_TRANSPARENT)

时会报下面的错:

cv2.error: OpenCV(4.1.2) C:\projects\opencv-python\opencv\modules\core\src\copy.cpp:934: error: (-5:Bad argument) Unknown/unsupported border type in function 'cv::borderInterpolate'

在这里插入图片描述