低通滤波器是一种线性滤波器,而今天要说的是一种非线性滤波器——中值滤波器
中值滤波器在去除椒盐噪声的时候尤其有用,我们使用创建过的一个椒盐图像作为例子
opencv中的medianBlur函数可以简单的帮我们完成这个操作
void medianBlur( InputArray src, OutputArray dst, int ksize );
这里ksize为核矩阵,这个矩阵是一个方阵,ksize代表了它的长和宽(ksize必须为奇数)
medianBlur的原理是生成一个ksize*ksize方阵,并且对图像进行遍历,在ksize^2的面积上,函数将这片面积上的中值赋值给矩阵中心
这样,我们就去除了椒盐噪声,因为椒盐噪声都是255,是最大值
源代码:
int main()
{
cv::Mat image = cv::imread("F:\\Image\\boldt2.jpg");
cv::Mat result;
cv::medianBlur(image, result, 3);
cv::imshow("Cleaned Image", result);
cv::waitKey(0);
return 0;
}