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

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

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

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

测试原图

直方图

基本原理

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

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()

运行结果

直方图均衡化

基本原理

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

如何均衡化直方图

  • 直方图均衡化首先要读取一张图片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()

运行结果

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

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

以上就是Python作业:直方图、均衡化、高斯滤波的详细内容,更多请关注昆居客【www.kunjuke.com】。

相关推荐:

懒人作业答案最新版本

懒人作业答案是一款实用的作业辅助软件,专为中小学生所量身打造,每天都有热门的教学教材为你推荐,提供作业答案快速查找、一键扫码、答案收藏、在线查看答案、上传答案等多样化的内容,为学生能够带来帮助。 懒人作业答案搜题: 懒人作业答案最新版本:点此下载 软件亮点 1、图片搜索问题:只需瞄准问题并拍照,即可立即提供详细的解释和答案。操作简单快捷。 2、学科覆盖全面:包括语文、数学、英语、物理、化学等主流学...

作业帮扫一扫答题网页版入口

作业帮是一款广受学生群体欢迎的作业辅导类学习软件。当你面对作业中那些让人绞尽脑汁的难题时,这款软件就能发挥大作用。只需轻轻拿起手机,将难题拍照上传,眨眼间就能立即得出答案,不仅如此,它还会贴心地附上详细的解题思路,让你不仅知其然,更知其所以然。 作业帮扫一扫答题在线使用: 作业帮扫一扫答题网页版入口:点此进入 作业帮扫一扫答题网页下载:点此下载 软件介绍 作业帮可不只是简单的拍照解题工具,它还是一...

一起作业怎么看分数_历次作业成绩与排名查询【分享】

学生可查历次作业得分、班级排名及单次表现:打开APP→【作业记录】→【统计分析】→查看总平均分、实时排名及每份作业得分率与班内名次;教师可通过后台查分数段分布或加权综合统计。 你想快速查清自己在“一起作业”平台上的所有历史作业得分、班级排名和单次作业表现,而不是只看最近一次分数或模糊的等级评价。 学生端查历次作业总分与班级排名 打开一起作业APP → 点击底部【作业记录】→ 向上滑动页面,找到并点...

一起作业在线登录 一起作业客户端首页入口

一起作业在线登录入口地址是http://www.17zuoye.com,支持网页直接访问及扫码下载App,提供学生、教师、家长三类登录通道,并实现多端数据互通与智能学习功能。 一起作业在线登录入口地址在哪里?这是不少学生和家长都关注的,接下来由PHP小编为大家带来一起作业客户端首页入口,感兴趣的用户一起随小编来瞧瞧吧! http://www.17zuoye.com 平台基础访问方式 1、直接在主流...

一起作业网登录中心 一起作业登录网页入口

一起作业网登录中心入口地址是http://www.17zuoye.com,平台提供三科同步练习、智能批改、模块化作业界面、错题自动归集、分层作业、多端协同、离线缓存、家校通知、学习激励及周报分析等功能。 一起作业网登录中心入口地址在哪里?这是不少学生和家长都关注的,接下来由PHP小编为大家带来一起作业登录网页入口,感兴趣的用户一起随小编来瞧瞧吧! http://www.17zuoye.com 平台...

一起作业如何查看学情报告_学生学习进度数据分析【详解】

必须登录学生版App并进入“我的→学情分析”查看学情报告,可获7天数据概览、分学科薄弱点、错题详情及30天趋势对比,仅学生账号可用且需App 3.5.7+版本。 想快速掌握自己在一起作业平台上的学习进度、薄弱环节和作业完成质量,必须找到并打开学情报告页面,否则所有数据都处于隐藏状态,无法形成有效反馈。 确认账号类型并登录学生端App 一起作业的学情报告仅对学生账号开放,家长或教师账号无法查看学生维...

一起作业手机网页版入口 一起作业手机端网页入口

一起作业手机网页版入口是http://www.17zuoye.com,该页面采用响应式设计,适配移动设备,优化触控交互、弱网加载、儿童阅读体验,并配套教材同步的学习资源、家校协同功能及账号安全机制。 一起作业手机网页版入口在哪里?这是不少学生和家长都关心的问题,接下来由PHP小编为大家带来一起作业手机端网页入口,感兴趣的用户一起随小编来瞧瞧吧! http://www.17zuoye.com 界面适...

智慧中小学app作业在哪里找_智慧中小学app查找作业入口指引【路径】

可通过“学习”“消息”“应用”三大模块查找作业:一、“学习”→“我的学习”查看待完成作业;二、“消息”→班级群搜索作业通知;三、“应用”→“作业活动”进入结构化作业页面。 如果您已登录“智慧中小学”APP,但无法快速定位教师布置的作业内容,则可能是由于未进入正确功能模块或未完成班级关联。以下是查找作业入口的具体路径: 一、通过“学习”模块进入“我的学习”频道 该路径适用于已完成班级关联且教师已发布...