图像处理基础

1、实验需求

2、语言和平台

3、图像处理基本原理

    3.1 灰度直方图

    3.2 高斯滤波(高斯模糊)

    3.3 直方图均衡化

4、实验代码和结果

    4.1灰度直方图

    4.2高斯滤波(高斯模糊)

    4.3直方图均衡化 

5、总结

1.实验需求

以自己的计算智能博客(大头照或生活照)为基础,做完图像处理基础章节内容,并将直方图、高斯滤波、直方图均衡化的结果及基本原理描述放到博客中

2、语言和平台

   python

   pycharm

3、图像处理基本原理

    3.1 灰度直方图

        灰度直方图是关于灰度级分布的函数,是对图像中灰度级分布的统计。灰度直方图是将数字图像中的所有像素,按照灰度值的大小,统计其出现的频率。灰度直方图是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图像中某种灰度出现的频率。

       3.2 高斯滤波(高斯模糊)

通常用它来减少图像噪声以及降低细节层次。这种模糊技术生成的图像,其视觉效果就像是经过一个毛玻璃在观察图像,这与镜头焦外成像效果散景以及普通照明阴影中的效果都明显不同。高斯平滑也用于计算机视觉算法中的预先处理阶段,以增强图像在不同比例大小下的图像效果(参见尺度空间表示以及尺度空间实现)。 从数学的角度来看,图像的高斯模糊过程就是图像与正态分布做卷积。由于正态分布又叫作高斯分布,所以这项技术就叫作高斯模糊。图像与圆形方框模糊做卷积将会生成更加精确的焦外成像效果。由于高斯函数的傅立叶变换是另外一个高斯函数,所以高斯模糊对于图像来说就是一个低通滤波器

    3.3 直方图均衡化

             图像灰度变换中有一个非常有用的例子就是直方图均衡化。直方图均衡化是指将一幅图像的灰度直方图变平,使变换后的图像中像素值的分布概率都相同。在对图像做进一步的处理之前,直方图均衡化通常是对图像灰度值进行归一化的一个非常好的方法,并且可以增强图像的对比度。  

             在这种情况下,直方图均衡化的变换函数是图像中像素值的累积分布函数

            把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布的技术。实质上是对图像进行非线性拉伸,重新分配图像象元值,使一定灰度范围内象元值的数量大致相等。这样,原来直方图中间的峰顶部分对比度得到增强,而两侧的谷底部分对比度降低,输出图像的直方图是一个较平的分段直方图:如果输出数据分段值较小的话,会产生粗略分类的视觉效果。直方图均衡化能起到增强图像对比度的作用。

4、实验代码和结果

原图

计算机视觉——图像处理基础_灰度直方图

 

 

  4.2高斯滤波(高斯模糊)

# encoding:utf-8
from PIL import Image
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']

im = array(Image.open('D:/XYH.jpg').convert('L'))

figure()
subplot(121)
gray()
contour(im, origin='image')
axis('equal')
axis('off')
title(u'图像轮廓')

subplot(122)
hist(im.flatten(), 128)
title(u'图像直方图')
plt.xlim([0, 260])
plt.ylim([0, 11000])

show()

 

 

     4.2高斯滤波(高斯模糊)

# encoding:utf-8

from PIL import Image
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
from numpy import *

from scipy.ndimage import filters

from PCV.tools import rof

im = array(Image.open('D:/XYH.jpg').convert('L'))

U, T = rof.denoise(im, im)
G = filters.gaussian_filter(im, 10) # 第二个参数越大,图像越模糊

figure()
gray()

subplot(1, 3, 1)
imshow(im)
#axis(‘equal’)
axis('off')
title(u'原噪声图像')

subplot(1, 3, 2)
imshow(G)
#axis(‘equal’)
axis('off')
title(u'高斯模糊后的图像')

subplot(1, 3, 3)
imshow(U)
#axis(‘equal’)
axis('off')
title(u'ROF降噪后的图像')

show()

 

    4.3直方图均衡化

# -- coding: utf-8 --
from PIL import Image
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
from PCV.tools import imtools

im = array(Image.open('D:/XYH.jpg').convert('L'))

im2, cdf = imtools.histeq(im)

figure()
subplot(2, 2, 1)
axis('off')
gray()
title(u'原始图像')
imshow(im)

subplot(2, 2, 2)
axis('off')
title(u'直方图均衡化后的图像')
imshow(im2)

subplot(2, 2, 3)
axis('off')
title(u'均衡化后的直方图' )

hist(im.flatten(), 128, normed=True)

subplot(2, 2, 4)
axis('off')
title(u'均衡化后的直方图')

hist(im2.flatten(), 128, normed=True)

show()

 

运行结果:

计算机视觉——图像处理基础_高斯滤波_02

 

计算机视觉——图像处理基础_高斯滤波_03

 

 

计算机视觉——图像处理基础_灰度直方图_04

 

 

5、总结:

     对于跟我一样的python初学者来说,先来做一做这些图像的变换,对于熟悉python语言很有帮助,python因为可以借助于第三方的函数,所以写起来较为简单,但是一定要经过思考,要动手实际操作代码,如果一味的看书效果不佳,对于计算机语言的学习还是要以实践和研究为主,当然我懂的也不多,所以也就用这些图像变换练习练习,至少应该知道代码中使用过的函数的意思和用法。