Advertisement

计算机视觉——图像处理

阅读量:

计算机视觉——图像处理

文章目录

  • 一、图像处理基本原理

    • 1.1灰度直方图
    • 1.2高斯滤波(高斯模糊)
    • 1.3直方图均衡化
  • 二、重要函数

  • 三、实验代码和结果

    • 原图
    • 3.1灰度直方图
    • 3.2高斯滤波(高斯模糊)
    • 3.3直方图均衡化
  • 四、总结

一、图像处理基本原理

1.1灰度直方图

灰度直方图反映的是一幅图像中各灰度级像素出现的频率。以灰度级为横坐标,纵坐标为灰度级的频率,绘制频率同灰度级的关系图就是灰度直方图。它是图像的一个重要特征,反映了图像灰度分布的情况。
频率公式为: vi=ni/n(ni为灰度为i的像元个数,n_i表示整张图片的像元数,n表示把灰度分成多少级,该实验分为256级)

1.2高斯滤波(高斯模糊)

所谓”模糊”,可以理解成每一个像素都取周边像素的平均值。
在这里插入图片描述
上图中,2是中间点,周边点都是1。
在这里插入图片描述
“中间点”取”周围点”的平均值,就会变成1。在数值上,这是一种”平滑化”。在图形上,就相当于产生”模糊”效果,”中间点”失去细节。
显然,计算平均值时,取值范围越大,”模糊效果”越强烈。

1.3直方图均衡化

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

二、重要函数

1、convert(‘L’):将图片转变为灰色图像,它的每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。
2、contour():画出图片轮廓
3、rof.denoise():基于rof的降噪处理
4、filters.gaussian_filter():高斯模糊处理
5、imtools.histeq():用自带的工具包生成均衡化直方图

三、实验代码和结果

原图

在这里插入图片描述

3.1灰度直方图

在这里插入图片描述
在这里插入图片描述

3.2高斯滤波(高斯模糊)

复制代码
    # encoding:utf-8
    from array import array
    
    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('C:/Users/apple/Desktop/images/1.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()

3.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('C:/Users/apple/Desktop/images/1.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()

四、总结

1、这些相对基础的图像处理在上学期已经通过数字图像处理这门课中稍微有所了解,只不过当是用matlab编写的,和python相比,有部分相同之处也有所不同。
2、初学python,python可以调用其他许多第三方库之类的,用起来很方便。
3、代码中出现pcv的包安装失败导致代码无法输出结果。

全部评论 (0)

还没有任何评论哟~