二阶微分算子与反锐化屏蔽

二阶微分算子

  任意二阶微分必须满足:灰度不变的区域微分值为0;灰度台阶或斜坡的起点处微分值非0;沿着斜坡的微分值为0。由于处理离散值,因此微分用差分近似:

      二阶微分算子与反锐化屏蔽_第1张图片

 

二维图像f(x,y),沿着两个空间坐标轴求解二阶微分:

二阶微分算子与反锐化屏蔽_第2张图片

 拉普拉斯算子为:

 由于上述拉普拉斯变换未考虑对角线元素,可以对其添加对角线元素,并更改中心项系数,保证模板系数和为0,保证灰度恒定区域微分值为0。

\bigtriangledown ^{2}f=f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)+f(x-1,y-1)+f(x+1,y+1)-8f(x,y)

 

二阶微分算子与反锐化屏蔽_第3张图片

c左边是中心系数为正的拉普拉斯算子,右边为中心为正扩展的拉普拉斯算子。 

对原始图像使用拉普拉斯算子进行空间滤波可得到拉普拉斯图像,将拉普拉斯图像以一定比例叠加到原始图像可对原始图像进行拉普拉斯锐化增强。

from skimage import io, filters
from matplotlib import pyplot as plt
from skimage.color import rgb2gray


def set_ch():
    from pylab import mpl
    mpl.rcParams['font.sans-serif'] = ['FangSong']
    mpl.rcParams['axes.unicode_minus'] = False


set_ch()
I = io.imread("I1.jpg")
I_gray = rgb2gray(I)
# laplace
I_laplace = filters.laplace(I_gray, ksize=3, mask=None)
I_enhance = 0.9 * I_gray + 0.1 * I_laplace
# 显示
plt.figure()
plt.title("灰度图")
plt.imshow(I_gray, cmap='gray')
plt.figure()
plt.title("laplace图像")
plt.imshow(I_laplace, cmap='gray')
plt.figure()
plt.title("增强图像")
plt.imshow(I_enhance, cmap='gray')
plt.show()

二阶微分算子与反锐化屏蔽_第4张图片

二阶微分算子与反锐化屏蔽_第5张图片

二阶微分算子与反锐化屏蔽_第6张图片

  将原图和Laplace图像以一定比例叠加,可得拉普拉斯锐化增强图像,与之前文章的一阶微分算子相比,二阶微分对灰度变化强烈的地方更敏感,更能突出图像纹理;而一阶微分更能突出图像的边缘。 

反锐化屏蔽

  图像平滑处理有边缘和细节模糊的负面效果,可用原始图像减去平滑处理后的图像实现锐化处理,称为反锐化屏蔽。

步骤:

二阶微分算子与反锐化屏蔽_第7张图片

 原始图像f(x,y)平滑处理后得到模糊图像g(x,y),原始图像减去模糊图像得到差值图像d(x,y),以一定比例叠加到原始图像,得到锐化增强图像,达到反锐化屏蔽效果。

          d(x,y)=f(x,y)-s(x,y)                                  g(x,y)=f(x,y)+c*d(x,y)

   其中,权重系数c(c>=0)。c=1时称为反锐化屏蔽,c>1称为高提升滤波,c<1时不强调反锐化屏蔽效果。

from scipy import signal

import numpy as np
from skimage import io, filters
from matplotlib import pyplot as plt
from skimage.color import rgb2gray


def set_ch():
    from pylab import mpl
    mpl.rcParams['font.sans-serif'] = ['FangSong']
    mpl.rcParams['axes.unicode_minus'] = False


# 定义二维灰度图像空间滤波函数:
def filter2d(img, window):
    s = signal.correlate2d(img, window, mode='same', boundary='fill')  # fill 滤波前用常值填充图像边缘,默认为0
    return s


set_ch()
I = io.imread("I.jpg")
I_gray = rgb2gray(I)
# 盒状滤波模板
win = np.ones((9, 9)) / (9 ** 2)
I_blur = filter2d(I_gray, win)
I_edge = I_gray - I_blur
I_enhance = I_gray + I_edge
# 显示
plt.figure()
plt.title("灰度图")
plt.imshow(I_gray, cmap='gray')
plt.figure()
plt.title("模糊图像")
plt.imshow(I_blur, cmap='gray')
plt.figure()
plt.title("插值图像")
plt.imshow(I_edge, cmap='gray')
plt.figure()
plt.title("锐化增强图像")
plt.imshow(I_enhance, cmap='gray')

plt.show()

二阶微分算子与反锐化屏蔽_第8张图片

二阶微分算子与反锐化屏蔽_第9张图片 

二阶微分算子与反锐化屏蔽_第10张图片 

 二阶微分算子与反锐化屏蔽_第11张图片

   观察上图,插值图像中边缘信息较为丰富。原始图像加上插值图像可以得到瑞华增强图像。也可以修改原始图像与插值图像的叠加比例,观察反锐化屏蔽与高提升滤波的对比。

你可能感兴趣的:(图像处理,人工智能,计算机视觉,图像处理,python)