返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何实现直方图、均衡化、高斯滤波
  • 134
分享到

Python如何实现直方图、均衡化、高斯滤波

2023-06-08 00:06:21 134人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章将为大家详细讲解有关python如何实现直方图、均衡化、高斯滤波,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python直方图、均衡化、高斯滤波测试原图直方图基本原理matplotlib库绘制直

这篇文章将为大家详细讲解有关python如何实现直方图、均衡化、高斯滤波,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

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

  • 测试原图

  • 直方图

    • 基本原理

    • matplotlib库绘制直方图

    • RGB三通道直方图

  • 直方图均衡化

    • 基本原理

    • PCV库完成直方图均衡化

  • 高斯滤波

    • 基本原理

    • OpenCV高斯滤波实现

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

测试原图

Python如何实现直方图、均衡化、高斯滤波

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函数绘制出的直方图如下图。横轴表示像素值,纵轴表示该像素值出现的频率
Python如何实现直方图、均衡化、高斯滤波
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()

运行结果
Python如何实现直方图、均衡化、高斯滤波

RGB三通道直方图

代码实现

import cv2from matplotlib import pyplot as pltimg = 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()

运行结果
Python如何实现直方图、均衡化、高斯滤波

直方图均衡化

基本原理

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

如何均衡化直方图

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

运行结果
Python如何实现直方图、均衡化、高斯滤波
通过运行结果可以得到,因为原图像整体较暗(黑),是的原图像的直方图在低像素上出现的频率较高,高像素的频率低。通过直方图均衡化后,图像整体变亮,观察直方图发现低像素的频率有所降低,而高像素的频率升高,使得图像有了更明显的对比度

高斯滤波

基本原理

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

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

opencv高斯滤波实现

代码实现

import cv2import matplotlib.pyplot as pltim=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如何实现直方图、均衡化、高斯滤波”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Python如何实现直方图、均衡化、高斯滤波

本文链接: https://lsjlt.com/news/250649.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python如何实现直方图、均衡化、高斯滤波
    这篇文章将为大家详细讲解有关Python如何实现直方图、均衡化、高斯滤波,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Python直方图、均衡化、高斯滤波测试原图直方图基本原理matplotlib库绘制直...
    99+
    2023-06-08
  • OpenCV-Python直方图均衡化如何实现图像去雾
    小编给大家分享一下OpenCV-Python直方图均衡化如何实现图像去雾,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!直方图均衡化直方图均衡化的目的是将原始图像的灰度级均匀地映射到整个灰度级范围内,得到一个灰度级分布均衡的...
    99+
    2023-06-15
  • python实现对图片进行均值滤波、中值滤波、高斯滤波处理及其原理和特点
    1.高斯滤波         1)原理:对图像邻域内像素进行平滑时,邻域内不同位置的像素被赋予不同的权值。         2)特点:对图像进行平滑的同时,同时能够更多的保留图像的总体灰度分布特征。         3)代码 import ...
    99+
    2023-10-18
    python 开发语言
  • python OpenCV 实现高斯滤波详解
    目录一、高斯滤波二、C++代码三、python代码四、结果展示1、原始图像2、5x5卷积3、9x9卷积一、高斯滤波    高斯滤波是一种线性平滑滤波,适用于消...
    99+
    2024-04-02
  • OpenCV-Python直方图均衡化实现图像去雾
    直方图均衡化 直方图均衡化的目的是将原始图像的灰度级均匀地映射到整个灰度级范围内,得到一个灰度级分布均衡的图像。这种均衡化,即实现了灰度值统计上的概率均衡,也实现了人类视觉系统上(H...
    99+
    2024-04-02
  • C语言实现直方图均衡化
    直方图均衡化部分是用c语言写的,最后用opencv显示原图像,处理后图像以及原图和处理后图的灰度直方图。 虽然做出来了,均衡化效果还可以,但不知道为什么处理后图像中有三条白线,真心搞...
    99+
    2024-04-02
  • Python+OpenCV之直方图均衡化详解
    目录直方图均衡化自适应直方图均衡化直方图均衡化 直方图均衡化(Histogram Equalization)是一种增强图像对比度(Image Contrast)的方法,其主要思想是将...
    99+
    2024-04-02
  • matlab彩色直方图均衡化怎么实现
    要在MATLAB中实现彩色直方图均衡化,可以按照以下步骤进行操作:1. 读取彩色图像:使用`imread`函数读取原始彩色图像,例如...
    99+
    2023-09-12
    matlab
  • Python+OpenCV 实现简单的高斯滤波(推荐)
    基本原理讲解:高斯模糊的算法 高斯核函数的编写:构建权重矩阵,采用高斯二维分布函数的形式进行处理。需要注意的是,这里我没有特判当sigma = 0的时候的情况。 即是实现: 1)权重...
    99+
    2024-04-02
  • OpenCV 直方图均衡化的实现原理解析
    目录直方图均衡化介绍图像的直方图是什么更形象解释什么是直方图均衡化?直方图均衡化是如何实现的?直方图均衡化的作用直方图均衡化步骤相关APIequalizeHist代码示例灰度图均值化...
    99+
    2024-04-02
  • C语言实现BMP图像处理(直方图均衡化)
    本文实例为大家分享了C语言实现BMP图像直方图均衡化处理的具体代码,供大家参考,具体内容如下 计算步骤: 1)统计各灰度值的概率; 2)计算了累积概率直方图(CDF); 3)取整扩展...
    99+
    2024-04-02
  • Python学习之直方图均衡化原理详解
    目录1.点算子2.线性灰度变换3.直方图均衡化4.代码实战1.点算子 点算子是两个像素灰度值间的映射关系,属于像素的逐点运算,相邻像素不参与运算。点算子是最简单的图像处理手段,如:亮...
    99+
    2024-04-02
  • python opencv图像的高通滤波和低通滤波怎么实现
    这篇文章主要介绍“python opencv图像的高通滤波和低通滤波怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python opencv图像的高通滤波和低通滤波怎么实...
    99+
    2023-07-02
  • Python如何实现低通滤波器模糊图像功能
    这篇“Python如何实现低通滤波器模糊图像功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python如何实现低通滤波器...
    99+
    2023-07-06
  • Opencv图像添加椒盐噪声、高斯滤波去除噪声原理以及手写Python代码实现方法
    目录一、噪声 二、噪声的分类三、图像中添加椒盐噪声四、基于滤波器方法去噪五、opencv高斯滤波调包 总结 一、噪声   我们将常会...
    99+
    2024-04-02
  • python如何实现高斯模糊
    这篇文章给大家分享的是有关python如何实现高斯模糊的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。高斯模糊是一种常见的模糊技术,相关知识点有:高斯函数、二维卷积。 (一)一维高斯分布函数一维(连续变量...
    99+
    2023-06-15
  • php如何实现图片高斯模糊
    这篇文章将为大家详细讲解有关php如何实现图片高斯模糊,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在php中可以通过高斯算法实现图片的模糊,其实现的语句是“function gaussian_blur(...
    99+
    2023-06-15
  • 如何在PostgreSQL中实现高可用和负载均衡方案
    在PostgreSQL中实现高可用和负载均衡方案通常需要使用一些特定的工具和技术。以下是一些常用的方法: 使用流复制(Strea...
    99+
    2024-04-02
  • 在容器化环境中如何实现负载均衡
    在容器化环境中实现负载均衡可以通过以下几种方式: 使用容器编排工具:容器编排工具如Kubernetes、Docker Swarm等...
    99+
    2024-04-17
    负载均衡
  • 红帽 Piranha方案如何实现WEB负载均衡
    红帽 Piranha方案如何实现WEB负载均衡,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。系统环境: RHEL6.5x86_...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作