文章目录
一、色阶调整( Levels Adjustment )原理
二、自动色阶图像处理算法
一、色阶调整( Levels Adjustment )原理
色阶:就是用直方图描述出的整张图片的明暗信息。如图
从左至右是从暗到亮的像素分布,
黑色三角代表最暗地方(纯黑—黑点值为0),
白色三角代表最亮地方(纯白—白点为 255)。
灰色三角代表中间调。(灰点为1.00)

对于一个RGB图像, 可以对R, G, B 通道进行独立的色阶调整,即对三个通道分别使用三个色阶定义值。还可以再对 三个通道进行整体色阶调整。
因此,对一个图像,可以用四次色阶调整。最终的结果,是四次调整后合并产生的结果。
cv2.equalizeHist(img) 函数

img = cv2.imread('./20181106194742.png',0)
equ = cv2.equalizeHist(img) # 只能传入灰度图res = np.hstack((img,equ))  # 图像列拼接(用于显示)cv2.imshow('res',res)
cv2.waitKey(0)
cv2.destroyAllWindows()


二、自动色阶图像处理算法
cv2.createCLAHE() 对比度有限自适应直方图均衡
直方图均衡后背景对比度有所改善。但导致亮度过高,我们丢失了大部分信息。这是因为它的直方图并不局限于特定区域。
因此,为了解决这个问题,使用自适应直方图均衡。在此,图像被分成称为“图块”的小块(在OpenCV中,tileSize默认为8x8)。然后像往常一样对这些块中的每一个进行直方图均衡。所以在一个小区域内,直方图会限制在一个小区域(除非有噪音)。如果有噪音,它会被放大。为避免这种情况,应用对比度限制。如果任何直方图区间高于指定的对比度限制(在OpenCV中默认为40),则在应用直方图均衡之前,将这些像素剪切并均匀分布到其他区间。均衡后,为了去除图块边框中的瑕疵,应用双线性插值。

import numpy as np
import cv2img = cv2.imread('20181106194742.png',0)
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
cl1 = clahe.apply(img)cv2.imshow('img',img)
cv2.imshow('cl1',cl1)
cv2.waitKey(0)
cv2.destroyAllWindows()

自适应色阶去雾气

import numpy as np
import cv2def ComputeHist(img):h,w = img.shapehist, bin_edge = np.histogram(img.reshape(1,w*h), bins=list(range(257)))return histdef ComputeMinLevel(hist, rate, pnum):sum = 0for i in range(256):sum += hist[i]if (sum >= (pnum * rate * 0.01)):return idef ComputeMaxLevel(hist, rate, pnum):sum = 0for i in range(256):sum += hist[255-i]if (sum >= (pnum * rate * 0.01)):return 255-idef LinearMap(minlevel, maxlevel):if (minlevel >= maxlevel):return []else:newmap = np.zeros(256)for i in range(256):    #获取阈值外的像素值 i< minlevel,i> maxlevelif (i < minlevel):newmap[i] = 0elif (i > maxlevel):newmap[i] = 255else:newmap[i] = (i-minlevel)/(maxlevel-minlevel) * 255return newmapdef CreateNewImg(img):h,w,d = img.shapenewimg = np.zeros([h,w,d])for i in range(d):imgmin = np.min(img[:,:,i])imgmax = np.max(img[:,:,i])imghist = ComputeHist(img[:,:,i])minlevel = ComputeMinLevel(imghist, 8.3, h*w)maxlevel = ComputeMaxLevel(imghist, 2.2, h*w)newmap = LinearMap(minlevel,maxlevel)if (newmap.size ==0 ):continuefor j in range(h):newimg[j,:,i] = newmap[img[j,:, i]]return newimgif __name__ == '__main__':img = cv2.imread('./20181106194742.png')newimg = CreateNewImg(img)cv2.imshow('original_img', img)cv2.imshow('new_img', newimg/255)cv2.waitKey(0)cv2.destroyAllWindows()

--------------------- 
版权声明:本文为CSDN博主「SongpingWang」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wsp_1138886114/article/details/83793331

https://blog.csdn.net/maozefa/article/details/43971063

OpenCV—python 色阶调整(直方图均衡化 图像去雾)相关推荐

  1. MATLAB可视化实战系列(二十五)-MATLAB基于直方图的图像去雾

    前言 直方图是图像的一种统计表达形式,在一定程度上能够反映数学图像的概貌性描述,包括图像的灰度范围.灰度分布.整幅图像的亮度均值.阴暗对比度等,并可以此为基础进行分析来得出对图像进一步处理的重要依据. ...

  2. OpenCV—python 颜色直方图与直方图均衡化

    文章目录 一.颜色直方图 1.1 使用opencv展示直方图 1.2 使用matplotlib绘制 二.直方图均衡化 2.1 全局直方图均衡化与自适应均衡化 2.2 使用查找表来拉伸直方图 2.3 直 ...

  3. 直方图均衡化算法 matlab,matlab程序_retinex_frankle_mccann+直方图均衡化_去雾算法

    clear all rgb=imread('g3.jpg');%需要处理的图片 m=size(rgb,1); n=size(rgb,2); for k=0:255 rr0(k+1)=length(fi ...

  4. 基于图像去雾处理的雾霾污染程度评估(任务书+lunwen+翻译及原文+答辩PPT)

    目 录 1 引言 1 2 图像去雾算法 1 2.1 基于同态滤波的图像去雾算法 2 2.1.1 算法概述 2 2.1.2 同态滤波 3 2.1.3 模型简介 3 2.1.4 偏微分方程求解 4 2.2 ...

  5. 图像增强及直方图均衡化在图像去雾上的应用(附matlab代码)

    一.图像增强技术介绍 简单进行一个背景介绍:图像增强就是将一幅图中需要的信息增强,消弱或去除不需要的信息的一种处理技术,可以达到改善图像质量的作用. 根据处理空间的不同,可以分为空域增强和频域增强两种 ...

  6. 单幅图像去雾算法研究综述

    来源 <计算机工程与应用>北大核心期刊,CSCD数据库. 影响因子:2.348 简介 图像去雾算法是以满足特定场景需求,突出图片细节并增强图片质量为目的的图像分析与处理方法.在雾霾天气下, ...

  7. Python基于OpenCV的图像去雾算法[完整源码&部署教程]

    1.图片识别 2.视频展示 [项目分享]Python基于OpenCV的图像去雾算法[完整源码&部署教程]_哔哩哔哩_bilibili 3.算法原理 图像增强算法常见于对图像的亮度.对比度.饱和 ...

  8. python+opencv图像处理之七:直方图均衡化

    python+opencv图像处理之七:直方图均衡化 目录 python+opencv图像处理之七:直方图均衡化 一.直方图均衡化 二.直方图绘制 三.直方图均衡化 四.有限对比适应性直方图均衡化 一 ...

  9. python opencv 直方图均衡_详解python OpenCV学习笔记之直方图均衡化

    本文介绍了python OpenCV学习笔记之直方图均衡化,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/d5/daf/tutorial_py_hi ...

最新文章

  1. 绿盟科技与CCF成立“鲲鹏”科研基金 计划发力5大领域资助16个项目
  2. 管理输入光标的 WIN32 API 函数
  3. 【运筹学】运输规划、表上作业法总结 ( 运输规划模型 | 运输规划变量个数 | 表上作业法 | 最小元素法 | 差额 Vogel 法 ★ | 闭回路法 ) ★★★
  4. 为什么lp的最优解是一个概率_什么时候应该用概率图模型、消息传递替代传统组合优化求解器?未来工作?(持续更新)...
  5. WinPcap捕获数据包
  6. CSS:CSS 在工程中改变——面向对象的CSS (OO CSS)
  7. staf工作笔记-使用stax并行处理获取其他主机操作系统信息
  8. 根据字符串形式的路径导入模块(重要)
  9. 前一天还在聊抢票,第二天就被裁了,年底是互联网行业的寒冬吗?
  10. 《用python写网络爬虫》 编写第一个网络爬虫
  11. 【Java】IntelliJ IDEA 14.x 与 Tomcat 集成,创建并运行Java Web
  12. 计算机专业可以当警校吗,警校开设的计算机类专业,毕业生就业方向偏向于信息安全,请注意...
  13. CMPP错误码(zzzz)
  14. jsp页面读取txt乱码
  15. thinkadmin下拉框实现默认选中
  16. 【年度盘点】2016年互联网10大热点,谁在沸腾谁在死去?
  17. 小米手机混淆升级崩溃记录与解决
  18. 字节数组byte[]转有符号short和无符号unsignedShort
  19. 【SCOI2012】喵星球上的点名
  20. java小鸡大冒险_小鸡大冒险怎么玩 新手攻略

热门文章

  1. Docker-Compose安装、卸载、使用详解
  2. 微软将很快就要为Windows 10带来全新“画图”软件
  3. 你脑海中的声音是谁的?
  4. 道路监控系统java代码_使用Java实现简单的监控系统
  5. 曲线平滑-贝塞尔曲线
  6. Android中下载音视频文件
  7. 每日算法——最全青蛙跳台阶算法问题
  8. 站酷基于服务网格ASM的生产实践
  9. 微信3.3.0内测版发布,Windows电脑可以刷朋友圈了
  10. 字节跳动一二三面面经-后台开发岗