保留细节的去噪方法–方向中值滤波
去噪一般会模糊图像,丢失图像细节,有时候需要保留结构的去噪。看到一篇文章描述的思想比较好。
文章中提出的思路是遍历像素点,判断该点是否为噪声,如果是,则去噪,否则跳过该点。
论文中的实例,以下a为原图,b为添加噪声后的图,f为方向中值滤波的结果图:
1.找噪声点
遍历像素点,对每个像素点计算四个方向上每个方向像素与中心点像素值的差值加权和。
加权公式如下:
这里的beta表示中心点的像素值,Xi表示该方向上除中心点外的四个点的像素值,Wi表示距离权重,距离中心点越近权重越大,如下图所示,窗口大小为5x5时,最边上的点权重值为1,靠近中心的点权重为2,这里权重也可以用高斯加权。
计算完四条线上的加权和后,如果这四个加权和的最小值也大于阈值TH(阈值需要自己调整),说明每个方向上与中心点的差异都比较大,说明是噪声,否则是边缘或者平坦的区域。
2.找最近似的方向
众所周知,方差可以判断差异大小,所以计算每条线上的方差,找到方差最小的那条线。
3.替换噪声点
将上述找到的线上的四个像素重复一份加入到窗口中,此时窗口像素数量变为5x5+4,计算这个更新后窗口的中值作为该点的像素值。
4.优化
实际使用中发现,在找到最近似方向后取这四个点的加权均值效果更佳。