基于python的图像亮度自适应调整(根据输入影像的亮度调整输出) 您所在的位置:网站首页 亮度调大点 基于python的图像亮度自适应调整(根据输入影像的亮度调整输出)

基于python的图像亮度自适应调整(根据输入影像的亮度调整输出)

2023-09-01 20:58| 来源: 网络整理| 查看: 265

文章结构

文章主要目的是分享一种自动调节图像亮度的方法,在这篇文章内,你能了解到以下内容:

图像的灰度直方图 图像的亮度调整

1.图像的直方图

一张图像一般由RGB三个通道(红色、绿色、蓝色三个部分)组成。单独对某个通道而言,把一幅图像中每一个像素出现的次数都统计出来,然后把每一个像素出现的次数除以总的像素个数,得到的就是这个像素出现的频率,然后再把该像素出现的频率用图表示出来,就构成了灰度直方图。

图像直方图由于其计算代价较小,且具有图像平移、旋转、缩放不变性等众多优点,广泛地应用于图像处理的各个领域,特别是灰度图像的阈值分割、基于颜色的图像检索以及图像分类。本文所述的图像亮度自适应调整方法就依赖于图像直方图的概念。

用等会儿我们即将做亮度自适应增强的例子展示直方图效果: 在这里插入图片描述 在这里插入图片描述 注:上述影像并非存黑色,为了展示,找了一张亮度较低的卫星影像做实例。直方图中的红绿蓝色线条分别代表rgb三个通道的灰度直方图。

2.图像亮度自适应调整

可以看到,三个通道的像素值大多分布在0到20之间,所以图像呈现极暗。图像的亮度也是与像素值挂钩,像素值越大,则一般而言,影像会越亮,那是不是对每个像素值加一定值就可以调整亮度呢?

答案是否定的,若直接将像素值加上200,则结果图像会变白,但是地物依然无法识别,这是因为像素值之间的差别很小,可能像素值5代表的是灰色的屋顶,6代表的是绿色的草地,但是在像素值变大后变为205与206,看起来都是白色,所以无法展示实际影像。

上述的是影像的亮度调整,所以还需要影像的对比度调整。

影像的对比度指的是间隔,在调大像素值的同时增加像素值之间的间隔,则会得到较好的结果。

先展示自适应调整后的结果:

在这里插入图片描述

import numpy as np import cv2 def compute(img, min_percentile, max_percentile): """计算分位点,目的是去掉图1的直方图两头的异常情况""" max_percentile_pixel = np.percentile(img, max_percentile) min_percentile_pixel = np.percentile(img, min_percentile) return max_percentile_pixel, min_percentile_pixel def aug(src): """图像亮度增强""" if get_lightness(src)>130: print("图片亮度足够,不做增强") # 先计算分位点,去掉像素值中少数异常值,这个分位点可以自己配置。 # 比如1中直方图的红色在0到255上都有值,但是实际上像素值主要在0到20内。 max_percentile_pixel, min_percentile_pixel = compute(src, 1, 99) # 去掉分位值区间之外的值 src[src>=max_percentile_pixel] = max_percentile_pixel src[src


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有