17.处理边缘

1.主要内容

  1. 卷积边缘问题
  2. 处理边缘
  3. 代码演示

2.卷积边缘问题

  1. 图像卷积的时候边界像素、不能被卷积操作,原因在于边界像素没有完全跟kernel重叠,所以当 3x3滤波时候有1个像素的边缘没有被处理,5x5滤波的时候有2个像素的边缘没有被处理。
    在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
BORDER_CONSTANT
在这里插入图片描述
在这里插入图片描述

BORDER_WRAP–另一边补偿
在这里插入图片描述
在这里插入图片描述

BORDEP_RELICATE– 通过插值计算

在这里插入图片描述
在这里插入图片描述

6.使用

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

7…课外扩展

在OpenCV滤波算法中,有两个非常重要的基本工具函数,copyMakeBorder和borderInterpolate
opencv中RNG 函数释义
opencv学习(十一)之随机数生成器RNG
OpenCV学习笔记(十二)——随机数产生器RNG
OpenCV3之——copyTo()函数的使用方法

发布了41 篇原创文章 · 获赞 14 · 访问量 2002

猜你喜欢

转载自blog.csdn.net/qq_43367829/article/details/104266218
今日推荐