OpenCV卷積邊界處理:copyMakeBorder函式详解

需积分: 0 0 下载量 114 浏览量 更新于2024-08-05 收藏 424KB PDF 举报
OpenCV 卷積邊界處理(copyMakeBorder) OpenCV 卷積邊界處理是一種常見的影像處理技術,主要用於處理影像邊界問題。在進行卷積處理影像時,在影像的邊界,核心沒有足夠元素納入計算,OpenCV 提供了 copyMakeBorder() 函式將原圖稍微放大,再開始進行卷積。 copyMakeBorder() 函式是將原始影像的資料複製到一個稍大的影像裡,並將邊界進行外推,有幾種 BORDER 型態決定外推值。常見的 BORDER 型態有: * BORDER_CONSTANT:外推的值為常數,常在仿射變換、透視變換中使用。 * BORDER_REPLICATE:外推的值和邊緣值相同,OpenCV 的 medianBlur默認的處理方式。 * BORDER_REFLECT_101:外推像素和影像邊界成鏡像映射,OpenCV 的 filter2D、blur、GaussianBlur、bilateralFilter默認的處理方式。 copyMakeBorder() 函式的使用方法為: ```cpp void copyMakeBorder(InputArray src, OutputArray dst, int top, int bottom, int left, int right, int borderType, const Scalar& value=Scalar()) ``` 其中,src 是輸入圖,dst 是輸出圖,top、bottom、left、right 是上下左右分別外推多少像素,borderType 是外推的方式,value 是外推的值。 在使用 copyMakeBorder() 函式時,需要注意輸入圖的大小和輸出圖的大小。輸入圖的大小是指原始影像的大小,而輸出圖的大小則是輸入圖大小加上外推的像素數。 例如,如果輸入圖的大小是 640x480,而外推的像素數是 10,則輸出圖的大小將是 660x500。這樣可以保證輸出圖的大小和輸入圖的大小相同,使得卷積處理的結果更加精確。 總之,copyMakeBorder() 函式是 OpenCV 中的一個非常有用的函式,可以幫助我們處理影像邊界問題,提高卷積處理的精確性。