发布时间:2021-09-08 00:08:02编辑:run阅读(5198)
图像增强的目地是提高图像的质量或使特定的特征显得更加突出。图像增强技术的一些例子有对比度拉伸,平滑和锐化。
逐点强度变换--像素变换。
逐点强度变换运算对输入图像的每个像素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幂等变换
47742
46232
37103
34622
29224
25880
24740
19859
19413
17903
5711°
6311°
5829°
5883°
6979°
5825°
5841°
6355°
6311°
7669°