范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

图像增强及运算局部直方图均衡化和自动色彩均衡化处理

  本文分享自华为云社区《[Python从零到壹] 五十四.图像增强及运算篇之局部直方图均衡化和自动色彩均衡化处理-云社区-华为云》,作者: eastmount。一.局部直方图均衡化
  前文通过调用OpenCV中equalizeHist()函数实现直方图均衡化处理,该方法简单高效,但其实它是一种全局意义上的均衡化处理,很多时候这种操作不是很好,会把某些不该调整的部分给均衡处理了。同时,图像中不同的区域灰度分布相差甚远,对它们使用同一种变换常常产生不理想的效果,实际应用中,常常需要增强图像的某些局部区域的细节。
  为了解决这类问题,Pizer等提出了局部直方图均衡化的方法(AHE),但AHE方法仅仅考虑了局部区域的像素,忽略了图像其他区域的像素,且对于图像中相似区域具有过度放大噪声的缺点。为此K. Zuiderveld等人提出了对比度受限CLAHE的图像增强方法,通过限制局部直方图的高度来限制局部对比度的增强幅度,从而限制噪声的放大及局部对比度的过增强,该方法常用于图像增强,也可以被用来进行图像去雾操作[1-2]。
  在OpenCV中,调用函数createCLAHE()实现对比度受限的局部直方图均衡化。它将整个图像分成许多小块(比如按10 10作为一个小块),那么对每个小块进行均衡化。这种方法主要对于图像直方图不是那么单一的(比如存在多峰情况)图像比较实用。其函数原型如下所示:
  retval = createCLAHE([, clipLimit[, tileGridSize]])clipLimit参数表示对比度的大小tileGridSize参数表示每次处理块的大小
  调用createCLAHE()实现对比度受限的局部直方图均衡化的代码如下:# -*- coding: utf-8 -*- # By:Eastmount import cv2   import numpy as np   import matplotlib.pyplot as plt   #读取图片 img = cv2.imread("lena.bmp")  #灰度转换 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)   #局部直方图均衡化处理 clahe = cv2.createCLAHE(clipLimit=2, tileGridSize=(10,10))  #将灰度图像和局部直方图相关联, 把直方图均衡化应用到灰度图  result = clahe.apply(gray)  #显示图像 plt.subplot(221) plt.imshow(gray, cmap=plt.cm.gray), plt.axis("off"), plt.title("(a)")  plt.subplot(222) plt.imshow(result, cmap=plt.cm.gray), plt.axis("off"), plt.title("(b)")  plt.subplot(223) plt.hist(img.ravel(), 256), plt.title("(c)")  plt.subplot(224) plt.hist(result.ravel(), 256), plt.title("(d)")  plt.show()
  输出结果如图1所示,图1(a)为原始图像,对应的直方图为图1 ,图1(b)和图1(d)为对比度受限的局部直方图均衡化处理后的图像及对应直方图,它让图像的灰度值分布更加均衡。可以看到,相对于全局的直方图均衡化,这个局部的均衡化似乎得到的效果更自然一点。
  二.自动色彩均衡化
  Retinex算法是代表性的图像增强算法,它根据人的视网膜和大脑皮层模拟对物体颜色的波长光线反射能力而形成,对复杂环境下的一维条码具有一定范围内的动态压缩,对图像边缘有着一定自适应的增强。自动色彩均衡(Automatic Color Enhancement,ACE)算法是在Retinex算法的理论上提出的,它通过计算图像目标像素点和周围像素点的明暗程度及其关系来对最终的像素值进行校正,实现图像的对比度调整,产生类似人体视网膜的色彩恒常性和亮度恒常性的均衡,具有很好的图像增强效果[3-4]。
  ACE算法包括两个步骤,一是对图像进行色彩和空域调整,完成图像的色差校正,得到空域重构图像;二是对校正后的图像进行动态扩展。ACE算法计算公式如下:
  其中,W是权重参数,离中心点像素越远的W值越小;g是相对对比度调节参数,其计算方法如公式(22-2)所示,a表示控制参数,值越大细节增强越明显。
  图2是条形码图像进行ACE图像增强后的效果图,通过图像增强后的图(b)对比度更强,改善了原图像的明暗程度,增强的同时保持了图像的真实性。
  由于OpenCV中暂时没有ACE算法包,下面的代码是借鉴"zmshy2128"老师的文章,修改实现的彩色直方图均衡化处理[5]。# -*- coding: utf-8 -*- # By:Eastmount # 参考zmshy2128老师文章 import cv2 import numpy as np import math import matplotlib.pyplot as plt  #线性拉伸处理 #去掉最大最小0.5%的像素值 线性拉伸至[0,1] def stretchImage(data, s=0.005, bins = 2000):        ht = np.histogram(data, bins);     d = np.cumsum(ht[0])/float(data.size)     lmin = 0; lmax=bins-1     while lmin=s:             break         lmin+=1     while lmax>=0:         if d[lmax]<=1-s:             break         lmax-=1     return np.clip((data-ht[1][lmin])/(ht[1][lmax]-ht[1][lmin]), 0,1)  #根据半径计算权重参数矩阵 g_para = {} def getPara(radius = 5):                             global g_para     m = g_para.get(radius, None)     if m is not None:         return m     size = radius*2+1     m = np.zeros((size, size))     for h in range(-radius, radius+1):         for w in range(-radius, radius+1):             if h==0 and w==0:                 continue             m[radius+h, radius+w] = 1.0/math.sqrt(h**2+w**2)     m /= m.sum()     g_para[radius] = m     return m  #常规的ACE实现 def zmIce(I, ratio=4, radius=300):                          para = getPara(radius)     height,width = I.shape          #Python3报错如下 使用列表append修改     zh = []     zw = []     n = 0     while n < radius:         zh.append(0)         zw.append(0)         n += 1     for n in range(height):         zh.append(n)     for n in range(width):         zw.append(n)     n = 0     while n < radius:         zh.append(height-1)         zw.append(width-1)         n += 1     #print(zh)     #print(zw)          Z = I[np.ix_(zh, zw)]     res = np.zeros(I.shape)     for h in range(radius*2+1):         for w in range(radius*2+1):             if para[h][w] == 0:                 continue             res += (para[h][w] * np.clip((I-Z[h:h+height, w:w+width])*ratio, -1, 1))     return res  #单通道ACE快速增强实现 def zmIceFast(I, ratio, radius):     print(I)     height, width = I.shape[:2]     if min(height, width) <=2:         return np.zeros(I.shape)+0.5     Rs = cv2.resize(I, (int((width+1)/2), int((height+1)/2)))     Rf = zmIceFast(Rs, ratio, radius)             #递归调用     Rf = cv2.resize(Rf, (width, height))     Rs = cv2.resize(Rs, (width, height))       return Rf+zmIce(I,ratio, radius)-zmIce(Rs,ratio,radius)     #rgb三通道分别增强 ratio是对比度增强因子 radius是卷积模板半径           def zmIceColor(I, ratio=4, radius=3):                    res = np.zeros(I.shape)     for k in range(3):         res[:,:,k] = stretchImage(zmIceFast(I[:,:,k], ratio, radius))     return res  #主函数 if __name__ == "__main__":     img = cv2.imread("test01.png")     res = zmIceColor(img/255.0)*255     cv2.imwrite("Ice.jpg", res)
  运行结果如图3和图4所示,ACE算法能有效进行图像去雾处理,实现图像的细节增强。
  三.总结
  本文主要讲解图像局部直方图均衡化和自动色彩均衡化处理。这些算法可以广泛应用于图像增强、图像去噪、图像去雾等领域。
  参考文献:[1]王浩,张叶,沈宏海,张景忠.图像增强算法综述[J].中国光学,2017,10(04):438-448.[2]李艳梅. 图像增强的相关技术及应用研究[D].电子科技大学,2013.[3]S. Bidon, Olivier Besson, J. Y. Tourneret. The Adaptive Coherence Estimator is the Generalized Likelihood Ratio Test for a Class of Heterogeneous Environments[J]. IEEE Signal Processing Letters, 2008, 15: 281-284.[4]eastmount. [Python图像处理] 三十八.OpenCV图像增强和图像去雾万字详解(直方图均衡化、局部直方图均衡化、自动色彩均衡化)[EB/OL]. (2021-03-12). https://blog.csdn.net/ Eastmount/article/details/114706950.[5]zmshy2128. 自动色彩均衡(ACE)快速算法[EB/OL]. (2016-12-05). https://www.cnblogs.com/zmshy2128/p/6135551.html.
  点击下方,第一时间了解华为云新鲜技术~
  华为云博客_大数据博客_AI博客_云计算博客_开发者中心-华为云

湖人119127奇才,詹姆斯升至历史得分榜第2,如何评价这场比赛?其实吧,如果球迷不执著于输赢,湖人的比赛还蛮有意思的。不信你看是不是挺欢乐的?哈哈这种场面,在本赛季湖人的比赛里,可太多了。湖人这场输给奇才,其实没有什么需要特别讨论的,因为本赛季回到现实的勇士,路在何方?昨天更新了格林秀的预热视频,内容是关于格林对于自己和水花一起打球的感受。造化弄人的是,时隔1005天再次一起打球的库追汤仅仅同时出战了11分钟。在对阵绿军的比赛中,库里拉伤了脚部韧突然宣布喜讯,高调晒出婚纱照悄悄恋爱4年,她终于等来了婚礼家人们,又有喜事了!张常宁和吴冠希卡点9点零9分(寓意长长久久)公布了喜讯。作为体育界的金童玉女,一直备受关注。出身于排球世家的张常宁,被称做中国女排公主,14岁进入国家队,是女排孔令辉爸爸孔祥智儿子前半生是我的骄傲,后半生却成了我的牵挂等我正式退役以后,我就放慢脚步,好好陪在你的身边,我们绝不分开。当年正处于事业巅峰的孔令辉,深情的对女演员马苏说出了这番承诺,单纯的马苏相信这个男人说的每一句话,傻傻等了他4年。2国羽天才王适娴17岁恋上谌龙,20岁亚运冠军,遗憾没打过奥运会1990年2月13日王适娴出生于江苏苏州,小时候的她有点胖,被同学嘲笑像个球,这让她很伤心,8岁父母让她去业余体校练羽毛球为的是减肥。此后羽毛球成了她未来18年的牵挂与眷恋,她在这13年后再看许昕才明白他娶到大2岁的姚彦,到底有多幸运01hr2006年,刘国梁30岁,彼时他虽接管国乒队不到4年,却已是全队上下都害怕的刘指导。这一天,刘国梁照例来队里观察大家训练,万万没想到,他刚进训练场大门,就发现一个行为诡异的一山不容二虎,功成名就却渐行渐远,大佬李玮锋和郑智的恩怨始末在中国职业足球过往的历史上,有过很多的俱乐部或者国家队的领袖球员,也就是所谓的球队大哥,这类球员一般在球队中有着很高的地位和话语权,例如甲A时期四川的魏群,大连的徐弘,申花的范志毅王楠嫁给大8岁老公郭斌,患癌后老公不离不弃,泪水背后有幸福王楠,在役期间拿过24枚金牌,是首位拿下世界女子乒坛大满贯的人。她是赛场上的大魔王,让对方瑟瑟发抖。而再强大的王楠,难免也会有失利,有痛苦的时候,每当这时,郭斌便出现在她身旁。给她福原爱一个人让中国人恨不起来的日本人,中国队谁打哭谁哄你好,我叫张怡宁,嚣张的张。你好,我叫福原爱,服气的服。2008年奥运会女子单打第四轮,张怡宁一局90领先福原爱,眼看就要剃对手光头,张怡宁演都不演直接把球扔在地上,我发了怕她接不帕克面前成名,名利双收2001年的选秀大会,年仅19岁的帕克在麦迪逊花园坐如针毡,摆渡收米8直播NBA各大球队呢,免费看NBA一个接一个地挑选了许多的中锋前锋,还有一个得分后卫,但对控球后卫呢,却兴趣寥凯尔登补篮绝杀!克莱24分,普尔2853,马刺险胜勇士北京时间3月21日,NBA常规赛继续进行,经过四节较量,马刺客场110108险胜勇士。凯尔登约翰逊献补篮绝杀,克莱24分,普尔迎爆发。库里穿着厚重的保护靴现身主场,克莱和维金斯均首
谷爱凌的成功,论中国式教育,孩子成为普通人很可耻吗?鼓吹名人明星,实则是在对普通人的挑衅。这届冬奥会,谷爱凌被刷屏。她被刷屏的原因,不仅因为她夺冠了,而且还因为她靓丽的外表和健美的身材斯坦福名校加持,手握多个代言,以及学霸的父母优渥叠穿的裙子真的好时髦,少女感也好强,杨超越都穿上头了穿裙子的时候选择了少女风的裙子,会让自己的气场变得更加的精致,所能呈现出来的效果不仅是大方的,还会展出特别有年轻感的效果。少女风的裙子款式设计一般都比较的新颖,所以大家能看到很多新看到Lisa粉,我又想穿粉色了最近Lisa换了新发型,想必有不少人被她种草了这甜蜜的粉色,这次她换了一个粉色妹妹头,粉毛衣粉指甲全身被粉色包围,这就是人间芭比吧!说到粉色,真的是不论哪个年龄段的女孩都爱不释手的护唇膏左右涂错了?医解答关键在3个字脱皮3口味别用有日本医师主张护唇膏应该上下顺着唇纹涂。天气冷飕飕的南方只有10度,甚至在广东福建等地都已经下起了冰雹雪,许多人嘴唇干裂开始脱皮,你也是靠着护唇膏滋润双唇吗?日本美容诊所所长曾建议别再露脚踝了!今年流行露袜子本来终于有点回暖的影子!今天又是冷到瑟瑟发抖,这一波波降温都快急死衣柜里的春装了!尤其是短靴,长靴,穿了一冬天一整个穿腻的状态!cr。妞妞子富贵其实兼顾保暖和时髦的方法还有一个,各全红婵和谷爱凌,截然不同的人生告诉你起点决定不了成败两个人可以说是相同也可以说是完全不同。两位天才少女的背景天差地别,奥运冠军是她们唯一的交集。相同在他们都为国争光,天赋型选手,都有着过人的本领,在小小年纪为中国获得了一块块奖牌。不蔡斌面临新难题,中国女排队长谁来当?三大候选人袁心玥最合适今年是巴黎奥运周期的第一年,中国女排面临着许许多多的挑战,颜妮林莉和刘晓彤等奥运冠军相继退役,张常宁逐渐回归家庭,是否重新回到赛场目前也不明了,朱婷受手腕伤势影响,何时复出也成了谜冬奥会闭幕式,缘何打动人心?荔枝时评文李愚(作者李愚,荔枝新闻特约评论员,知名评论员本文系荔枝新闻客户端荔枝网独家约稿,转载请注明出处。)2月20日晚,中国国家体育场,随着雪花影像层层熄灭雪花中心主火炬熄灭,第24届两年十九连败,日本95岁奶奶依旧在棋盘前拼搏,最近她终于战胜了31岁男棋手!最近,围棋圈有个让人振奋的消息。95岁杉内寿子在日本第47届棋圣战预选赛中击败31岁男棋手,时隔795天再获胜利!在reddit的评论区,有人说,我在连输3盘比赛后就会怒而退出。无一场23让卫冕冠军轰然倒下,英超瞬间变天,利物浦看到争冠曙光北京时间2月20日凌晨0130,202122赛季英超第26轮上演一场引人关注的比赛,卫冕冠军曼城坐镇主场迎战命中克星球队热刺。前面25轮英超战罢,他们20胜3平2负,积63分,以9凌晨1点,皇马做出强硬决定!姆巴佩慌了,球迷感叹自己作死关于姆巴佩的未来,现在大概率就是在皇马和大巴黎之间选择一只球队。其中皇马方面是在去年夏天就开始对他进行正式追求,但是事情似乎在最近有了变化。目前西班牙媒体公布了皇马的最新决定,也是