多方面的降噪检测

多尺度降噪

为了方便进行多尺度降噪,我将降噪函数的接口进行修改,最终封装在denoise.py中。

其中,对外开放的函数是:denoise(img_address, color=0, k=1)

img_address:图像地址

color:决定图片以何种形式读入(如BGR/灰度),默认为灰度

k:多尺度指数(决定缩小几倍),默认为1

代码示例:

1
2
3
4
5
6
7
# python3.8
# utf-8

from denoise import *

if __name__ == '__main__':
denoise('img_noise.png', 1, 2)

存在的问题

该算法将抽离出的小图直接进行修改,并打回原图,而在边缘部分,因缩小而造成的信息损失会使修改不一定合理,如下图所示:

1

可以看到在噪声被去除的同时,边缘部分会变得不平滑,反而产生一些噪声,这一点,在下面的“降噪合理性”中,也被证明。

所以这也应证了我一开始的猜想:不应该对小图直接修改,而是应该将小图中被标记的噪声也同样标记到大图中,统一处理。

降噪合理性

这部分,我同样做了接口调整,并封装在rationality.py

其中,有两个函数:

1
qufendu(origin_address, denoise_address) # 求区分度
1
chayidu(origin_address, denoise_address) # 求差异度

代码示例:

1
2
3
4
5
6
7
8
# python3.8
# utf-8

import rationality as rtn

if __name__ == '__main__':
rtn.qufendu('img_noise.png', 'denoised_img_noise.png')
rtn.chayidu('img_noise.png', 'denoised_img_noise.png')

效果:

2

3