Python实现直方图均衡化

这篇具有很好参考价值的文章主要介绍了Python实现直方图均衡化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

直方图均衡化:

作用:直方图均衡化是一种有效的图像增强技术,原始图像在灰度分布上可能集中在较窄的区间,造成图像不够清晰。采用直方图均衡化可以将原始图像的直方图变换为均匀分布,这样增加了像素之间的灰度值差别,从而达到增强图像整体对比度的效果。

具体原理可参考冈萨雷斯数字图像处理3.3

Python实现直方图均衡化

 文章来源地址https://www.toymoban.com/news/detail-512509.html

#直方图均衡化:遍历图像每个像素的灰度,算出每个灰度的概率(n/MN-n是每个灰度的个数,MN是像素总数),用L-1乘以所得概率得到新的灰度

import cv2
import numpy as np

img = cv2.imread('00000.jpg')
img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#直方图统计

def pix_gray (img_gray):
    h = img_gray.shape[0]
    w = img_gray.shape[1]

    gray_level = np.zeros(256)
    gray_level2 = np.zeros(256)

    for i in range (1,h-1):
        for j in range(1,w-1):
            gray_level[img_gray[i,j]] += 1  #统计灰度级为img_gray[i,j的个数

    for i in range(1,256):
        gray_level2[i] = gray_level2[i-1] + gray_level[i]  #统计灰度级小于img_gray[i,j]的个数

    return gray_level2

#直方图均衡化

def hist_gray(img_gary):
    h,w = img_gary.shape
    gray_level2 = pix_gray(img_gray)
    lut = np.zeros(256)
    for i in range(256):
        lut[i] = 255.0/(h*w)*gray_level2[i] #得到新的灰度级
    lut = np.uint8(lut + 0.5)
    out = cv2.LUT(img_gray,lut)
    return out


cv2.imshow(' imput',img_gray)
out_img = hist_gray(img_gray)
cv2.imshow('output',out_img)
cv2.waitKey(0)
cv2.destroyWindow()

到了这里,关于Python实现直方图均衡化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机视觉实战--直方图均衡化和自适应直方图均衡化

    前言: Hello大家好,我是Dream。 均衡化是数字图像处理中常用的一种技术,用于增强图像的视觉效果和对比度。 ,今天我们将实现对同一张图像的 直方图均衡化 和 自适应直方图均衡化 处理,学习一下两者的的 基本原理和实现过程 ,一起来看看吧~ 直方图均衡化(Histogram

    2024年02月13日
    浏览(48)
  • 基于python的对比度增强(线性变换、直方图正规化、直方图均衡化、CLAHE)

    线性变换 假设输入图像为I,宽为W,高为H,输出图像为O,图像的线性变换可以用以下公式定义: O ( r , c ) = a × I ( r , c ) + b , 0 ≤ r H , 0 ≤ c W O(r, c) = a × I(r, c) + b, 0 ≤ r H, 0 ≤ c W O ( r , c ) = a × I ( r , c ) + b , 0 ≤ r H , 0 ≤ c W 当a=1,b=0时,O为I的一个副本;如果a1,则输出图像

    2024年02月06日
    浏览(43)
  • python的opencv操作记录(13)-增强之直方图均衡化

    前段时间忙活深度网络和android的东西去了,好久没讲讲传统图像处理了,这一篇继续来说说opencv中的传统图像处理部分——图像增强之直方图增强。 图像增强是一种基本的图像处理操作,简单的来说就是把图像变的更清晰,或者说感兴趣的某个区域需要变的更加清晰。 而清

    2024年02月04日
    浏览(47)
  • python数字图像处理基础(七)——直方图均衡化、傅里叶变换

    均衡化原理 图像均衡化是一种基本的图像处理技术,通过更新图像直方图的像素强度分布来调整图像的全局对比度。这样做可以使低对比度的区域在输出图像中获得更高的对比度。 简单理解:改变图像对比度,让色彩更丰富,灰度值直方图:瘦高 - 均衡 本质上,直方图均衡

    2024年01月18日
    浏览(57)
  • 直方图均衡化原理

    2024年02月09日
    浏览(61)
  • 直方图均衡化算法

    直方图均衡化是一种图像处理算法,通过调整图像的灰度级分布,增强图像的对比度和细节。下面是直方图均衡化算法的基本步骤: 统计原始图像的灰度直方图:遍历整个图像,计算每个灰度级出现的频次。 计算累积直方图:对灰度直方图进行累加,得到每个灰度级及其之

    2024年02月08日
    浏览(42)
  • 【数字图像处理】直方图均衡化

    直方图均衡化是一种常见的图像增强方法,可以增强图像的对比度。其数学原理如下: 首先,我们需要了解直方图的概念。直方图是对图像像素分布的一种统计,它将每个像素值出现的次数记录下来,并以图形的方式呈现出来。在一幅图像中,像素值的范围通常是有限的。例

    2023年04月13日
    浏览(58)
  • 【MATLAB图像处理】直方图均衡化

    直方图均衡化有以下几个好处: 增强图像对比度:直方图均衡化可以通过重新分配像素值来增强图像的对比度。这可以使得图像中的细节更加清晰可见,从而提高图像的质量和可读性。 均衡化图像亮度:直方图均衡化可以将图像的亮度均衡化,使得图像的整体亮度更加均匀

    2024年02月08日
    浏览(43)
  • 【数字图像处理】直方图均衡化与规定化

    目录 直方图处理技术概述 直方图均衡化 公式推导  Matlab代码实现 图像的规定化 数学推导 单映射 Matlab代码 效果展示​编辑  组映射 Matlab代码 灰度级范围[0,L-1]的数字图像,在实际使用中,用哥灰度级的像素总数除以MN的整幅图像的像素数量,归一化到规律中进行计算,这样

    2023年04月26日
    浏览(43)
  • 数字图像处理实验(直方图均衡化&规定化)

    图像均衡化   图像均衡化是一种图像处理技术,它的目的是改善图像的对比度。   具体来说,对于一张图像,其直方图就是统计图像中各灰度级出现的次数的图像。通常情况下,图像的直方图会呈现不平衡的状态,即图像的某些灰度级出现的次数很多,而其它灰度级出现的

    2024年02月04日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包