当前位置: 首页 > 面试题库 >

使用NumPy对灰度图像进行直方图均衡

哈烨熠
2023-03-14
问题内容

如何轻松地将NumPy数组中存储的多个灰度图像进行直方图均衡化?

我有这种4D格式的96x96像素NumPy数据:

(1800, 1, 96,96)

问题答案:

Moose指向此博客文章的评论相当不错。

为了完整起见,我在这里使用更好的变量名给出一个示例,并在问题中的4D数组中的1000张96x96图像上循环执行。它速度很快(在我的计算机上为1-2秒),只需要NumPy。

import numpy as np

def image_histogram_equalization(image, number_bins=256):
    # from http://www.janeriksolem.net/2009/06/histogram-equalization-with-python-and.html

    # get image histogram
    image_histogram, bins = np.histogram(image.flatten(), number_bins, density=True)
    cdf = image_histogram.cumsum() # cumulative distribution function
    cdf = 255 * cdf / cdf[-1] # normalize

    # use linear interpolation of cdf to find new pixel values
    image_equalized = np.interp(image.flatten(), bins[:-1], cdf)

    return image_equalized.reshape(image.shape), cdf

if __name__ == '__main__':

    # generate some test data with shape 1000, 1, 96, 96
    data = np.random.rand(1000, 1, 96, 96)

    # loop over them
    data_equalized = np.zeros(data.shape)
    for i in range(data.shape[0]):
        image = data[i, 0, :, :]
        data_equalized[i, 0, :, :] = image_histogram_equalization(image)[0]


 类似资料:
  • 本文向大家介绍python 对一幅灰度图像进行直方图均衡化,包括了python 对一幅灰度图像进行直方图均衡化的使用技巧和注意事项,需要的朋友参考一下 图1:原图的灰度图 图2:进行直方图均衡化后的图像 图3:原图灰度图的直方图 图4:进行直方图均衡化后的直方图 图5:灰度变换函数 以上就是python 对一幅灰度图像进行直方图均衡化的详细内容,更多关于python 直方图均衡化的资料请关注呐喊教

  • 本文向大家介绍Python cv2 图像自适应灰度直方图均衡化处理方法,包括了Python cv2 图像自适应灰度直方图均衡化处理方法的使用技巧和注意事项,需要的朋友参考一下 __author__ = 'Administrator' 均衡化前、后对比效果 以上这篇Python cv2 图像自适应灰度直方图均衡化处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程

  • 目标 在本节中, 我们将学习直方图均衡化的概念,并利用它来提高图像的对比度。 理论 考虑这样一个图像,它的像素值仅局限于某个特定的值范围。例如,较亮的图像将把所有像素限制在高值上。但是一幅好的图像会有来自图像所有区域的像素。因此,您需要将这个直方图拉伸到两端(如下图所示,来自wikipedia),这就是直方图均衡化的作用(简单来说)。这通常会提高图像的对比度。 我建议您阅读直方图均衡化上的Wiki

  • 图像的直方图显示像素的强度值的频率。在图像直方图中,轴表示灰度强度,轴表示这些强度的频率。 直方图均衡化提高了图像的对比度,以扩大语义范围。可以使用类的方法来均衡给定图像的直方图。以下是此方法的语法。 该方法接受以下参数 - src - 表示此操作的源(输入图像)的对象。 dst - 表示输出的类的一个对象(在均衡直方图之后获得的图像) 示例 以下程序演示如何均衡给定图像的直方图。 假定以下是上述

  • 所以我有一个字节数组,代表像素数据(8位灰度)。没有头球。没什么。只是数据。我想用这些数据创建一个缓冲图像。我做的 其中w只是以像素为单位的宽度,h是以像素为单位的高度,数据是字节数组,图像是BufferedImage 这是我的作画方法 然而,我得到了这个图像(真实图像是指纹,大部分是白色像素) 出什么事了?我试着按原样保存数据,然后在Photoshop中查看。数据很好。 [编辑]别管这个问题。我

  • 问题内容: 我正在尝试使用 matplotlib.pyplot.imshow() 显示灰度图像。我的问题是灰度图像显示为颜色图。我需要灰度,因为我想在图像上绘制颜色。 我读入图像并使用 PIL的Image.open()。convert(“ L”)* 转换为灰度 * 然后,我将图像转换为矩阵,以便可以轻松地使用 但是,当我这样做 它使用颜色图显示图像(即不是灰度)。 我在这里做错了什么? 问题答案: