Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >白平衡——图像处理中的一种增强技术

白平衡——图像处理中的一种增强技术

作者头像
小白学视觉
发布于 2022-02-09 04:51:38
发布于 2022-02-09 04:51:38
46300
代码可运行
举报
运行总次数:0
代码可运行

俗话说,一张图胜过千言万语。但是,如果它传达的内容与我们想看的内容不符怎么办?我们确定它应该来自那个图像,但不幸的是它不是很明显。如果说,有可能从一幅图像中发现我们想要了解的背景,并且很可能在这一过程中获得一些额外的见解,那会怎么样?

这就是我们今天要讨论的——图像增强!

图像增强由一组用于细化图像的技术组成。通过这种方式,图像在视觉上更容易被人类感知,这反过来将进一步促进改进的图像处理分析。图像增强处理技术包括:

  1. 傅里叶变换
  2. 白平衡
  3. 直方图处理

对于这篇文章,讨论将围绕python中用于图像增强的各种白平衡算法的使用展开。但在此之前,让我们记录下基本库。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np 
import matplotlib.pyplot as plt 
from skimage.io import imread, imshow

白平衡

首先,什么是白平衡(WB)?这是一个消除不切实际的色偏的色彩校正过程,以便在我们想要的图像中正确呈现白色的物体。我们将实施三种白平衡技术,它们是:

  1. 白色补丁算法
  2. 灰度世界算法
  3. 地面真值算法

为了便于说明,我们将使用下图:

白色补丁算法

这种方法是一种典型的颜色恒定性适应方法,它搜索最亮的色块以用作白色参考,类似于人类视觉系统的做法。请注意,要在图像中观察到白色,RGB 颜色空间中的每个通道都应处于最大值。

Python中的代码实现:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def white_patch(image, percentile=100):
    """
    White balance image using White patch algorithm
    Parameters
    ----------
    image : numpy array
            Image to white balance
    percentile : integer, optional
                  Percentile value to consider as channel maximum
    Returns
    -------
    image_wb : numpy array
               White-balanced image
    """
    white_patch_image = img_as_ubyte((image*1.0 / 
                                   np.percentile(image,percentile,
                                   axis=(0, 1))).clip(0, 1))
    return white_patch_image
#call the function to implement white patch algorithm
skio.imshow(white_patch(lily, 85))

使用白色补丁算法增强百合

正如所观察到的,可以看到图像变得相对更亮,中间的百合花变得非常鲜艳,这就是白色补丁算法如何增强图像的方式。接下来,让我们看看下一个算法

灰度世界算法

灰度世界算法是一种白平衡方法,它假设图像平均为中性灰色。如果图像中的颜色分布良好,则灰度世界假设成立。考虑到这个假设为真,平均反射颜色被假设为光的颜色。因此,我们可以通过查看平均颜色并将其与灰色进行比较来估计照明色偏。

Python中的代码实现:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def gray_world(image):
    """
    White balance image using Gray-world algorithm
    Parameters
    ----------
    image : numpy array
            Image to white balance
    
    Returns
    -------
    image_wb : numpy array   
               White-balanced image
    """
    image_grayworld = ((image * (access.mean() / 
                      image.mean(axis=(0,1)))).
                      clip(0,255).astype(int))
    # for images having a transparency channel
    
    if image.shape[2] == 4:
    image_grayworld[:,:,3] = 255
    return image_grayworld
#call the function to implement gray world algorithm
skio.imshow(gray_world(lily))

使用灰度世界算法增强百合

如图,可以看出它与原始图像并没有太大的偏差,其原因之一可能是平均颜色及其与灰色的比较并不那么显著,然后让我们看看最后一个算法。

地面真值算法

到目前为止,我们已经对颜色空间在图像上的表现做了假设。现在,我们将选择一个补丁(图像的一部分)并使用该补丁重新创建我们想要的图像,而不是对增强图像做出假设。

为该图像选择的补丁程序如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from matplotlib.patches import Rectangle
fig, ax = plt.subplots()
ax.imshow(lily)
ax.add_patch(Rectangle((650, 550), 100, 100, edgecolor='b', facecolor='none'));

补丁(包含在蓝色边框中)

补丁的放大图像

选择补丁后,我们现在将继续增强我们的图像。为此,我们可以采用两种方式:

  1. 最大值方法— 将原始图像的每个通道归一化为该区域每个通道的最大值
  2. 平均值在方法— 将原始图像的每个通道归一化为该区域每个通道的平均值

Python中的代码实现:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def ground_truth(image, patch, mode='mean'):   
   """
   White balance image using Ground-truth algorithm
   Parameters
   ----------
   image : numpy array
           Image to white balancr
   patch : numpy array
           Patch of "true" white
   mode : mean or max, optional
          Adjust mean or max of each channel to match patch
  
   Returns
   -------
   
   image_wb : numpy array
              White-balanced image
   """
   image_patch = img_patch
   if mode == 'mean':
       image_gt = ((image * (image_patch.mean() / \
                   image.mean(axis=(0, 1))))\
                   .clip(0, 255)\
                   .astype(int))
   if mode == 'max':
       image_gt = ((image * 1.0 / image_patch.max(axis
                    (0,1))).clip(0, 1))
   #transparency channel
   if image.shape[2] == 4:
       image_gt[:,:,3] = 255
return image_gt

让我们看看两种模式的输出。

使用最大值方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
skio.imshow(ground_truth(lily, img_patch, 'max'))

使用地面真值算法增强图像(最大值模式)

除了生动地强调百合之外,还可以观察到花朵周围的浮叶也得到了增强,绿色通道被极大地突出显示。让我们看看这与使用均值作为模式有何不同。

使用平均值方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
skio.imshow(ground_truth(lily, img_patch, 'mean'))

使用地面真值算法增强图像(平均值模式)

输出稍微接近白色补丁输出,但后者更亮。它还强调了百合花的颜色,但它没有突出浮叶的颜色,只是提亮了它。

对于地面真值算法,输出图像很大程度上取决于补丁图像的选择。因此,通过可视化我们想要获得什么样的增强图像来明智地选择补丁。

我们现在可以使用 3 种不同的方法来增强图像。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白学视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
数字图像处理及图像增强
将像素值变小,图像亮度减小,色彩变暗;像素值增大,图像亮度增大,色彩变亮。 代码如下:
嵌入式视觉
2022/09/05
5600
数字图像处理及图像增强
【阅读笔记】一种暗通道优先的快速自动白平衡算法
自动白平衡算法中存在白色区域检测错误导致白平衡失效的问题,作者提出了一种基于暗通道优先的白平衡算法。
AomanHao
2024/08/07
880
【阅读笔记】一种暗通道优先的快速自动白平衡算法
基于FPGA的自动白平衡算法的实现(附代码)
对于白平衡基本概念的详细介绍请查看文章《白平衡初探》,白平衡算法主要的作用是将偏暖或者偏冷的色调自动恢复到正常色调,是图像看起来更加色彩饱满正常。
FPGA技术江湖
2021/04/07
2K0
基于FPGA的自动白平衡算法的实现(附代码)
白平衡初探
1 什么叫白平衡 什么是白平衡呢?白平衡的英文为White Balance,其基本概念是“不管在任何光源下,都能将白色物体还原为白色”,对在特定光源下拍摄时出现的偏色现象,通过加强对应的补色来进行补偿
FPGA开源工作室
2020/07/22
1.4K0
白平衡初探
Python 图像处理简介——色彩阴影调整
图像增强是对于任何图像处理的一个重要步骤,我们将在日常工作中使用的大多数图像很可能不是在特别理想的环境中拍摄的。过度曝光、曝光不足和彩色阴影等问题在现实生活数据中很常见。因此,了解如何处理此类问题会很有用。 在这篇文章中,我们将讨论如何处理彩色阴影图像。
小白学视觉
2022/02/14
4680
Python 图像处理简介——色彩阴影调整
Python 图像处理实用指南:1~5
顾名思义,图像处理可以简单地定义为在计算机中(通过代码)使用算法对图像进行处理(分析和操作)。它有几个不同的方面,如图像的存储、表示、信息提取、操作、增强、恢复和解释。在本章中,我们将对图像处理的所有这些不同方面进行基本介绍,并介绍使用 Python 库进行的实际图像处理。本书中的所有代码示例都将使用 Python 3。
ApacheCN_飞龙
2023/04/27
5.4K0
Python 图像处理实用指南:1~5
3A之自动白平衡(AWB)篇
人眼视觉系统具有颜色恒常性的特点,对物体的观察不受光源的影响。本质上是白色的物体,在不同色温,反射光线颜色不同的场景下,经过人眼的视觉系统矫正后还是白色;而对于Camera来说,不同色温,反射光线颜色不同,直接成像会有偏色现象发生。如下图所示,可以看到阴影区域的白色部分偏蓝:
雪月清
2020/08/18
4.1K0
图像增强综述
作者:方阳, 转载请注明地址。 文件和代码可以在Github下载, markdown推荐用typora打开。 这篇文章是DIP的第二次作业,对图像增强技术进行综述,目录如下:
努力努力再努力F
2019/04/29
1.6K0
图像增强综述
[Python图像处理] 十四.基于OpenCV和像素处理的图像灰度化处理
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~
Eastmount
2022/11/25
2.7K0
[Python图像处理] 一.图像处理基础知识及OpenCV入门函数
数字图像处理(Digital Image Processing)又称为计算机图像处理(Computer Image Processing),旨在将图像信号转换成数字信号并利用计算机对其进行处理的过程。其运用领域如下图所示,涉及通信、生物医学、物理化学、经济等。
Eastmount
2021/12/02
2.1K0
[Python图像处理] 一.图像处理基础知识及OpenCV入门函数
色彩平衡与融合用于水下图像增强
最近出于学习的需要,阅读了关于水下图像增强的论文《Color Balance and Fusion for Underwater Image Enhancement》,并且尝试着按照论文中所介绍的步骤使用matlab来实现,由于本人对图像处理初次接触,感觉做出来的效果一般,本文对论文提及的步骤进行简略介绍,代码是按照论文步骤写的,并不十分完善,此论文主要用于学习交流,欢迎大家阅读分享并提出宝贵意见。
巴山学长
2020/03/25
1.4K0
机器学习-09-图像处理02-PIL+numpy+OpenCV实践
开源地理空间基金会中文分会 Pillow (PIL Fork) 10.0.1 文档
用户2225445
2024/04/14
5410
机器学习-09-图像处理02-PIL+numpy+OpenCV实践
【OpenCV】入门教学/了解图像处理的基本原理
本文是基于哔哩哔哩OpenCV入门课程的内容加上我个人的理解而来。 本篇文章的主要内容: 阅读本篇文章,你需要具备python的基本语法的学习。如果你并没有学习过python,可以去看我的python专栏:python
Yui_
2025/02/03
1930
【OpenCV】入门教学/了解图像处理的基本原理
[Python图像处理] 十五.图像的灰度线性变换
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~
Eastmount
2023/02/28
1.1K0
[Python图像处理] 十五.图像的灰度线性变换
[Python图像处理] 十七.图像锐化与边缘检测之Roberts、Prewitt、Sobel和Laplacian算子
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~
Eastmount
2023/02/28
2.6K0
[Python图像处理] 十七.图像锐化与边缘检测之Roberts、Prewitt、Sobel和Laplacian算子
万字长文告诉新手如何学习Python图像处理(上篇完结 四十四) | 「Python」有奖征文
期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~
全栈程序员站长
2022/11/04
2.1K0
万字长文告诉新手如何学习Python图像处理(上篇完结 四十四) | 「Python」有奖征文
用于图像处理的Python顶级库 !!
正如IDC所指出的,数字信息将飙升至175ZB,而这些信息中的巨大一部分是图片。数据科学家需要(预先)测量这些图像,然后再将它们放入人工智能和深度学习模型中。在愉快的部分开始之前,他们需要做重要的工作。
JOYCE_Leo16
2024/03/19
2000
用于图像处理的Python顶级库 !!
[Python图像处理] 四.图像平滑之均值滤波、方框滤波、高斯滤波、中值滤波及双边滤波
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类、目标检测应用。
Eastmount
2021/12/02
6.8K0
[Python图像处理] 四.图像平滑之均值滤波、方框滤波、高斯滤波、中值滤波及双边滤波
【图像篇】OpenCV图像处理(五)---图像的色彩空间
我们大家未来的命运如何,将会遭遇到什么,现在谁也难以预料,所能把握的,唯此心而已。
用户5410712
2022/06/01
7680
【图像篇】OpenCV图像处理(五)---图像的色彩空间
Imgaug之导入和增强图像
在机器视觉领域,想将深度学习应用于实际工程项目,并最终落地,会遇到很多问题:光照、遮挡等。而采集到的数据通常难以满足各种现实环境,需要进行数据增强操作。 imgaug是一个基于OpenCV的更高级的API,包含很多集成好的图像增强的方法。
狼啸风云
2021/03/16
2K0
Imgaug之导入和增强图像
推荐阅读
相关推荐
数字图像处理及图像增强
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文