cv2.medianBlur的具体实现
时间: 2023-10-27 21:12:06 浏览: 208
C++OpenCV3源代码MedianBlur函数用法
cv2.medianBlur函数是OpenCV库中用于中值滤波的函数,它的函数原型如下:
```python
cv2.medianBlur(src, ksize[, dst])
```
其中,src是输入的图像;ksize是中值滤波器的大小,必须是大于1的奇数;dst是输出的图像。
cv2.medianBlur函数的具体实现如下:
1. 首先,对于输入的图像src,根据中值滤波器的大小ksize,对其进行边缘扩展,扩展的大小为(ksize-1)/2,这样扩展后的图像可以保证中心像素周围有足够的像素参与排序。
2. 然后,对于每个像素点,按照中值滤波的原理,将其周围(ksize,ksize)大小的像素值进行排序,选取其中的中位数作为该像素点的值。
3. 最后,将处理后的像素值写入输出图像dst中,返回输出图像。
具体实现可以参考以下代码:
```python
import cv2
def median_blur(img, ksize):
# 边缘扩展
border_size = (ksize - 1) // 2
border_img = cv2.copyMakeBorder(img, border_size, border_size, border_size, border_size, cv2.BORDER_CONSTANT, value=0)
# 中值滤波
dst = cv2.medianBlur(border_img, ksize)
# 去除边缘扩展
dst = dst[border_size:-border_size, border_size:-border_size]
return dst
```
阅读全文