python 拉普拉斯锐化_拉普拉斯锐化灰度图像作为结果

正如我之前的许多人一样,我正在尝试实现一个从冈萨雷斯和伍兹的“数字图像处理”一书中锐化图像的例子。在

我创建一个负的拉普拉斯核(-1,-1,-1;-1,8,-1;-1,-1,-1),并将其与图像卷积,然后从原始图像中减去结果。(我还试着取正拉普拉斯系数(1,1,1;1,-8,1;1,1,1)并将其添加到图像中)。在每一个阶段,我将结果拟合到(0255)的范围内,归一化拉普拉斯函数看起来很漂亮,而且是灰色的。在import matplotlib.cm as cm

import scipy.misc

import scipy.ndimage.filters

#Function for plotting abs:

pic_n = 1

def show_abs(I, plot_title):

plt.title(plot_title)

plt.tight_layout()

plt.axis('off')

plt.imshow(abs(I), cm.gray)

#Reading the image into numpy array:

A = scipy.misc.imread('moon1.jpg', flatten=True)

plt.figure(pic_n)

pic_n += 1

show_abs(A, 'Original image')

A -= np.amin(A) #map values to the (0, 255) range

A *= 255.0/np.amax(A)

#Kernel for negative Laplacian

kernel = np.ones((3,3))*(-1)

kernel[1,1] = 8

#Convolution of the image with the kernel:

Lap = scipy.ndimage.filters.convolve(A, kernel)

#Laplacian now has negative values in range (-255, 255):

print('L', np.amax(Lap), np.amin(Lap))

plt.figure(pic_n)

pic_n += 1

show_abs(Lap, 'Laplacian')

#Map Laplacian to the (0, 255) range:

Lap -= np.amin(Lap)

Lap *= 255.0/np.amax(Lap)

print('L', np.amax(Lap), np.amin(Lap))

plt.figure(pic_n)

pic_n += 1

show_abs(Lap, 'Normalized Laplacian')

A += Lap #Add negative Laplacian to the original image

print('A', np.amax(A), np.amin(A))

A -= np.amin(A)

A *= 255.0/np.amax(A)

print('A', np.amax(A), np.amin(A))

plt.figure(pic_n)

pic_n += 1

show_abs(A, 'Laplacian filtered img')

plt.show()

原始图像:

python 拉普拉斯锐化_拉普拉斯锐化灰度图像作为结果_第1张图片

结果:

问题是,最终锐化的图像看起来褪色和灰色。我试着用直方图均衡化来增强对比度,但结果很奇怪。我考虑过应用伽马校正,但我不喜欢自愿选择伽马系数。在

似乎必须有一个简单方便的方法将图像恢复到原始的动态范围。我将非常感谢您对代码的想法和意见。谢谢您!在

你可能感兴趣的:(python,拉普拉斯锐化)