4.2 直方图均衡化

直方图均衡化原理及计算 直方图均衡化是基于灰度直方图的图像增强的一种方法,还有另外一种方法是直方图规定化。 均衡化的目的是将原始图像的直方图变为均衡分布的的形式,将一非均匀灰度概率密度分布图像,通过寻求某种灰度变换,变成一幅具有均匀概率密度分布的目的图像。 具体原理如下: 1、连续灰度级: 假定:r代表灰度级,P(r)为概率密度函数。r值已经过归一化处理,灰度值范围在[0,1]之间。r与P(r)之间的关系如下: ... 阅读详情

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

上一章我们简单介绍了一下什么是直方图,并且举例说明了一下不同特点的图像的直方图有什么不同,这一章我们讨论直方图均衡化。


1. 直方图均衡化原理

直方图均衡化依旧属于图像变换,也就是输入一个图像,经过变换,输出另一个图像,既然是图像变换,那么实际作用到的依旧是图像的像素,那么图像变换的函数公式依旧可以表示如下: g ( x , y ) = F ( f ( x , y ) ) f ( x , y ) 是位于图像点 ( x , y ) 处的像素的值 g(x,y)=F(f(x,y))\quad f(x,y)是位于图像点(x,y)处的像素的值 g(x,y)=F(f(x,y))f(x,y)是位于图像点(x,y)处的像素的值那么问题的重点就来到了如何确定 F F F

1.1 直方图均衡化理论基础

上一章我们介绍了下面两个公式
h ( k ) = n k k = 0 , 1 , 2 , 3 , . . . L − 1 p ( k ) = h ( k ) M ∗ N = n k M ∗ N n k :像素值为 k 的像素的个数 p ( k ) :像素值为 k 的像素的频率 ( 概率 ) \begin{aligned} h(k)&=n_k \quad k=0,1,2,3,...L-1 \\ p(k)&=\frac{h(k)}{M*N}=\frac{n_k}{M*N} \\ \\ n_k&:像素值为k的像素的个数 \\ p(k)&:像素值为k的像素的频率(概率) \\ \end{aligned} h(k)p(k)nk​p(k)​=nk​k=0,1,2,3,...L−1=M∗Nh(k)​=M∗Nnk​​:像素值为k的像素的个数:像素值为k的像素的频率(概率)​
那么直方图均衡化究竟要做什么呢?将一个图像(输入图像)变换成另一个图像,我们先假设已经变换成功,也就是说已经输出了一个图像,那么输出图像有什么特点呢?输出图像的特点就是图像的概率密度比较均衡,也就是输出图像的直方图比较均衡。

在这里插入图片描述
上图中,左边是输入图像概率密度,右边是我们期望的输出图像的概率密度。

理论公式推导

  • 假设 r r r为归一化之后的输入图像灰度, s s s 为输出图像的灰度,即: r , s ∈ [ 0 , 1 ] r,s\in[0,1] r,s∈[0,1]
  • 由概率论的知识可知,某随机变量的概率分布函数等于其概率密度的函数的积分,即: F ( x ) = ∫ ∞ x f ( t )   d t F(x)=\int_\infty^x {f(t)} \,{\rm d}t F(x)=∫∞x​f(t)dt
  • 若随机变量 r r r 的概率密度函数为 p ( r ) p(r) p(r),且随机变量 s s s 为 r r r的函数,则必有: ∫ 0 b p ( s )   d s = ∫ 0 a p ( r )   d r \int_0^b {p(s)} \,{\rm d}s=\int_0^a {p(r)} \,{\rm d}r ∫0b​p(s)ds=∫0a​p(r)dr对两边求导可得: p ( s ) = p ( r ) d r d s p(s)=\frac{p(r)dr}{ds} p(s)=dsp(r)dr​
  • 有上面得知,我们要的输出图像的概率密度需要均衡,因此我们令 p ( s ) p(s) p(s),则可以得: p ( r ) = d s d r ,即 d s = p ( r ) d r p(r)=\frac{ds}{dr},即\quad ds=p(r)dr p(r)=drds​,即ds=p(r)dr两边对 r r r 积分,上式可变为: s = ∫ 0 x p ( r )   d r ,其中 x 为输入灰度级, x ∈ [ 0 , 1 ] s=\int_0^x {p(r)} \,{\rm d}r,其中x为输入灰度级,x\in[0,1] s=∫0x​p(r)dr,其中x为输入灰度级,x∈[0,1]上式就是图像均衡化的变换公式。

1.2 直方图均衡化手工实现

了解直方图均衡化理论基础之后,我们以一个简单的例子来手工计算均衡化后的图像。图像如下图所示,灰度级是 ( 0 , 9 ) (0,9) (0,9):
在这里插入图片描述
计算过程如下:

第一步:统计原图像的 n k n_k nk​,可以得到 : n k = [ 7 , 9 , 8 , 10 , 15 , 7 , 9 , 18 , 7 , 10 ] , k = 0 , 1 , 2 , 3 , . . . , 9 n_k=[7, 9, 8, 10, 15, 7, 9, 18, 7, 10],k = 0,1,2,3,...,9 nk​=[7,9,8,10,15,7,9,18,7,10],k=0,1,2,3,...,9
第二步:原图像的个数 N = 10 ∗ 10 = 100 N = 10*10 = 100 N=10∗10=100
第三步:计算原始图像的频率 : p r ( k ) = n k N = [ 7 100 , 9 100 , 8 100 , 10 100 , 15 100 , 7 100 , 9 100 , 18 100 , 7 100 , 10 100 ] , k = 0 , 1 , 2 , 3 , . . . , 9 p_r(k)=\frac{n_k}{N}=[\frac{7}{100},\frac{9}{100},\frac{8}{100},\frac{10}{100},\frac{15}{100},\frac{7}{100},\frac{9}{100},\frac{18}{100},\frac{7}{100},\frac{10}{100}],k = 0,1,2,3,...,9 pr​(k)=Nnk​​=[1007​,1009​,1008​,10010​,10015​,1007​,1009​,10018​,1007​,10010​],k=0,1,2,3,...,9
第四步:计算原始图像的累计分布频率 : s ( k ) = ∑ i = 0 k n i N = [ 7 100 , 16 100 , 24 100 , 34 100 , 49 100 , 56 100 , 65 100 , 83 100 , 90 100 , 100 100 ] , k = 0 , 1 , 2 , 3 , . . . , 9 s(k)=\sum_{i=0}^k\frac{n_i}{N}=[\frac{7}{100},\frac{16}{100},\frac{24}{100},\frac{34}{100},\frac{49}{100},\frac{56}{100},\frac{65}{100},\frac{83}{100},\frac{90}{100},\frac{100}{100}],k = 0,1,2,3,...,9 s(k)=i=0∑k​Nni​​=[1007​,10016​,10024​,10034​,10049​,10056​,10065​,10083​,10090​,100100​],k=0,1,2,3,...,9
第五步:将归一化的 s k s_k sk​ 乘以 L − 1 L-1 L−1再四舍五入,以使得均衡化后图像的灰度级与归一化前的原始图像一致。

  • s 0 = 7 100 ∗ ( L − 1 ) = 7 100 ∗ 9 = 1 s_0=\frac{7}{100}*(L-1)=\frac{7}{100}*9=1 s0​=1007​∗(L−1)=1007​∗9=1
  • s 1 = 16 100 ∗ ( L − 1 ) = 16 100 ∗ 9 = 1 s_1=\frac{16}{100}*(L-1)=\frac{16}{100}*9=1 s1​=10016​∗(L−1)=10016​∗9=1
  • s 2 = 24 100 ∗ ( L − 1 ) = 24 100 ∗ 9 = 2 s_2=\frac{24}{100}*(L-1)=\frac{24}{100}*9=2 s2​=10024​∗(L−1)=10024​∗9=2
  • s 3 = 34 100 ∗ ( L − 1 ) = 34 100 ∗ 9 = 3 s_3=\frac{34}{100}*(L-1)=\frac{34}{100}*9=3 s3​=10034​∗(L−1)=10034​∗9=3
  • s 4 = 49 100 ∗ ( L − 1 ) = 49 100 ∗ 9 = 4 s_4=\frac{49}{100}*(L-1)=\frac{49}{100}*9=4 s4​=10049​∗(L−1)=10049​∗9=4
  • s 5 = 56 100 ∗ ( L − 1 ) = 56 100 ∗ 9 = 5 s_5=\frac{56}{100}*(L-1)=\frac{56}{100}*9=5 s5​=10056​∗(L−1)=10056​∗9=5
  • s 6 = 65 100 ∗ ( L − 1 ) = 65 100 ∗ 9 = 6 s_6=\frac{65}{100}*(L-1)=\frac{65}{100}*9=6 s6​=10065​∗(L−1)=10065​∗9=6
  • s 7 = 83 100 ∗ ( L − 1 ) = 83 100 ∗ 9 = 7 s_7=\frac{83}{100}*(L-1)=\frac{83}{100}*9=7 s7​=10083​∗(L−1)=10083​∗9=7
  • s 8 = 90 100 ∗ ( L − 1 ) = 90 100 ∗ 9 = 8 s_8=\frac{90}{100}*(L-1)=\frac{90}{100}*9=8 s8​=10090​∗(L−1)=10090​∗9=8
  • s 9 = 100 100 ∗ ( L − 1 ) = 100 100 ∗ 9 = 9 s_9=\frac{100}{100}*(L-1)=\frac{100}{100}*9=9 s9​=100100​∗(L−1)=100100​∗9=9

根据以上映射关系,映射后的图像如下
在这里插入图片描述
有点尴尬,变换前后区别不大(只是将0变换为1),但是计算过程没有问题

2. 示例

2.1 示例一(自己计算)

2.1.1 示例代码

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv


def getImagePdf(img):
    """
    获取图像的概率密度
    :param img: 输入图像
    :return: 返回图像的概率密度
    """
    # 计算图像的直方图
    hist = cv.calcHist([img], [0], None, [256], [0, 256])

    # 将直方图归一化为概率密度
    pdf = hist / np.sum(hist)

    # 将pdf转化为一维数组
    pdf = pdf.flatten()

    return pdf


def getHETrans(pdf):
    """
    计算直方图均衡化的映射方式(即变换函数),也就是输入图像的像素值会被映射到哪个像素值
    :param pdf:输入图像的概率密度
    :return:
    """
    dst = np.zeros(256)
    cdf = 0  # 累计概率密度(也就是概率分布)
    for i in range(256):
        cdf += pdf[i]
        dst[i] = round(cdf * 255, 0)


def equalizeHistogram(img):
    """
    直方图均衡化
    :param img:
    :return:
    """
    dst = np.copy(img)

    # 计算图像的概率密度
    pdf = getImagePdf(img)

    cdf = 0  # 累计概率密度(也就是概率分布)
    trans = np.zeros(256)  # 用来绘制映射表
    for i in range(256):
        cdf += pdf[i]
        dst[img == i] = round(cdf * 255, 0)
        trans[i] = round(cdf * 255, 0)

    return dst, trans


def calculateHE(img):
    # 原图像直方图
    hist = cv.calcHist([img], [0], None, [256], [0, 256])

    # 均衡化后的图像
    # heImg = cv.equalizeHist(img)
    heImg, heTrans = equalizeHistogram(img)
    # 均衡化后的图像的直方图
    heHist = cv.calcHist([heImg], [0], None, [256], [0, 256])

    return hist, heImg, heHist, heTrans


if __name__ == '__main__':
    # 读取灰度图像
    # 读取灰度图像
    imgGray1 = cv.imread('Image/Fig0401.tif', 0)
    imgHist1, heImg1, heHist1, heTrans1 = calculateHE(imgGray1)

    imgGray2 = cv.imread('Image/Fig0402.tif', 0)
    imgHist2, heImg2, heHist2, heTrans2 = calculateHE(imgGray2)

    imgGray3 = cv.imread('Image/Fig0403.tif', 0)
    imgHist3, heImg3, heHist3, heTrans3 = calculateHE(imgGray3)

    imgGray4 = cv.imread('Image/Fig0404.tif', 0)
    imgHist4, heImg4, heHist4, heTrans4 = calculateHE(imgGray4)

    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.figure(figsize=(10, 13))
    titleList = ["暗图像", "亮图像", "低对比度图像", "高对比度", "直方图", "直方图", "直方图", "直方图"
        , "均衡化后", "均衡化后", "均衡化后", "均衡化后", "直方图", "直方图", "直方图", "直方图", "映射图", "映射图", "映射图", "映射图"]
    imageList = [imgGray1, imgGray2, imgGray3, imgGray4, imgHist1, imgHist2, imgHist3, imgHist4
        , heImg1, heImg2, heImg3, heImg4, heHist1, heHist2, heHist3, heHist4, heTrans1, heTrans2, heTrans3, heTrans4]

    for i in range(4):
        plt.subplot(5, 4, i + 1), plt.title(titleList[i]), plt.axis('off')
        plt.imshow(imageList[i], vmin=0, vmax=255, cmap='gray')

    for i in range(4, 8):
        plt.subplot(5, 4, i + 1), plt.title(titleList[i])
        plt.plot(imageList[i], color='r')

    for i in range(8, 12):
        plt.subplot(5, 4, i + 1), plt.title(titleList[i]), plt.axis('off')
        plt.imshow(imageList[i], vmin=0, vmax=255, cmap='gray')

    for i in range(12, 16):
        plt.subplot(5, 4, i + 1), plt.title(titleList[i])
        plt.plot(imageList[i], color='r')

    for i in range(16, 20):
        plt.subplot(5, 4, i + 1), plt.title(titleList[i])
        plt.plot(imageList[i], color='r')

    plt.tight_layout()
    plt.savefig("Image/tmp.png")
    plt.show()

2.1.2 示例效果

在这里插入图片描述

2.2 示例二(直接使用opencv接口)

2.2.1 示例代码

我这里直接用的opencv的接口,没有直接实现算法。

import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv


def calculateHE(img):
    # 原图像直方图
    hist = cv.calcHist([img], [0], None, [256], [0, 256])

    # 均衡化后的图像
    heImg = cv.equalizeHist(img)

    # 均衡化后的图像的直方图
    heHist = cv.calcHist([heImg], [0], None, [256], [0, 256])

    return hist, heImg, heHist


if __name__ == '__main__':
    # 读取灰度图像
    imgGray1 = cv.imread('Image/Fig0401.tif', 0)
    imgHist1, heImg1, heHist1 = calculateHE(imgGray1)

    imgGray2 = cv.imread('Image/Fig0402.tif', 0)
    imgHist2, heImg2, heHist2 = calculateHE(imgGray2)

    imgGray3 = cv.imread('Image/Fig0403.tif', 0)
    imgHist3, heImg3, heHist3 = calculateHE(imgGray3)

    imgGray4 = cv.imread('Image/Fig0404.tif', 0)
    imgHist4, heImg4, heHist4 = calculateHE(imgGray4)

    plt.rcParams['font.sans-serif'] = ['SimHei']
    plt.figure(figsize=(10, 10))
    titleList = ["暗图像", "亮图像", "低对比度图像", "高对比度", "直方图", "直方图", "直方图", "直方图"
        , "均衡化后", "均衡化后", "均衡化后", "均衡化后", "直方图", "直方图", "直方图", "直方图"]
    imageList = [imgGray1, imgGray2, imgGray3, imgGray4, imgHist1, imgHist2, imgHist3, imgHist4
                 , heImg1, heImg2, heImg3, heImg4, heHist1, heHist2, heHist3, heHist4]

    for i in range(4):
        plt.subplot(4, 4, i + 1), plt.title(titleList[i]), plt.axis('off')
        plt.imshow(imageList[i], vmin=0, vmax=255, cmap='gray')

    for i in range(4, 8):
        plt.subplot(4, 4, i + 1), plt.title(titleList[i])
        plt.plot(imageList[i], color='r')

    for i in range(8, 12):
        plt.subplot(4, 4, i + 1), plt.title(titleList[i]), plt.axis('off')
        plt.imshow(imageList[i], vmin=0, vmax=255, cmap='gray')

    for i in range(12, 16):
        plt.subplot(4, 4, i + 1), plt.title(titleList[i])
        plt.plot(imageList[i], color='r')

    plt.tight_layout()
    plt.savefig("Image/tmp.png")
    plt.show()

2.2.2 示例效果说明

在这里插入图片描述
从上述图像中可以看出:

  • 图像经过均衡化后,不论是亮度还是对比度,都有明显增强
  • 经过均衡化之后的图像的直方图分布更加均衡化
直方图均衡化原理与实现 直方图均衡化原理与实现直方图均衡化原理原理介绍计算步骤代码实现 直方图均衡化是一种增强图像对比度常用的一种方式,主要思想是将图像的直方图分布映射为近似均匀分布,从而增强图像的对比度。 直方图均衡化原理 原理介绍 对于一幅图像,我们用rrr 表示待处理的图像图像灰度级,假设rrr 的取值区间是[0,L−1][0, L-1][0,L−1], rrr 代表图像的256个灰度级。rrr满足如下关系式: s=T(r),0<r<L−1 s= T(r), 0<r<L-1s=T(r),0< 阅读详情

相关推荐

图像增强之一——均衡化

均衡化图像方法对比

weixin_45582490的博客 5684

直方图均衡化的原理及实现

直方图均衡化的原理及实现 一、直方图 1.1 直方图的概念 在图像处理中, 经常用到直方图, 如颜色直方图、 灰度直方图等。 图像的灰度直方图就描述了图像中灰度分布情况, 能够很直观的展示出图像中各个灰度级所占的多少。图像的灰度直方图是灰度级的函数, 描述的是图像中具有该灰度级的像素的个数: 其中, 横坐标是灰度级, 纵坐标是该灰度级出现的率。如下图所示 1.2 直方图的性质 ① 直方图反映了图像中的灰度分布规律。 它描述每个灰度级具有的像素个数, 但不包含这些像素在图像中的位置信息。 图像直方图不关心像

weixin_40163266的博客 7万+

ENVI 图像拉伸:线性1%/2%/5%与直方图均衡化 4种方法效果实测对比

本文深入评测ENVI软件中四种图像拉伸方法(线性1%/2%/5%与直方图均衡化),通过实测数据对比其视觉效果与统计特性差异。针对遥感影像处理,详细解析各方法原理、实现路径及适用场景,提供真彩色合成场景下的决策指南与实战技巧,帮助用户优化影像显示效果。

weixin_30694389的博客 267

直方图均衡化

直方图均衡化的数学原理 直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布【1】。 下图为直方图均衡化的过程,体现了“均衡”的含义:(概率密度的均匀)

Mona_yang的博客 3299

直方图均衡化原理详解:从CDF公式到OpenCV 4.8源码实现

本文详细解析了直方图均衡化的数学原理及其在OpenCV 4.8中的实现方式。从累积分布函数(CDF)公式推导到源码实现,全面介绍了如何通过直方图均衡化技术提升图像的亮度和对比度,并对比了手动实现与OpenCV优化的差异。

weixin_42551227的博客 296

遥感图像预处理实战:从真彩色合成到直方图均衡化

本文详细介绍了遥感图像预处理的完整实战流程,重点解决原始图像对比度低、色彩灰暗的问题。从Landsat8数据获取、真彩色波段合成,到核心的图像增强技术——线性拉伸与直方图均衡化,逐步讲解如何让地物细节清晰呈现。文中还涉及裁剪、直方图匹配等实用技巧与常见避坑指南,旨在帮助初学者快速掌握预处理关键步骤,为后续遥感分析奠定坚实基础。

weixin_29231725的博客 145

opecv入门:4.2图像美化-直方图均衡化

#彩色 直方图均衡化 import cv2 import numpy as np img = cv2.imread('image0.jpg',1) cv2.imshow('src',img) (b,g,r) = cv2.split(img)#通道分解 得到的是各个通道的灰度值 bH = cv2.equalizeHist(b) gH = cv2.equalizeHist(g) rH = cv2.e...

weixin_42217299的博客 252

C++ OpenCV灰度图像增强三合一工具:对比度拉伸+伽马校正+直方图均衡化

一套开箱即用的C++图像处理代码,基于OpenCV实现三种经典灰度变换功能:线性对比度拉伸(支持自定义上下限)、非线性伽马校正(可调gamma值)、全局直方图均衡化。输入为单通道Mat灰度图,输出为处理后的Mat对象,全程使用标准OpenCV 2.x/3.x/4.x API,无额外依赖,兼容主流编译环境。代码结构清晰,关键步骤附中文注释,变量命名规范,适合直接集成进已有C++图像处理流程或用于教学演示。不包含GUI、不处理彩色图或视频流,专注静态灰度图像的像素级映射增强。源文件Grayscale_trans

tea88的博客 237

直方图 - 2: 直方图均衡化 OpenCV-Python v4.7.0

另一个重要的特点是,即使图像是一个较暗的图像(而不是我们使用的一个较亮的图像),在均衡之后,我们将得到与我们得到的几乎相同的图像。这是因为它的直方图并不像我们在以前的案例中看到的那样被限制在一个特定的区域内(试着绘制输入图像的直方图,你会得到更多的直观感受)。当图像的直方图被限制在一个特定的区域时,直方图均衡是好的。在强度变化较大的地方,即直方图覆盖较大区域的地方,它不会有好的效果,也就是说,明亮和黑暗的像素都存在。它有一个非常好的解释,并有工作的例子,所以在阅读后你会理解几乎所有的东西。

hirshdz327的博客 168

跟着团子学SAP CO:揭秘结果分析码在项目结算中的实战应用(一)KKA2/CJ88

本文深入解析了SAP CO模块中结果分析码在项目结算中的核心作用。以KKA2(方法10)和事务代码CJ88为例,详细阐述了如何在项目完工后一次性确认收入的场景下,通过结果分析功能实现收入与成本的精准匹配,将项目成本暂估为在制品,确保各期利润的准确反映。

gamma的博客 684

SecureCRT多种配色方案配置文件

位置 C:\Users%USERNAME%\AppData\Roaming\VanDyke\Config\Global.ini S:"SecureCRT Tab State"=1,1,1,0,0 S:"SecureFX Local Tab State"=1,-1,200 D:"Max Chat Window History"=000000c8 D:"Active Window Alpha Transparency"=000000f0 D:"Save Keymaps As Unicode"=00000000

神棍之路 3705

OpenCV2编程手册笔记之 4.4直方图均衡化

在我上一篇文章中,着重介绍了通过提高对比度的方法提升图像质量。但是,在多数情况下,图像的缺陷主要体现在某些颜色值的出现频率过高。     因此,我们采取直方图均衡化的方法对过高的颜色值进行平均化操作,以达到图像增强的目的。     在opencv中,有一个很简单的函数equalizeHist,它可以自动的为我们进行直方图均衡化的操作,如果我们想进行自己操作的话,可以选择自己定义查找表。

Coulson_Zhao的博客 446

(一)PyBullet机器人仿真入门:从环境搭建到实例解析

本文详细介绍了PyBullet机器人仿真平台从零开始的完整入门指南。内容涵盖环境搭建、官方示例解析、核心操作(连接、世界与模型)、关节控制与状态读取,以及碰撞检测、传感器模拟等高级功能,帮助读者快速掌握这一强大的机器人仿真工具。

weixin_29062865的博客 1364

Opencv2.4学习::彩色直方图均衡化

  #include&lt;opencv2/opencv.hpp&gt; #include&lt;iostream&gt; using namespace std; using namespace cv; int main() { Mat srcImage = imread("F:\\opencv_re_learn\\2.jpg"); if (!srcImage.data){ cou...

dieju8330的博客 1493

CTransformers: 高效的Python语言模型绑定库

CTransformers是一个为C/C++实现的Transformer模型提供Python绑定的开源库。它基于GGML库构建,旨在为开发者提供一种高效且易用的方式来在Python中使用各种流行的语言模型。支持多种流行的语言模型,如GPT-2、LLaMA、Falcon等提供统一的简单API接口支持GPU加速(CUDA和Metal)与Hugging Face Transformers和LangChain集成支持流式输出和嵌入计算。

helloaiworld的博客 1267

超详细YOLOv8目标检测全程概述:环境、训练、验证与预测详解

这篇博文提供了一个关于使用YOLOv8进行目标检测的全面指南,包括环境搭建、模型训练、验证和预测的详细步骤,以及如何解释训练过程中生成的各种图表和数据。整篇文章为读者提供了一个关于如何利用YOLOv8进行目标检测的实践指南,从环境搭建到模型部署,再到结果分析,每一部分都给出了详细的步骤和解释。此外,还有对于模型输出的解释,帮助读者更好地理解和使用YOLOv8模型。

CDBmax的博客 10万+

(34)Air Band OpenCV2.4.13_直方图均衡化

本文是对OpenCV2.4.13文档的部分翻译,作个人学习之用,并不完整。 图像直方图:图像灰度梯度的几何化表示,表现了每种灰度的像素数量。 直方图均衡化:将灰度范围延伸来改善图像的对比度。 原理: 均衡化表示将给定直方图的分布映射到另一个灰度更广更均匀的分布上,灰度值就会在整张图像上分散。 为了获得均衡化效果,重映射应该用概率分布函数(cdf),对于直方图H(i

raquelle的记忆宫殿 259

把 ABAP SQL 窗口函数讲透:从 OVER 到 LEAD、RANK 与累计分析

ABAP SQL窗口函数在不丢失明细记录的前提下,为每行数据提供组内统计和排名功能。它通过OVER子句定义计算窗口,支持三类函数:聚合型(AVG/SUM等)、排名型(ROW_NUMBER/RANK等)和取值型(LEAD/LAG)。相比GROUP BY会合并多行数据,窗口函数保留原始记录同时附加计算结果,特别适合需要保留明细又要展示统计信息的业务场景,如销售排名、客户分层分析等。语法核心是OVER子句,通过PARTITION BY分组,ORDER BY排序,可灵活定义计算范围。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1272

OpenCV2.4.4中利用直方图均衡化增强图像对比度(Mat结构实现)

原文  http://blog.csdn.net/masikkk/article/details/8952068        直方图就是对数据进行统计,将统计值组织到一系列事先定义好的 bin( 直方图中的柱子 ) 中。 bin 中的数值是从数据中计算出的特征的统计量,这些数据可以是诸如梯度、方向、色彩或任何其他特征。无论如何,直方图获得的是数据分布的统计图。 灰度图像的直方

u014430651的博客 892

YOLO26 终极蒸馏指南:从入门到 SOTA (The Ultimate Distillation Guide)

《YOLO26 蒸馏技术指南》深入解析了知识蒸馏在目标检测中的应用,提出五大蒸馏范式:响应蒸馏(学习最终输出)、特征蒸馏(模仿中间特征)、关系蒸馏(捕捉通道关联)、CWD(通道语义对齐)和FGD(前景背景分离)。实验表明,"Response KD + CWD + FGD"组合效果最佳,使YOLO26n在0.5ms推理速度下达到0.956 mAP50,甚至超越教师模型。指南提供模块化代码实现和超参数调优建议,强调蒸馏能平衡模型精度与效率,是轻量化部署的有效方案。

weixin_51988935的博客 717

yolov26改进 | 融合改进篇 | 基于 MobileNetV4 和双向特征金字塔网络BiFPN的融合改进(全网独家首发)

本文介绍BiFPN与MobileNetV4融合改进的YOLOv26。许多模块单独使用能够涨点,但直接叠加后可能因功能重复、通道不匹配、尺度冲突而掉点,因此融合前必须理解各模块作用。MobileNetV4利用UIB与Mobile MQA构建轻量主干,提升特征提取能力;BiFPN通过可学习权重完成双向多尺度融合,强化大、中、小目标的信息交互。两者优化Backbone与Neck,功能互补、结构冲突较少。本文提供代码、配置、消融对比及Codex修改思路,MobileNetV4也可替换其他主干,便于组合实验与二次创新

Snu77的博客 239

Opencv2.4学习::亮度平衡--直方图均衡化

算法看起来比较复杂,但是由于opencv已经有内置实现代码,因此调用代码比较简单:   #include&lt;opencv2/opencv.hpp&gt; #include&lt;iostream&gt; using namespace std; using namespace cv; int main() { Mat srcImage = imread("F:\\opencv_r...

dieju8330的博客 6169

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Qt 5.3 下OpenCV 2.4.11 开发(9)直方图均衡化

接着上面的章节,我们在Histogram1D 类中加入一个新方法,即直方图均衡化的方法,现在贴出完整的代码,Histogram1D 类 头文件如下: #ifndef HISTOGRAM1D_H #define HISTOGRAM1D_H #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgu...

BusyMonkey 2355

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VS2017+opencv2.4.13+对文件夹中的所有图像批量读入,处理(直方图均衡化),保存到指定文件夹

要求:对文件夹中的所有图像批量读入,处理(进行直方图均衡化),保存到指定文件夹所有图像保存在文件夹C:\Users\HanShuo\Desktop\人脸\yale排好的  中,要求批量进行直方图均衡处理,然后输出到文件夹C:\Users\HanShuo\Desktop\人脸\直方图均衡图像 具体操作如下:一,利用cmd生产包含文件夹下所有图像名称的txt文档1.在C:\Users\HanShuo\...

weixin_40321858的博客 2150

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

OpenCV人脸检测(完整源码+思路)

OpenCV人脸检测(完整源码+思路)

IT1995的博客 7万+
上一篇: 4.1 直方图绘制
下一篇: 4.3 直方图匹配(规定化)
Four o'clock
博客等级 码龄8年 305粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值