zoukankan      html  css  js  c++  java
  • Python---图像基础处理

    一、软件安装及环境配置

    在做图像处理时我使用了pycharm开发平台加python(3.7.0)环境,并且需要使用很多图像库以及工具库

    PIL(Python Imaging Library,图像处理类库),提供了通用的图像处理功能(图像缩放、裁剪、旋转、颜色转换等),以及大量有用的基本图像操作。

    PCV:包含了计算机视觉中所运用的一些工具包,如图像分类中的knn、bayes,聚类中的hcluster,地理标记中的sfm、homographt、wrap等,以及图像检索,特征值提取。

    Matplotlib:是python比较底层的可视化库,可定制性强、图表资源丰富、简单易用、达到出版质量级别。

    还有其他的包就不一一介绍了这些都是图像在处理之前的准备工作。

    我下载安装了这些包

     二、图像的基本处理

    1.直方图

    图像的直方图用来表征该图像像素值的分布情况。用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目。图像的直方图可以使用 hist() 函数绘制。hist() 函数的第二个参数指定小区间的数目。需要注意的是,因为 hist() 只接受一维数组作为输入,所以我们在绘制图像直方图之前,必须先对图像进行压平处理,即灰度化处理

    代码

    from PIL import Image
    im = Image.open('E://Python_code//sea.jpg.jpg')
    im.show()
    im_change = Image.open('E://Python_code//sea.jpg').convert('L')
    im_change.show()
    hist(im_change.flatten(),128)
    plt.xlim([0,260])
    plt.ylim([0,10000])
    show()
    结果:
    原图

    灰度化图像

    图像灰度后直方图

     

    2.直方图均衡化

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

    源代码:

    # coding=utf-8
    from PIL import Image
    from pylab import *
    from numpy import *
    from PCV.tools import imtools
    from matplotlib.font_manager import FontProperties
    font = FontProperties(fname=r"c:windowsfontsSimSun.ttc", size=14)
    im = array(Image.open("E://Python_code//sea.jpg").convert('L')) # 打开图像,并转成灰度图像
    im2, cdf = imtools.histeq(im)
    figure()
    subplot(2, 2, 1)
    axis('off')
    gray()
    title(u'(a)灰度化图', fontproperties=font)
    imshow(im)
    subplot(2, 2, 2)
    axis('off')
    title(u'(b)灰度均衡化图', fontproperties=font)
    imshow(im2)
    subplot(2, 2, 3)
    axis('off')
    title(u'(c)灰度化直方图', fontproperties=font)
    hist(im.flatten(), 128, normed=True)
    subplot(2, 2, 4)
    axis('off')
    title(u'(d)均衡化后直方图', fontproperties=font)
    hist(im2.flatten(), 128, normed=True)
    show()
    结果:

    3.高斯滤波图

    高斯滤波器是一种线性滤波器,能够有效的抑制噪声,平滑图像。其作用原理和均值滤波器类似,都是取滤波器窗口内的像素的均值作为输出。其窗口模板的系数和均值滤波器不同,均值滤波器的模板系数都是相同的为1;而高斯滤波器的模板系数,则随着距离模板中心的增大而系数减小。所以,高斯滤波器相比于均值滤波器对图像个模糊程度较小。

    源代码:

    import cv2
    import numpy as np
    import matplotlib.pyplot as plt
    img = cv2.imread('E://Python_code//sea.jpg')
    source = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
    result = cv2.GaussianBlur(source, (10,10), 0)#高斯滤波,这里使用10*10的卷积核
    titles = ['原图', '高斯滤波图']
    images = [source, result]
    for i in range(2):
    plt.subplot(1,2,i+1), plt.imshow(images[i], 'gray')
    plt.title(titles[i])
    plt.xticks([]),plt.yticks([])
    plt.show()
    结果:

    、总结:

          作为初学python小白,感觉python语言简单,非常适合阅读,也易学,python虽然是用c语言写的,但是它摒弃了c中非常复杂的指针,简化了python的语法。通过这门课我了解到Python标准库确实很庞大。python有可定义的第三方库可以使用。它可以帮助你处理各种工作,除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。Python确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的特色。同时Python采用强制缩进的方式使得代码具有极佳的可读性。安装软件的过程中遇到了无法导库,pip不能下载第三方库等问题,但是通过询问同学百度得以大部分的解决,以后要认真学习!!

  • 相关阅读:
    如何面试程序员?
    开始做项目
    ===
    依赖注入获得一个对象却想返回不同的值(Error)
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can not reread row data for column 4.
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.
    .net 4.5新特性
    有限状态机简单示例
    JavaScript入门经典(第四版)文摘
    小强升职记读后感
  • 原文地址:https://www.cnblogs.com/lhx0814/p/12348258.html
Copyright © 2011-2022 走看看