图像去锯齿(降噪+插值)

图像预处理算法的好坏直接关系到后续图像处理的效果,如图像分割、目标识别、边缘提取等,为了获取高质量的数字图像,很多时候都需要对图像进行降噪处理,尽可能的保持原始信息完整性(即主要特征)的同时,又能够去除信号中无用的信息。

如果图片有大量的锯齿难免会显得拙糙,那么这时候降噪也不是一种去除锯齿的好方法。

例如:

用该方法去除锯齿之后:

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)

注:示例图片来自《应用数学进展》

你可能感兴趣的:(图像去锯齿(降噪+插值))