直方图统计增强方法

直方图统计增强方法的原理:

  直方图统计增强是一种基于像素值分布的图像增强技术,通过调整像素值的分布来增强图像的对比度和细节。其原理是根据图像的直方图信息,将原始像素值映射到一个新的像素值域,从而改变图像的亮度和对比度。
直方图统计增强方法的意义:

  这种方法的目的是改善图像的视觉效果,使得图像中的细节更加清晰可见,从而提高图像在视觉上的识别和分析能力。通过将图像的像素值重新分布,使得图像的动态范围更好地覆盖了整个像素值域,凸显了图像中的细节,增强了图像的信息内容。
适用场景:

  直方图统计增强方法在以下场景中特别适用:

  1. 低对比度图像: 当图像的亮度范围分布不均匀,即图像的对比度较低时,直方图统计增强可以使得图像的像素值分布更加均匀,增强图像的对比度。
  2. 局部对比度调整: 有时候图像的一部分区域可能亮度较低,另一部分区域亮度较高。直方图统计增强可以通过针对不同区域使用不同的增强参数,实现局部对比度的调整。
  3. 图像细节增强: 当图像中的细节由于亮度过低或过高而不易分辨时,直方图统计增强可以突出这些细节,使得它们更加清晰可见。

公式:

  直方图统计增强的基本公式如下:

  给定一个原始图像 I ( x , y ) I(x, y) I(x,y),其像素值为 i i i,进行直方图统计增强后的图像为 I enhanced ( x , y ) I_{\text{enhanced}}(x, y) Ienhanced(x,y),其像素值为 i ′ i' i′。增强函数可以表示为:
i ′ = T ( i ) = round ( c ⋅ i ) i' = T(i) = \text{round}(c \cdot i) i′=T(i)=round(c⋅i)

  其中, c c c是增强常数,可以通过调整来控制增强的强度。一般情况下, c > 1 c > 1 c>1 用于增强亮度, c < 1 c < 1 c<1用于降低亮度。函数 ( \text{round} ) 将结果四舍五入到最接近的整数,确保结果在合法的像素值范围内。

  另外,为了避免像素值越界,通常还会使用截断操作将增强后的像素值 ( i' ) 限制在图像像素值域的合法范围内(通常是 0, 255):
i ′ = { 0 if c ⋅ i < 0 255 if c ⋅ i > 255 round ( c ⋅ i ) otherwise i' = \begin{cases} 0 & \text{if } c \cdot i < 0 \\ 255 & \text{if } c \cdot i > 255 \\ \text{round}(c \cdot i) & \text{otherwise} \end{cases} i′=⎩ ⎨ ⎧0255round(c⋅i)if c⋅i<0if c⋅i>255otherwise

  这样,直方图统计增强就可以通过调整增强常数 c c c 来改变图像的亮度和对比度,从而实现图像的增强,代码如下所示:

bash 复制代码
import cv2
import matplotlib.pyplot as plt
import numpy as np


def enhanceHistStat(image, const):
    enhanced_image = np.clip(image * const, 0, 255).astype(np.uint8)
    return enhanced_image

def enhance_Histstat(image):
    # 读取图像
    image = cv2.imread(image, flags=0)

    if image is None:
        print('Unable to load input_image!')
        return
    else:

        # 计算比例因子
        maxImg = image.max()
        maxROI = image[12:120, 12:120].max()
        const = maxImg / maxROI

        # 调用增强函数
        image_HSE = enhanceHistStat(image, const)
        image_Equ=cv2.equalizeHist(image)

        plt.figure(figsize=(10,6))

        plt.subplot(131),plt.title("Original image"),plt.axis('off')
        plt.imshow(image,cmap='gray',vmin=0,vmax=255)

        plt.subplot(132),plt.title("Global equalize histogram"),plt.axis('off')
        plt.imshow(image_Equ,cmap='gray',vmin=0,vmax=255)

        plt.subplot(133),plt.title("Histogram statistic enhance"),plt.axis('off')
        plt.imshow(image_HSE,cmap='gray',vmin=0,vmax=255)

        plt.show()

imgfile1='./Images/cat.jpg'
enhance_Histstat(imgfile1)
相关推荐
做萤石二次开发的哈哈5 分钟前
视频解码器怎么对接?解码上墙、电视墙开窗与场景切换的ISAPI接入实战
人工智能·物联网·监控·视频编解码·大屏端·萤石开放平台·蓝海aiot一站式工作台
Leo.yuan10 分钟前
2026年本地化Data Agent优质厂商盘点:哪些产品更适合企业生产环境
大数据·数据库·人工智能
长谷深风11124 分钟前
Tool与Skill:AI能力设计的分水岭
java·人工智能·ai·大模型·aiagent
科技观察哨25 分钟前
六足平台选型与纳米定位系统集成:HEB-640六自由度位移台在半导体光刻对准中的参数边界与国产替代评估
前端·人工智能
云上先途32 分钟前
任务智能体可以自动完成哪些类型工作,是不是只能做简单重复操作?
大数据·人工智能
明志数科39 分钟前
具身智能数据供给的分层:分布式采集与入厂采集的工程边界分析
人工智能·机器学习·机器人
像风一样自由202040 分钟前
41.用FastAPI搭建一个RAG后端需要哪些接口
人工智能·大模型·fastapi·rag·智能体
小蒋观天下43 分钟前
两轮车检测AI摄像头——2026行业竞争格局、商业模式与核心痛点
大数据·人工智能·安全·计算机视觉·ai大模型
RisunJan1 小时前
【这就是AI】AI每日资讯简报 - 2026-09-28(周一)
大数据·人工智能
也非非也1 小时前
DeepSeek没发公告,但它把Agent装进了你的电脑
人工智能·开源·agent·deepseek·dsh