前言
不论是野外数据采集,还是图像处理,实际二维数据都会存在噪声!用卷积对二维数据降噪是十分常用的一种方法!其原理还是利用卷积可以改变原始数据矩阵中的数值大小。本文主要介绍两种最为常见的二维卷积滤波方法:"均值滤波"与"中值滤波"。
均值滤波与中值滤波原理
原理一句话:原来卷积是两个小矩阵的"点乘再相加(卷积神经网络里的操作)",现在是"点乘相加后求平均(均值滤波)"和"点乘后取中值(中值滤波)"。图1非常明显易懂:
图1:均值滤波与中值滤波原理图
了解了原理,可以很简单的用matlab实现二维卷积滤波的程序。
噪声例子
本文主要使用两种常见的、matlab自带的:"高斯随机噪声"和"椒盐黑白噪声"。直接使用一条语句就可以为原始图像加噪声:
data = imread('zxc.jpg'); % 数据——最好比卷积核的尺寸大
data = im2double(data); % 原图像进来是uint8,矩阵运算时double 故要转一下
data = rgb2grey(data); % 转为灰度图像方便
noise_data1 = imnoise(data, 'gaussian', 0.2); % 加入高斯噪声的命令
noise_data2 = imnoise(data, 'salt & pepper', 0.3);