一种简单快速有效的低照度图像增强方法

一、本文介绍的是一种比较实用并且去阴影效果很好的方法,选自2004年Tao的一篇论文,名称是《An Integrated Neighborhood Dependent Approach for Nonlinear Enhancement of Color Images 》,有兴趣的朋友仔细细读一下。论文篇幅很短,所以应该难度不大,而且效果极佳。
二、接下来简单介绍一下该论文的思想

图一这是一副存在严重阴影的图像,显然图像拍摄的结果不是让人十分满意,参考了Tao论文思想后,发现能够很好提高图像的暗部区域,去除图像的阴影部分。 论文思想

1. 首先,将RGB颜色空间中的彩色图像转换为灰度图像,并且将图像进行归一化,得到归一化后的I(x,y),通过下面公式进行线性变化(具体为什么采用这种线性变换我也不是很明白)论文作者的意思是这种变换可以很大程度上提高暗像素(区域)的亮度,而亮像素(区域)的亮度增强较低,甚至是负增强。从而达到较好的效果。

 a=0.24,b=0.5;
In(x,y)=(I(x,y)^a+(1-I(x,y))^b+I(x,y)^2)/2

2. 接着对灰度增强图像I(x,y)同过不同尺度的高斯核函数对I(x,y)做卷积运算,卷积的结果包含了图像相邻像素的亮度信息。可以采取相关性来处理图像的边界。
高斯核函数的表示方式以及卷积公式如下所示:
G(x,y)=Ke(−(x2+y2)/c2)G(x,y)=Ke^{(-(x^2+y^2)/c^2)} G(x,y)=Ke(−(x2+y2)/c2)其中c为尺度或者是高斯环绕空间常数
I′(x,y)=I(x,y)∗G(x,y)I'(x,y)=I(x,y)*G(x,y)I′(x,y)=I(x,y)∗G(x,y)

3. 将灰度图像与中心像素图像做对比度增强
R(x,y)=In(x,y)r(x,y)R(x,y)=In(x,y)^{r(x,y)}R(x,y)=In(x,y)r(x,y)
r(x,y)=I′(x,y)/I(x,y)r(x,y)=I'(x,y)/I(x,y)r(x,y)=I′(x,y)/I(x,y)

4. 为了获得更加的图像效果,对不同尺度的多个卷积结果进行图像的对比度增强,最终的结果是基于这多个尺度的线性组合。
R(x,y)=∑i3wiRi(x,y)R(x,y)=\sum_i^3w_iR_i(x,y)R(x,y)=i∑3​wi​Ri​(x,y)
一般取3就够了,本文wi(与尺度有关)为1/3。

5. 经过前几步的处理我们可以得到一副增强图像,并且发现图像的去阴影效果较好。

基本上去除了图像的阴影部分,在不影响其他像素亮度基础上,亮度也得到了很大的提升。接下要做的是恢复图像的颜色。

6. 恢复图像中颜色,同样也可以采用线性颜色恢复过程,得到在增强后的彩色图像。彩色恢复公式如下:
Rj(x,y)=Ij(x,y)I(x,y)∗λR_j(x,y)={I_j(x,y)\over I(x,y)}*\lambdaRj​(x,y)=I(x,y)Ij​(x,y)​∗λ
λ\lambdaλ调整三种波段的色调,本文的λ\lambdaλ取值为1,结果同样很好。
Ij(x,y)I_j(x,y)Ij​(x,y)指的是原图像的R、G、B三通道。

7. 色彩恢复后的图片结果经过上述方法进行色彩恢复后的结果简直完美,不管是颜色,亮度还是细节方面都达到了一个很好的效果。
为了证明不仅适应于一种场景,进行第二张图片展示:通过上面两张图像的展示,我想这样的图片效果超越了很多的其他方法,并且效果特别好。
下面拿SSR(单尺度retinex增强作比较):retinex算法同样能够在一定程度上提升图像的亮度,但效果明显不如Tao的方法好,效果如下:
很明显不管是亮度上还是色彩上,SSR的效果不如上述方法。MSR以及MSRCR,我想效果上也是肯定不如Tao的方法。
下面是的在实现论文是所用的部分matlab代码,因为matlab里面有很多内置的函数,所以实现起来也不是很难。

%%
%2019年10月20日-2019年10月21日
%论文:An Integrated Neighborhood Dependent Approach for Nonlinear Enhancement of Color Images
clc
clear
I=im2double(imread('three.png'));
I1=rgb2gray(I);
In=(I1.^(0.24)+(1-I1).*0.5+I1.^2)/2;
%通过高斯核对灰度增强图像做卷积运算
sigma=5;
window = double(uint8(3*sigma)*2 + 1);
G1=fspecial('gaussian',window,sigma);
Guass1=imfilter(I1,G1,'conv','replicate','same');
r1=Guass1./I1;
R1=In.^r1;
sigma=20;
window = double(uint8(3*sigma)*2 + 1);
G2=fspecial('gaussian',window,sigma);
Guass2=imfilter(I1,G2,'conv','replicate','same');
r2=Guass2./I1;
R2=In.^r2;
sigma=240;
window = double(uint8(3*sigma)*2 + 1);
G3=fspecial('gaussian',window,sigma);
Guass3=imfilter(I1,G3,'conv','replicate','same');
r3=Guass3./I1;
R3=In.^r3;
R=(R1+R2+R3)/3;
Rr=R.*(I(:,:,1)./I1);
Rg=R.*(I(:,:,2)./I1);
Rb=R.*(I(:,:,3)./I1);
rgb=cat(3,Rr,Rg,Rb);
imshow([I rgb]);

一种简单快速有效的低照度图像增强方法相关推荐

  1. 一种简单快速有效的图像暗部增强/亮度均衡算法

    2020/10/27更新:之前为克服光晕效应尝试过引导滤波,惜哉其他地方犯了个小错误以致未达到目标,处理的结果虽然保边但却过于模糊.后期修正之后再次尝试便得到了预期的效果.现将引入了引导滤波去光晕的程 ...

  2. 5种简单快速的方法解除PDF文件密码保护

    PDF 文件已经成为了我们日常工作.学习中广泛使用的文档格式之一.为了对重要的 PDF 文件进行保护,我们有时需要添加密码保护功能来防止未授权访问或修改.但是,如果您的 PDF 文件已经有了密码保护, ...

  3. 一种简单的蒙特卡洛树搜索并行化方法

    监控未观察样本: 一种简单的蒙特卡洛树搜索并行化方法 Watch the Unobserved: a Sample Approach to Parallelizing Monte Carlo Tree ...

  4. 计算机房间墙壁的布置,11种简单且有特色的墙面布置方法

    你有试着自己装点过自己房间的墙面吗?最简单也最快速的装饰方法就是用相片以及海报,但是时间久了就会发现似乎也歇缺乏新意,以下介绍了11种简单且有特色的墙面布置方法,运用的素材从杂志内页到相框.甚至地图都 ...

  5. 一种简单易用的台球瞄准方法——对称瞄准法

    一种简单易用的台球瞄准方法 --对称瞄准法 台球运动是一种大众喜欢的休闲娱乐活动.在各类台球运动中,都需要使用主球把目标球击打进袋,在这个过程中,瞄准是击打进袋的重要一环. 台球瞄准的方法有很多种,比 ...

  6. 怎么给照片降噪?分享两种简单好用的图片降噪方法

    怎么给照片降噪呢?大家在使用数码摄影的时候,相机将光线作为接收信号接收并输出的过程中,会产生图片中粗糙的部分,这本是不该出现的外来像素,导致拍出来的照片或多或少会出现噪点,让图片看起来不美观.这时候我 ...

  7. 一种简单快速的方式实现 Android App 的夜间模式

    博主声明: 转载请在开头附加本文链接及作者信息,并标记为转载.本文由博主 威威喵 原创,请多支持与指教. 本文首发于此   博主:威威喵  |  博客主页:https://blog.csdn.net/ ...

  8. c语言快餐店计费系统,一种快餐快速计费系统的制作方法

    本实用新型涉及一种快餐快速计费系统,尤其是通过图像对餐具进行识别的计费系统. 背景技术: 快餐快速计费系统通常适用于自选模式的餐厅,应用场所主要包括学校(高校)食堂.企事业单位食堂.园区食堂.快餐连锁 ...

  9. 两种简单高效的“反人脸识别”方法

    Bakunov开始在工作时间,研究如何防止被人脸识别.日前,他公开表示自己已经与其他几个黑客一起,开发出了一种"反人脸识别算法". Grigory Bakunov是俄罗斯搜索巨头Y ...

最新文章

  1. 常州一院有全消化道的机器人的_【商务对接】昆山智能机器人及成套装备协会链接京东和智能制造...
  2. B - Bone Collector (01背包)
  3. java 2wei shuzu_JavaScript 2维数组(JavaScript 2 dimension array)
  4. Eclipse运行Applet没有显示图片,getCodeBase,getDocumentBase
  5. Python—Mysql—Dbvisualizer
  6. python基础有哪些内容_Python基础练习
  7. oracle增加文件组,Oracle 文件和文件组
  8. AJAX——ASP.NET AJAX框架(一)ScriptManager
  9. moment.js获取一周的第一天
  10. Spring Boot 应用在 kubernetes 的 sidecar 设计与实战
  11. 制作macOS苹果电脑U盘启动盘
  12. 国内外部分源软件镜像站和部分软件官方网站
  13. 2. ESP8266固件的编译(nodemcu固件)
  14. 提升自己的最好方式是什么呢?
  15. Python 计算思维训练——公式计算
  16. 计算机有些应用无法卸载,有些软件卸载不了怎么办_电脑软件卸载不了的正确解决方法...
  17. TCP/IP网络通信协议
  18. MyBatis Plus Generator 代码生成器 v3.5.x 案例,含校验、MapStruct、Swagger、QO、VO,自定义 FreeMarker 模板引擎
  19. 微软官方的精简版Windows 7——Windows Thin PC
  20. java的抽象方法和抽象类

热门文章

  1. 安装git提示E: Package ‘git‘ has no installation candidate
  2. .Net5中使用Swagger
  3. 诺基亚5700手机新版UCWEB 6.7为你分享
  4. 算力时代加速狂奔,移动云将携手千万开发者并肩同行
  5. 云客Drupal源码分析之Url和Link
  6. 关于ICache和DCache
  7. 《铜豌豆 Linux》11.5.1 版本发布
  8. 什么东西可以改善睡眠,五款助眠好物帮你摆脱失眠困扰
  9. 大修 小修 计算机科学,科学网—【热刊周评】发文量超千篇,4+分的计算机人工智能领域期刊,快来了解一下 - LetPub编辑的博文...
  10. 图片怎么批量压缩?进来学习一下压缩图片的好方法