图像的加噪和去噪一直图像界很重要的课题,使用opencv可以很好的去加快开发速度和验证模型,然而网上的教程真的是抄来抄去,代码都是有问题的各个所谓的创和转载都是没有运行的。简直了。
首先给图像加噪音,加噪音比较简单的就是使用 skimage.util.random_noise(img, mode="salt"),然而使用该函数加完噪音后会导致使用opencv去降噪的函数会提示无法支持的格式 !
首先我们分析一下问题的所在
skimage.util.random_noise()
out : ndarray
Output floating-point image data on range [0, 1] or [-1, 1] if the
input `image` was unsigned or signed, respectively.
该加噪函数(方法)将图像转化[0,1]或者[-1,1],而且数据类型变成了float64类型,而opencv处理的图像格式一般是uint8类型的,因此还需要进行转化。
首先需将[0,1]转化为0-255,然后将浮点float64转为uint8的。
因为代码跑在服务器上没有图像界面,因此需要用visdom做图片的显示。附代码:
import cv2
import visdom
import numpy as np
import matplotlib.pyplot as plt
from skimage.util.dtype import convert
import skimage.util
viz = visdom.Visdom(env='img')
img