图像边界扩展

[OpenCV]拓展图像边界

  对图像进行处理时,提取在边界的某些目标时会出现访问越界的错误,一般这种情况有两种解决方案:1.只对不越界的像素进行访问,见数据增强之图像旋转及坐标对应(附代码);2.对图像的边界进行扩展,这里对opencv中提供的图像边界扩展函数进行介绍。

  • 边界的拓展方式
 1 //将边界最相近的像素进复制扩展
 2 * BORDER_REPLICATE: aaaaaa|abcdefgh|hhhhhhh  
 3 //将边界像素进行镜像
 4 * BORDER_REFLECT: fedcba|abcdefgh|hgfedcb  
 5 //将边界像素进行镜像
 6 * BORDER_REFLECT_101: gfedcb|abcdefgh|gfedcba  
 7 //将边界翻转
 8 * BORDER_WRAP: cdefgh|abcdefgh|abcdefg  
 9 //将边界自由赋值
10 * BORDER_CONSTANT: iiiiii|abcdefgh|iiiiiii with some specified ’i’ 

   以上内容取自OpenCV的帮助文档。其中 “|” 表示的是图像的边界,两个“|”中间是图像的内容,最后一个边界拓展策略还要额外给定一个i值,用于对边界进行赋值。

                 

                

   上述图像依次是对应的扩展参数进行图像边界扩展结果,其中左上角是原图。

  • 函数原型及参数说明
void copyMakeBorder( InputArray src, OutputArray dst, int top, int bottom, int left, int right, int borderType, const Scalar& value=Scalar() )  

  src:输入的数组。

  dst:输出的拓展边界后的数组。

  top:在src上边界向上拓展的行数。

  bottom:在src下边界向下拓展的行数。

  left:在src的左边界向左拓展的列数。

  right:在src的右边界向右拓展的列数。

  borderType:上一节中的边界拓展策略中的一个。

  value:当你的边界策略使用的是BORDER_CONSTANT的时候,此处是指边界处填写的常数值。

原文地址:https://www.cnblogs.com/qinguoyi/p/8359363.html