图像预处理算法的好坏直接关系到后续图像处理的效果,如图像分割、目标识别、边缘提取等,为了获取高质量的数字图像,很多时候都需要对图像进行降噪处理,尽可能的保持原始信息完整性(即主要特征)的同时,又能够去除信号中无用的信息。
如果图片有大量的锯齿难免会显得拙糙,那么这时候降噪也不是一种去除锯齿的好方法。
例如:
用该方法去除锯齿之后:
import cv2
import numpy as np
img_path = ("1.png") #获取图片路径
img = Image.open(img_path)
img_sp = cv2.imread(img_path)
sp = img_sp.shape #读取图片长宽
#第一次插值、降噪
img = img.resize((sp[1]*2, sp[0]*2), Image.BILINEAR) #三次样条插值,图像长宽放大为2倍
img = np.array(img)
img_gaosi=cv2.GaussianBlur(img,(5,5),0) #高斯降噪,设置高斯核
img = Image.fromarray(img_gaosi) #转换回数组,以便numpy可读取
img = img.resize((sp[1]*2, sp[0]*2), Image.ANTIALIAS) #保持图像品质缩略
#第二次插值、降噪
img = img.resize((sp[1]*4, sp[0]*4), Image.BILINEAR) #三次样条插值,图像长宽放大为4倍
img = np.array(img)
img_gaosi=cv2.GaussianBlur(img,(5,5),0)
img = Image.fromarray(img_gaosi)
img = img.resize((sp[1]*4, sp[0]*4), Image.ANTIALIAS)
#第三次插值、降噪
img = img.resize((sp[1]*16, sp[0]*16), Image.BILINEAR) #三次样条插值,图像长宽放大为16倍
img = np.array(img)
img_gaosi=cv2.GaussianBlur(img,(5,5),0)
img = Image.fromarray(img_gaosi)
img = img.resize((sp[1]*16, sp[0]*16), Image.ANTIALIAS)
注:示例图片来自《应用数学进展》