CEM和BBHE

article/2025/11/7 12:20:14

逆光图像处理

  • CEM
  • BBHE
  • 代码
    • CEM
    • BBHE

今天又了解到了两种对亮度处理的方法。分别是CEM和BBHE。
参考: CEM_matlab. BBHE_matlab. BBHE_C++.

CEM

单纯的CEM公式比较简单,原理和公式如下
在这里插入图片描述
根据网上一个matlab程序复写了一遍python的,灰度图是有效果的。彩色图片下我一开始用HSV空间中拿出V分量,会产生色差。
对rgb图像就对三个通道都进行了cem模型,效果还可以。
但是注意到他的作用是提升亮度,即使本来很亮的位置他仍然在提升亮度
效果如下,右面时处理之后的效果。
在这里插入图片描述

BBHE

简单来说就是进行两次直方图均衡算法。将图片灰度均值作为分开的标准。
灰度直方图均衡的步骤比较简单:
1.统计所有出现的灰度值的次数
2.将次数归一化,得到归一化直方图
3.计算累计直方图
4.将累计直方图进行区间转换
而BBHE就是先根据灰度均值分割成两部分来计算。第一部分计算(0,mean_gray)的归一化直方图,第二部分计算(mean_gray,255)的归一化直方图。和直接计算的区别就在于分母不同。直接计算分母是所有像素个数,而BBHE是属于(0,mean_gray)或(mean_gray,255)的像素个数。分子都是某像素(如0,1,2…)出现的个数。
也就是说第一个累计直方图在像素值为mean_gray出就已经为1了并且之后也都为1。第二个累计直方图,在像素值小于mean_gray时全部为mean_gray对应的值,直到最后为1。
而均衡化体现在最后一步的区间转换上。也就是说。比如原图片像素是一堆聚集在1到10之间的数,求出每个数出现的频率,并进行了累计。然后再扩展到1~255的范围时只需要将累计的结果直接乘255就可以了。

灰度直方图原来是个这么奇妙的东西啊。比如10,20,30,40,50每个出现了一次。那么频率就都是1/5。累加直方图就可以通过区间转换把频率和数值联系起来。累计直方图为1/5,2/5,3/5,4/5,5/5。区间转换公式就是:结果 = 最小值 + 累计直方图的值 ×(最大值 - 最小值)

我之前一直以为直方图均衡化只是将小范围的数值投影到大范围,但是现在看起来并不是这样。使得,肯定不是这样,我以前太想当然了。

代码

在网上找到了matlab和c的,我就简单的改成了python的,希望能帮助到大家。

CEM

def cem(img, lamb=1.33):# 求取灰度均值height, width = img.shapeall = height * widthgray_mean = np.sum(img) / all# 图像优化fcem = np.exp(-(lamb * img / gray_mean))I = (1 - fcem) / (1 + fcem)return I

是的,你没有看错就是这么简单,因为python中有广播机制,所以不用那么麻烦的把遍历写出来了。我还把rgb三个通道分别用着试了一下,理论上是不可以这样的,但是效果还是挺好的。

BBHE

import cv2
import numpy as npdef bbhe(img):""":param img: 从实现来看仍然是灰度图:return: 返回修改后的图像"""# xm = np.exp(9)xmin = np.min(img)xmax = np.max(img)img_result = np.zeros_like(img)# 平均灰度值xm = np.mean(img)sl = np.zeros((256, 1))     # 图像分成l 和 u两部分su = np.zeros((256, 1))pl = np.zeros((256, 1))pu = np.zeros((256, 1))hist_cl = np.zeros((256, 1))hist_cu = np.zeros((256, 1))nl = 0nu = 0# 统计图像中的像素并进行归类for i in range(img.shape[0]):for j in range(img.shape[1]):if img[i, j] < xm:sl[img[i, j]] += 1nl += 1else:su[img[i, j]] += 1nu += 1pl = sl / nlpu = su / nuhist_cl = np.cumsum(pl)hist_cu = np.cumsum(pu)hist_cl = xmin + hist_cl * (xm - xmin)hist_cu = xm + 1 + hist_cu * (xmax - xm -1)for i in range(img.shape[0]):for j in range(img.shape[1]):if img[i, j] <= xm:temp = img[i, j]img_result[i, j] = hist_cl[temp - 1]else:temp = img[i, j]img_result[i, j] = hist_cu[temp - 1]return img_resultdef hsv_bbhe(img):img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)h, s, v = cv2.split(img_hsv)img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)img_gray = bbhe(img_gray).astype(np.uint8)result = cv2.merge((h, s, img_gray))result = cv2.cvtColor(result, cv2.COLOR_HSV2BGR)return result

直接调用最后一个函数就可以啦。转换到hsv空间然后完成工作。因为网上的都是灰度图,所以我对彩色图片就是这么处理的,效果还好,但是颜色还是有点失真。
以上,我要去LOL杀人了,祝大家生活愉快!


http://chatgpt.dhexx.cn/article/QCcTPxIs.shtml

相关文章

模拟生成高斯噪声

之前有做过在图像上加高斯噪声的实验&#xff0c;在模拟生成随机数&#xff0c;以及产生高斯分布噪声时&#xff0c;受到了一些干扰。尤其是和高斯模糊相混淆。对于初学者来说&#xff0c;这些虽然是一些基本的图像处理知识&#xff0c;但是&#xff0c;眼高手低是很要不得的。…

CSS实现高斯模糊效果

用CSS实现高斯模糊效果&#xff1a;filter、backdrop-filter 高斯模糊是一种常见的效果&#xff08;俗称毛玻璃效果&#xff09;&#xff0c;在CSS中使用filter、backdrop-filter属性均可实现 一、filter 这其实是一种“假”模糊&#xff0c;需要一层做背景并使用filter属性达到…

(三)对图像进行Gauss高斯平滑处理

对图像进行Gauss高斯平滑处理 平滑滤波 图像在采集、传输和转换过程中都容易受环境的影响&#xff0c;这在图像中就表现为噪声&#xff0c;这些噪声会致使图像质量降低或者干扰我们提取原本想要的图像信息&#xff0c;所以需要通过滤波技术来去除这些图像中的噪声干扰。 常见…

高斯白噪声(white Gaussian noise,WGN)及matlab演示

原文链接&#xff1a;http://wenku.baidu.com/link?urlmj_wz_9l7PAlURQYi1iOnTnweMxyPvoTWGgoIQdCh2v0Yugt7v_G9QsUkS6Ww-ro2VhJ3L9rsE9kqhqX1V-3TlLNeZdcx_zrLlzZBBIhgqK 文库上看到的一片文章&#xff0c;讲的非常清晰明了&#xff0c;我等渣渣不得不转啊。 本文科普一下高斯…

高斯平滑 高斯模糊 高斯濾波器 ( Gaussian Smoothing, Gaussian Blur, Gaussian Filter ) C++ 實現

http://blog.csdn.net/cay22/article/details/5546636 高斯平滑 高斯模糊 高斯濾波器 ( Gaussian Smoothing, Gaussian Blur, Gaussian Filter ) C 實現 在之前提到過了均值濾波器, 就是說某像素的顏色, 由以其為中心的九宮格的像素平均值來決定. 在這個基礎上又發展成了帶權的…

高斯玻色采样enhance量子近似优化算法

上篇博文&#xff0c;我们已经接触了QAOA量子近似优化算法&#xff0c;我们已经知道近似优化算法一般用于求解组合优化问题。这里我们再说明一下什么是组合优化问题&#xff1a; 给定一个数据集 X &#xff5b; x 1 , x 2 , . . . x N &#xff5d; X&#xff5b;{x_{1},x_{2…

matlab 绘制高斯(Gaussan)函数图像

高斯函数如下&#xff1a; G a u s s a n 1 2 π σ e − ( x − μ ) 2 2 σ 2 Gaussan \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}} Gaussan2π ​σ1​e−2σ2(x−μ)2​ 使用 MATLAB 编写高斯函数&#xff0c;需传入 x , μ , σ x,\mu,\sigma x,μ,…

高斯平滑滤波器(Gaussian Smoothing Filter)

一、图像滤波的基本概念 图像常常被强度随机信号&#xff08;也称为噪声&#xff09;所污染。一些常见的噪声有椒盐&#xff08;Salt & Pepper&#xff09;噪声、脉冲噪声、高斯噪声等。椒盐噪声含有随机出现的黑白强度值&#xff0e;而脉冲噪声则只含有随机的白强度值&am…

高斯滤波(Gauss filtering)

1.概念介绍 高斯滤波是一种线性平滑滤波&#xff0c;适用于消除高斯噪声&#xff0c;广泛应用于图像处理的减噪过程。  通俗的讲&#xff0c;高斯滤波就是对整幅图像进行加权平均的过程&#xff0c;每一个像素点的值&#xff0c;都由其本身和邻域内的其他像素值经过加权平均后…

Matlab_用高斯赛德尔(Gaoss-Seidel)迭代法解线性方程组

1.程序代码 function xGauss(A,b,x0,ep,N) %用途&#xff1a;用高斯迭代法解线性方程组Axb %A为系数矩阵&#xff0c;b为右端向量&#xff0c;x0为初始向量&#xff08;默认零向量&#xff09; %ep为精度&#xff08;1e-6&#xff09;&#xff0c;N为最大迭代次数&#xff…

gaussian_filter( )函数(高斯滤波)

对一个数进行高斯滤波&#xff08;模糊&#xff09;可以理解成将该数取附近矩形窗口所有值的加权平均值&#xff0c;距离处理数越近的点权重越大&#xff0c;距离处理点越远的点权重越小。因此如果取的矩形窗口越大&#xff0c;那么对处理点的模糊效果越强烈。 上图&#xff0c…

Gauss-Seidel迭代法的C++实现

高斯赛德尔迭代法大家可以从网站上找到相关的公式推导&#xff0c;这里给出它的C算法实现和运行的结果。 #include<iostream> #include<math.h> using namespace std;int n; //定义全局变量 double a[100…

高斯平滑

&#xfeff;&#xfeff; 高斯平滑 Common Names: Gaussian smoothing 简述&#xff1a; 高斯平滑操作是一种2-D的卷积操作&#xff0c;应用于模糊图像中&#xff0c;去除细节和噪声。从这个意思上说&#xff0c;它类似于均值滤波器&#xff0c;但是使用的是不同的内核&#…

高斯平滑 高斯模糊 高斯滤波器 ( Gaussian Smoothing, Gaussian Blur, Gaussian Filter ) C++ 实现

发展到现在这个平滑算法的时候, 我已经完全不知道如何去命名这篇文章了, 只好罗列出一些关键字来方便搜索了. 在之前我们提到过了均值滤波器, 就是说某像素的颜色, 由以其为中心的九宫格的像素平均值来决定. 在这个基础上又发展成了带权的平均滤波器, 这里的高斯平滑或者说滤波…

Gaussian Smoothing(高斯平滑)

高斯平滑操作是一个二维卷积操作&#xff0c;用于**“模糊”**图像&#xff0c;去除细节和噪音。它类似于均值滤波器(假如3X3&#xff0c;则全部相加取均值&#xff0c;即成为中间点的像素值)&#xff0c;但它使用不同的核表示高斯驼峰的形状。 二维高斯公式 平均值(0&#xf…

高斯-赛戴尔(Gauss-Seidel)迭代法及算法实现

1、高斯-赛戴尔迭代法的定义以及表达形式 以下列方程组为例&#xff1a; 在雅克比迭代法中&#xff0c;并没有对新算出的分量进行充分利用&#xff0c;一般来说&#xff0c;这些新算出计算的结果要比上一步计算的结果精确。 对上式第二个方程组&#xff0c;第一行式子算出的x值…

常用技术指标之一文读懂RSI指标

什么是RSI指标&#xff1f; RSI (Relative Strength Index) 中文名又叫相对强弱指标&#xff0c;由韦尔斯.怀尔德(Welles Wilder)首创&#xff0c;发表在他的《技术交易系统新思路》一书中&#xff08;1978年版&#xff09; RSI指标基本原理&#xff1a; 通过测量一段时间间内…

量化投资常用技能——指标篇3:详解RSI指标,及其代码实现和绘图

量化投资常用技能 系列文章目录 我们已经介绍了三篇关于量化投资方面绘图的文章和两篇指标类的推导和介绍的文章&#xff0c;大家有兴趣可以了解一下 绘图篇 量化投资常用技能——绘图篇 1&#xff1a;绘制股票收盘价格曲线和ochl烛状图量化投资常用技能——绘图篇 2&#xf…

缠论指标(全网最精准)

支持平台 01 通达信(电脑手机&#xff09; 通达信版本简介 02 01 基础版功能&#xff1a; 支持缠论自动分笔&#xff0c;自动线段&#xff0c;显示笔中枢&#xff08;蓝色&#xff09;&#xff0c;线段中枢&#xff08;橙色&#xff09;&#xff0c;支持笔段中枢混合显示…

使用bind搭建权威DNS、智能DNS

DNS的解析过程&#xff1a;&#xff08;以www.qq.com为例说明&#xff09; 1、在浏览器中输入www.qq.com域名&#xff0c;操作系统会先检查自己本地的hosts文件是否有这个网址映射关系&#xff0c;如果有&#xff0c;就先调用这个IP地址映射&#xff0c;完成域名解析。 2、如…