0

0

Python作业:直方图、均衡化、高斯滤波

coldplay.xixi

coldplay.xixi

发布时间:2021-03-10 10:41:31

|

2792人浏览过

|

来源于CSDN

转载

Python作业:直方图、均衡化、高斯滤波

Python直方图、均衡化、高斯滤波

  • 测试原图
  • 直方图
    • 基本原理
    • matplotlib库绘制直方图
    • RGB三通道直方图
  • 直方图均衡化
    • 基本原理
    • PCV库完成直方图均衡化
  • 高斯滤波
    • 基本原理
    • opencv高斯滤波实现

(免费学习推荐:python视频教程

测试原图

立即学习Python免费学习笔记(深入)”;

Python作业:直方图、均衡化、高斯滤波

tire.jpg

直方图

基本原理

什么是直方图:图像的直方图描述图像的灰度级和对应灰度级在图像中出现的次数(频率)的关系,通过直方图可以进行图像分割、检索、分类等操作

matplotlib库的hist函数:hist函数能够帮助绘制直方图。它的参数很多,这里用到前两个参数:x、bins。x参数表示一个像素的一维数组,如果是一维以上的数组可以使用flatten方法展平成一维,一般来说读入一幅图片都是一个二维的矩阵,都需要进行展平的操作。bins参数表示要显示直方图的柱数

假设有一个二维数组img=[[159,120,130],[100,84,92],[168,150,212]]。其数字表示图像的像素值,展平后img=[159,120,130,100,84,92,168,150,212],使用hist函数绘制出的直方图如下图。横轴表示像素值,纵轴表示该像素值出现的频率
在这里插入图片描述
opencv提供的cv2.calcHist()绘制直方图:calcHist函数需要传入读取的图片image;图像的通道channels,如果是灰度图像channels=0,如果分别是r、g、b通道,则传入0、1、2。

matplotlib库绘制直方图

课本代码

from PIL import Imagefrom pylab import *# 解决中文乱码plt.rcParams['font.sans-serif'] = 'SimHei'plt.rcParams['axes.unicode_minus'] = False#im = array(Image.open('headimage.jpeg').convert('L'))  # 打开图像,并转成灰度图像print(im)figure()subplot(121)gray()contour(im, origin='image')  #画图axis('equal')  # 自动调整比例axis('off')  # 去除x  y轴上的刻度title(u'图像轮廓')subplot(122)# flatten()函数可以执行展平操作,返回一个一维数组hist(im.flatten(), 128)print(im.flatten())title(u'图像直方图')plt.xlim([0,260])plt.ylim([0,11000])show()

运行结果
运行结果

RGB三通道直方图

代码实现

import cv2from matplotlib import pyplot as plt
img = cv2.imread('headimage.jpeg',1)color = ('b','g','r')for i,col in enumerate(color):
    histr = cv2.calcHist([img],[i],None,[256],[0,256])
    plt.plot(histr,color = col)
    plt.xlim([0,256])plt.show()

运行结果
在这里插入图片描述

萝卜简历
萝卜简历

免费在线AI简历制作工具,帮助求职者轻松完成简历制作。

下载

直方图均衡化

基本原理

什么是直方图均衡化:直方图均衡化是利用图像的直方图对对比度进行调整,是图像增强的一种方法。从图片直观上看,均衡化后的图片对比度更强,更加清晰,特征更加明显;从直方图上看,均衡化后的图片的直方图灰度值出现的频率更加均匀。

如何均衡化直方图

  • 直方图均衡化首先要读取一张图片img,并计算该图片的直方图的值imhist(可以使用histogram函数)。
  • 得到直方图的值后需要计算该直方图的累计直方图cdf(cdf[i]等于imhist[0]到imhist[i]的总和,可以使用cumsum函数直接得到)。
  • 最后就是进行直方图的均衡化,对于图片第i行第j列的像素值img[i, j],利用公式 img[i, j] = cdf[ img[i,j] ] / (m*n)*255进行计算,得到均衡化后的像素值,然后再计算均衡化后的图片的直方图,就得到均衡化后的直方图

使用PCV库的histeq函数均衡化:传入图像im,返回均衡化后的直方图和累计直方图cdf。

PCV库完成直方图均衡化

课本代码

# -*- coding: utf-8 -*-from PIL import Imagefrom pylab import *from PCV.tools import imtools# 添加中文字体支持from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)im = array(Image.open('tire.jpg').convert('L'))  # 打开图像,并转成灰度图像im2, cdf = imtools.histeq(im)figure()subplot(2, 2, 1)axis('off')gray()title(u'原始图像', fontproperties=font)imshow(im)subplot(2, 2, 2)axis('off')title(u'直方图均衡化后的图像', fontproperties=font)imshow(im2)subplot(2, 2, 3)axis('off')title(u'原始直方图', fontproperties=font)hist(im.flatten(), 128, density=True)subplot(2, 2, 4)axis('off')title(u'均衡化后的直方图', fontproperties=font)hist(im2.flatten(), 128, density=True)show()

运行结果
在这里插入图片描述
通过运行结果可以得到,因为原图像整体较暗(黑),是的原图像的直方图在低像素上出现的频率较高,高像素的频率低。通过直方图均衡化后,图像整体变亮,观察直方图发现低像素的频率有所降低,而高像素的频率升高,使得图像有了更明显的对比度

高斯滤波

基本原理

什么是高斯滤波:高斯滤波是一种线性平滑滤波,它将正太分布用于图像处理,适用于消除高斯噪声,能够对图片进行模糊处理,使图像变得平滑,使图片产生模糊的效果。

高斯滤波原理:高斯滤波是用户指定一个模板,然后通过这个模板对图像进行卷积,所进行的卷积操作就是将模板中心周围的像素值进行加权平均后替换模板中心的像素值
高斯模板

opencv高斯滤波实现

代码实现

import cv2import matplotlib.pyplot as plt

im=cv2.imread("tire.jpg")# 高斯滤波img_Guassian = cv2.GaussianBlur(im,(5,5),0)plt.subplot(121)plt.imshow(im)plt.subplot(122)plt.imshow(img_Guassian)plt.show()

运行结果
tire
从运行结果中可以看出,经过高斯滤波后的图像变得模糊了,边缘变得没有那么明显,图像变得平滑

相关免费学习推荐:python教程(视频)

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

37

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

37

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

19

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

16

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

本专题整合了PHP缓存相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.13

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

交互式图表和动态图表教程汇总
交互式图表和动态图表教程汇总

本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

45

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

9

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Django 教程
Django 教程

共28课时 | 3.1万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号