1.主要内容
  1. 卷积边缘问题
  2. 处理边缘
  3. 代码演示
2.卷积边缘问题
  1. 图像卷积的时候边界像素、不能被卷积操作,原因在于边界像素没有完全跟kernel重叠,所以当 3x3滤波时候有1个像素的边缘没有被处理,5x5滤波的时候有2个像素的边缘没有被处理。
    17.处理边缘_边缘像素
3.处理边缘
  1. 在卷积开始之前增加边缘像素,填充的像素值为0或者RGB黑色,比如3x3在四周各填充一个像素的边缘,这样就确保图像的边缘被处理,在卷积处理之后再去掉这些边缘。opencv中默认的处理方法是:BORDER_DEFAULT,此外常用的还有以下几种:
    BORDER_CONSTANT————填充边缘用指定的像素
    BORDER_REPLICATE————填充边缘用已知的边缘像素, 通过插值计算
    BORDER_WRAP————用另一边的像素来补偿填充
4.API说明——给图像添加边缘API

copyMakeBorder(
Mat src, //输入图像
Mat dst, //添加边缘图像
int top,
int bottom,
int left,
int right,
int borderType, //边缘类型
Scalar value//只有类型是constant时,该参数才可以决定边框的颜色
)

  1. copeMakeBorder函数功能
    扩充src的边缘,将图像变大,然后以各种外插方式自动填充图像边界,这个函数实际上调用了函数cv::borderInterpolate,这个函数最重要的功能就是为了处理边界,比如均值滤波或者中值滤波中,使用copyMakeBorder将原图稍微放大,然后我们就可以处理边界的情况了
5.举例

BORDER_DEFAULT

17.处理边缘_卷积_02

17.处理边缘_opencv_03

BORDER_CONSTANT

17.处理边缘_插值_04

17.处理边缘_插值_05

BORDER_WRAP–另一边补偿

17.处理边缘_边缘像素_06

17.处理边缘_边缘像素_07

BORDEP_RELICATE– 通过插值计算

17.处理边缘_边缘像素_08

17.处理边缘_计算机视觉_09

6.使用
  1. 在GaussianBlur()函数中,最后一个参数就是处理边缘的类型,不过此时仅支持BORDER_REPLICATE、BORDER_DEFAULT(默认)、BPRDER_CONSTANT、不支持BORDER_WRAP