改变灰度图像直方图的均值和标准差

当我们有一张较暗淡的图像,我们想让图像变明亮;或者反过来,如果图像严重曝光,我们想让图像变暗。这时,我们可以采用什么方法呢?我们可以直接对图像的直方图进行操作,改变灰度图像直方图的均值和标准差。进而实现我们想要的效果。

算法如下式:其中m0和s0表示的是我们想要图像像素分布变成的均值和标准差,m和s是原图像的均值和标准差:

改变图像直方图的均值和标准差公式 ↑


实验:通过上述算法实现对图像直方图的均值和标准差的改变

import cv2
import numpy as np
import matplotlib.pyplot as plt# histogram manipulation
def hist_mani(img, m0=128, s0=52):m = np.mean(img)s = np.std(img)out = img.copy()# normalizeout = s0 / s * (out - m) + m0out = np.clip(out,0,255)out = out.astype(np.uint8)return out# Read image
img = cv2.imread("../head_g.jpg",0).astype(np.float)
out = hist_mani(img,m0=130,s0=60)# Display histogram
plt.hist(out.ravel(), bins=255, rwidth=0.8, range=(0, 255))
plt.savefig("out_his.png")
plt.show()
plt.hist(img.ravel(), bins=255, rwidth=0.8, range=(0, 255))
plt.savefig("out_his_img.png")
plt.show()
# Save result
cv2.imshow("result", out)
cv2.imwrite("out.jpg", out)cv2.waitKey(0)
cv2.destroyAllWindows()

实验结果:

原图像的像素分布 ↑

修改直方图的均值和标准差后图像的像素分布 ↑

原图 ↑

改变直方图均值和标准差之后的图像 ↑

可以看到,原图像是比较暗的,像素集中于靠近0的部分。我们通过增大图像直方图的均值和标准差,使得图像的像素值整体增大,由此增加了图像的亮度。如果你想要减小图像的亮度,则可以考虑采用与此相反的方法。


参考内容:

https://www.cnblogs.com/wojianxin/p/12509911.html

https://www.jianshu.com/p/eae053c19f96

改变灰度图像直方图的均值和标准差相关推荐

  1. OpenCV学习笔记(三)——图像像素(图像的最大(小)值、均值、标准差、比较运算、逻辑运算、图像二值化)

    目录 1 图像像素统计 1.1 图像像素的最大值和最小值 1.2 计算图像的均值和标准差 2 两图像间的像素操作 2.1 比较运算 2.2 逻辑运算 3 图像二值化 1 图像像素统计 数字图像可以用大 ...

  2. R语言plotly可视化:plotly可视化箱图、基于预先计算好的分位数、均值、中位数等统计指标可视化箱图、箱图中添加缺口、可视化均值和标准差(With Precomputed Quartiles)

    R语言plotly可视化:plotly可视化箱图.基于预先计算好的分位数.均值.中位数等统计指标可视化箱图.箱图中添加缺口.可视化均值和标准差(Box Plot With Precomputed Qu ...

  3. R语言使用dplyr包使用group_by函数、summarise函数和mutate函数计算分组下的均值、标准差、样本个数、以及分组均值的95%执行区间对应的下限值和上限值(Calculate CI)

    R语言使用dplyr包使用group_by函数.summarise函数和mutate函数计算分组下的均值.标准差.样本个数.以及分组均值的95%执行区间对应的下限值和上限值(Calculate 95% ...

  4. Python计算医疗数据训练集、测试集的对应的临床特征:训练集(测试集)的阴性和阳性的样本个数、连续变量的均值(标准差)以及训练测试集阳性阴性的p值、离散变量的分类统计、比率、训练测试集阳性阴性的p值

    Python使用pandas和scipy计算医疗数据训练集.测试集的对应的临床特征:训练集(测试集)的阴性和阳性的样本个数.连续变量的均值(标准差࿰

  5. R语言用户自定义函数的语法结构、编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等)、编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据)、应用自定函数

    R语言用户自定义函数的语法结构.编写自定义统计值计算函数(使用ifelse结构计算均值和标准差等).编写自定义日期格式化(format)函数(switch函数使用不同分枝格式化日期数据).应用自定函数 ...

  6. R语言使用psych包的describeBy函数计算不同分组(group)的描述性统计值(样本个数、均值、标准差、中位数、剔除异常均值、最小最大值、数据范围极差、偏度、峰度、均值标准差等)

    R语言使用psych包的describeBy函数计算不同分组(group)的描述性统计值(Summary statistics by group using describe.by() in the  ...

  7. MATLAB的var与std函数 与 均值,方差,标准差,均方差,均分误差

    从定义上来讲,(样本)均值,方差,标准差,均方差,均分误差分别为: 均值: 方差: 标准差: 均方差=标准差 均方误差: matlab中的var函数和std函数用来计算方差 var函数计算使用的公式为 ...

  8. boost::math模块查找正态分布的均值或标准差的示例

    boost::math模块查找正态分布的均值或标准差的示例 实现功能 C++实现代码 实现功能 boost::math模块查找正态分布的均值或标准差的示例 C++实现代码 #include <b ...

  9. java 置信区间_仅从均值和标准差绘制置信区间

    我试图从数据的均值和标准差(std)绘制置信区间 . 这是我写的代码片段: MeanA=1.876; %mean of A STDA=0.018; % std of A MeanB=1.821; ST ...

最新文章

  1. Leangoo看板工具做敏捷故事地图看板示例
  2. OpenGL ES 3.0之Texturing纹理详解(二)
  3. Java WebService 接口的简单生成和调用
  4. 这个神奇的库,可以将数据平滑化并找到异常点
  5. 批处理 设置电脑最佳性能_批处理最佳做法
  6. C#对用户密码使用MD5加密与解密
  7. Unix_03_文件系统介绍_2
  8. SaaS 通识系列 1:云计算是什么
  9. win10批处理改计算机名和ip地址,win10系统修改计算机IP地址的操作方法
  10. c#winform选择文件,文件夹,打开指定目录方法
  11. android studio 找不到reosurce,EF 6 Bridge Table Insert Not Working
  12. 将Banner美观的放置于博客首页上
  13. MATLAB小技巧(28)模糊综合评价
  14. 专业卸载工具Your Uninstaller! Pro
  15. java 定时任务注解
  16. flutter插件出现英文
  17. wp8 android,WP8桌面主题|WP8桌面v1.5.2 for Android版 - 玩客网
  18. C C++实现网络验证和本地验证
  19. R语言之 as.formula()
  20. HTML中enter键触发事件

热门文章

  1. 普通人学python有意义吗-自学Python编程的第一天----------来自苦逼的转行人
  2. mysql代码的核心类_mysql源码---核心类 (1)线程类
  3. react周期函数介绍
  4. akamai:与看视频广告等待相比,用户更不能忍受缓冲等待
  5. 视频工作者应该知道的几个网站
  6. 语言密码加密变星号_为什么汉字不能设成密码,你想过吗?
  7. python硬件测试开发工程师_硬件测试工程师
  8. Java .net 心得_我做英文站的心得-如何做好英文站 - 程序员日记 - 做人做技术【关注.NET和JAVA】...
  9. googlemap 两点间平滑移动_Salomon萨洛蒙徒步登山鞋实测,一双在山林与城市间探索的户外鞋...
  10. JS获取子节点、父节点和兄弟节点的方法实例总结