擴充圖像邊界:copyMakeBorder 函數
在圖像處理過程中,因為卷積算子有一定大小,所以就會導致圖像一定范圍的邊界不能被處理,這時就需要將邊界進行適當擴充。
void copyMakeBorder(InputArray src, OutputArray dst, int top, int bottom, int left, int right, int borderType, const Scalar& value=Scalar());
- src,輸入圖像,即原圖像,填 Mat 類的對象即可。
- dst,輸出圖像,和原圖像有一樣的深度,size = Size(src.cols + left +right, src.rows + top + bottom);
- top,bottom,left,right,分別表示在原圖像的四個方向上擴充多少像素。
- borderType,邊界類型。
BORDER_REPLICATE:復制法,復制最邊緣像素,填充擴充的邊界。中值濾波就采用這種方法。
aaaaaa | abcdefgh | hhhhhhh
BORDER_REFLECT_101:對稱法,以最邊緣像素為軸,對稱填充。filter2D, blur, GaussianBlur, bilateralFilter 邊界處理的默認方法。
gfedcb | abcdefgh | gfedcba
BORDER_CONSTANT:以一個常量像素值【參數 value 】填充擴充的邊界。這種方式在仿射變換,透視變換中非常常見。
iiiiii | abcdefgh | iiiiiii
BORDER_REFLECT: 和對稱法原理一致,不過連最邊緣像素也要對稱過去。
fedcba | abcdefgh | hgfedcb
BORDER_WRAP:用另一側元素來填充這一側的擴充邊界。
cdefgh | abcdefgh | abcdefg
- value,默認值為 0,當 borderType 取值為 BORDER_CONSTANT 時,這個參數表示邊界值。
借鑒博客:https://blog.csdn.net/chezhai/article/details/53229699