发布时间:2021-09-08 00:08:02编辑:run阅读(7073)
图像增强的目地是提高图像的质量或使特定的特征显得更加突出。图像增强技术的一些例子有对比度拉伸,平滑和锐化。
逐点强度变换--像素变换。
逐点强度变换运算对输入图像的每个像素f(x,y)应用传递函数T,在输出图像中生成相应的像素。变换可以表示为g(x,y)=TF(x,y)或等同于s=T(r),其中r为输入图像中像素的灰度级,s为输出图像中相同像素的灰度级变换。这是一个无内存操作,在(x, y)处的输出强度只取决于同一点的输入强度。相同强度的像素得到相同的变换。这不会带来新的信息,也不可能导致信息的丢失,但可以改善外观使其特征更容易检测。
对数变换,当需要在图像中压缩或拉伸至一定灰度范围时,对数变换是非常有用的,为了显示傅里叶频谱,因为其中直流分量的值要比其他分量的值高得多,所以如果没有对数变换,其他频率分量几乎总是看不见的。对数变换的点变换函数的一般形式为:s=T(r)=c*log(l+r),其中c是常数。
from PIL import Image
from skimage import data, img_as_float,img_as_ubyte
import matplotlib.pylab as pylab
import numpy as np
pylab.rcParams['font.sans-serif'] = ['KaiTi']
# 解决保存图像是负号'-'显示为方块的问题
pylab.rcParams['axes.unicode_minus'] = False
def plot_image(image, title=''):
pylab.title(title, size=20)
pylab.imshow(image)
pylab.axis('off')
def plot_hist(r, g, b, title=''):
r, g, b = img_as_ubyte(r), img_as_ubyte(g), img_as_ubyte(b)
pylab.hist(np.array(r).ravel(), bins=256, range=(0, 256), color='r', alpha=0.5)
pylab.hist(np.array(g).ravel(), bins=256, range=(0, 256), color='g', alpha=0.5)
pylab.hist(np.array(b).ravel(), bins=256, range=(0, 256), color='b', alpha=0.5)
pylab.xlabel('像素值', size=20)
pylab.ylabel('频率', size=20)
pylab.title(title, size=20)
im = Image.open(r'D:\image_processing\image4\a.jpg')
im_r,im_g,im_b = im.split()
pylab.style.use('ggplot')
pylab.figure(figsize=(15, 5))
pylab.subplot(121)
plot_image(im, '原始图')
pylab.subplot(122)
plot_hist(im_r, im_g, im_b, 'RGB颜色通道直方图')
pylab.show()
使用PIL-python图像库,图像模块的point()函数进行对数变换,并将此变换作用于RGB图像,从而对不同色彩通道直方图产生影响。
from PIL import Image
from skimage import data, img_as_float,img_as_ubyte
import matplotlib.pylab as pylab
import numpy as np
pylab.rcParams['font.sans-serif'] = ['KaiTi']
# 解决保存图像是负号'-'显示为方块的问题
pylab.rcParams['axes.unicode_minus'] = False
def plot_image(image, title=''):
pylab.title(title, size=20)
pylab.imshow(image)
pylab.axis('off')
def plot_hist(r, g, b, title=''):
r, g, b = img_as_ubyte(r), img_as_ubyte(g), img_as_ubyte(b)
pylab.hist(np.array(r).ravel(), bins=256, range=(0, 256), color='r', alpha=0.5)
pylab.hist(np.array(g).ravel(), bins=256, range=(0, 256), color='g', alpha=0.5)
pylab.hist(np.array(b).ravel(), bins=256, range=(0, 256), color='b', alpha=0.5)
pylab.xlabel('像素值', size=20)
pylab.ylabel('频率', size=20)
pylab.title(title, size=20)
im = Image.open(r'D:\image_processing\image4\a.jpg')
im = im.point(lambda i:255*np.log(1+i/255))
im_r,im_g,im_b = im.split()
pylab.style.use('ggplot')
pylab.figure(figsize=(15, 5))
pylab.subplot(121)
plot_image(im, '经对数变换后的图像')
pylab.subplot(122)
plot_hist(im_r, im_g, im_b, 'RGB颜色通道对数变换直方图')
pylab.show()
上一篇: python3-scipy-图像复原
下一篇: python3-scikit幂等变换
51382
50855
41442
38233
32732
29636
28449
23358
23292
21624
1717°
2446°
2042°
1977°
2327°
2009°
2718°
4551°
4358°
3107°