中值滤波原理详解:如何用中间值替代像素点实现图像处理
中值滤波和前面介绍的滤波方式不一样。它不再通过加权求均值的方式来进行滤波计算。而是用邻域内所有像素值的中间值去替代当前像素点的像素值。

中值滤波会选取当前像素点以及其周围的临近像素点,这些临近像素点的总数为奇数个。接着会获取这些像素点的像素值,对这些像素值进行排序,之后把处于中间位置的像素值当作当前像素点的像素值。
针对图 7 - 27 里第 4 行第 4 列的那个像素点,去计算它的中值滤波值。
设置其邻域为 3×3 大小,接着对 3×3 邻域内的像素点像素值进行排序,排序方式升序或降序都可以,按升序排序后,得到的序列值为:66、78、90、91、93、94、95、97、101。在该序列里,处于中间位置(亦称为中心点或中值点)的那个值是“93”,所以用这个值去替换原先的像素值 78,将其当作当前点的新像素值,接着进行如图 7 - 28 所展示的处理。
OpenCV 中,实现中值滤波的函数为 cv2.medianBlur(),它的语法格式如下:
式中:
【例7.7】针对噪声图像,对其进行中值滤波,显示滤波的。
从图中可知,未进行均值处理时,中值滤波不像均值滤波等滤波方式那样会带来细节模糊问题。在中值滤波处理过程中,噪声成分难以被选中,因此能够在几乎不影响原有图像的情况下去除全部噪声。然而,由于需要进行排序等操作,中值滤波所需的运算量比较大。