OpenCV入门教程03.21:copyMakeBorder()
索引地址:系列索引
在OpenCV滤波算法中,有两个非常重要的基本工具函数,copyMakeBorder和borderInterpolate
copyMakeBorder函数原型:
1 |
|
- src:原图
- dst:目标图像
- top,bottom,left,right分别表示在原图四周扩充边缘的大小
- borderType:扩充边缘的类型,就是外插的类型,OpenCV中给出以下几种方式
- 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’
|
表示图像边界等等
功能:
扩充src的边缘,将图像变大,然后以各种外插方式自动填充图像边界,这个函数实际上调用了函数cv::borderInterpolate,这个函数最重要的功能就是为了处理边界,比如均值滤波或者中值滤波中,使用copyMakeBorder将原图稍微放大,然后我们就可以处理边界的情况了。
BORDER_REPLICATE:复制法,也就是复制最边缘像素。
这种方式也就是OpenCV中的中值滤波medianBlur采用的边界处理方式
BORDER_REFLECT_101:对称法,也就是以最边缘像素为轴,对称。
这种方式也是OpenCV边界处理的默认方式(BORDER_DEFAULT=BORDER_REFLECT_101)
也是filter2D,blur,GaussianBlur,bilateralFilter的默认处理方式,所以这种方式在边界处理中应用还是非常广泛的
BORDER_CONSTANT:常量法。
常量法就是以一个常量像素值(由参数 value给定)填充扩充的边界值,这种方式在仿射变换,透视变换中非常常见。
测试代码:
1 |
|
测试结果:
除了warp和const比较明显外,其他几乎看不出来什么改变,代码待优化。
OpenCV入门教程03.21:copyMakeBorder()
https://blog.jackeylea.com/opencv/opencv-copymakeborder/