参考:https://www.cnblogs.com/molakejin/p/5766132.html

白平衡

白平衡的英文为White Balance,其基本概念是“不管在任何光源下,都能将白色物体还原为白色”,对在特定光源下拍摄时出现的偏色现象,通过加强对应的补色来进行补偿。

所谓的白平衡是通过对白色被摄物的颜色还原(产生纯白的色彩效果),进而达到其他物体色彩准确还原的一种数字图像色彩处理的计算方法。(源自百度百科)

灰度世界算法

灰度世界理论:认为任何一幅图像, 当有足够的色彩变化时, 其R, G, B分量均值会趋于平衡(即 RGB三个数值相等, 也就是说应当是黑白灰类型的颜色)。这个理论在全局白平衡中得到⼴泛应用, 特点是能够利用更多的图像信息来做判断, 但在面对⾊色彩较为单一的图像时就显得有些乏力了。

灰度世界算法:根据灰度世界理论,将原始图的RGB均值分别调整到R= G = B即可。不完美的地方就是这个算法对颜色不丰富的图像敏感程度一般,处理起来效果也就不会很理想,局限性很大。

Matlab代码实现:

clc;clear;close all;img=imread('test.png');
subplot(121),imshow(img),title('原图');
R = img(:,:,1);G = img(:,:,2);B = img(:,:,3);
Rave = mean2(R);
Gave = mean2(G);
Bave = mean2(B);
K = (Rave + Gave + Bave) / 3;R_new=(K/Rave)*R;G_new=(K/Gave)*G;B_new=(K/Bave)*B;
subplot(122),imshow(cat(3,R_new,G_new,B_new)),title('平衡后');

代码效果:

全反射算法

全反射理论:一幅图像中亮度最大的点就是白点, 即假设在 YCbCr 空间中Y值最⼤的点为白色, 以此来校正整幅图像。特点是只考虑色彩最亮的那部分, 跟上面的灰度世界理论正好相反, 在处理色彩偏单调的图像时效果好些, 但面对颜色丰富的图片时,因为最亮的点不一定是⽩色的, 可能会出现偏色的情况。

全反射算法:该算法认为最亮的那个点就是白色,如果不是,就针对偏离白色的数值进行逆向修正。缺点是没有高亮点或者图像色彩复杂,它的修正效果就会比较乏力。

Matlab代码实现(未加解释),参考https://www.cnblogs.com/Imageshop/archive/2013/04/20/3032062.html

clc;clear;close all;img=imread('test.png');
subplot(121),imshow(img),title('原图');
R=double(img(:,:,1));G=double(img(:,:,2));B=double(img(:,:,3));histRGB=zeros(765);
[m,n,h]=size(img);
for i=1:mfor j=1:ns=sum(img(i,j,:));histRGB(s)=histRGB(s)+1;end
endnum=0;
for i=1:765num=num+histRGB(766-i);if num>m*n*0.1thresh=765-i;breakend
endamount=0;
Rave=0;Gave=0;Bave=0;
for i=1:mfor j=1:ns=sum(img(i,j,:));if s>threshRave=(Rave*amount+R(i,j))/(amount+1);Gave=(Gave*amount+G(i,j))/(amount+1);Bave=(Bave*amount+B(i,j))/(amount+1);amount=amount+1;endend
endfor i=1:mfor j=1:nR(i,j)=255*R(i,j)/Rave;if R(i,j)>255R(i,j)=255;endG(i,j)=255*G(i,j)/Gave;if G(i,j)>255G(i,j)=255;endB(i,j)=255*B(i,j)/Bave;if B(i,j)>255B(i,j)=255;endend
endsubplot(122),imshow(uint8(cat(3,R,G,B))),title('平衡后');

代码效果:

写在后面:
上述图像为某潜水员在水下拍摄,为得到正确的白平衡,他拍摄了一张灰色卡片作为对比:

由灰色卡片修正图像白平衡结果如下:

Matlab实现图像白平衡(灰度世界法、全反射算法)相关推荐

  1. matlab中图像太大,图像处理:算法在MATLAB中耗时太长

    您可以使用im2col *将图片转换为列格式,以便每个块形成[64 * 4096]矩阵的列.然后对每列应用转换,并使用bsxfun来向量化错误计算. DomainImage=rand(512); Ra ...

  2. 图像相减的matlab仿真及光栅滤波法,图像相减的MATLAB 仿真及光栅滤波法实验实现...

    图像相减的MATLAB 仿真及光栅滤波法实验实现 毕业设计(论文)中期报告题目图像相减的MATLAB仿真及光栅滤波法实验实现院(系)光电学院专业光信息科学与技术班级090106姓名陈凤学号090106 ...

  3. Java OpenCV 图像白平衡算法

    原文链接:https://blog.csdn.net/dcrmg/article/details/53545510         彩色相机内部有三个CCD电子耦合元件,分别用来感受红绿蓝三中颜色的光 ...

  4. 【图像修复】基于criminis算法实现图像修复附matlab代码

    1 内容介绍 该算法出自Criminisi的论文 Region Filling and Object Removal by Exemplar-Based Image Inpainting 该算法只要思 ...

  5. matlab人工选择阈值进行分割,基于MATLAB的图像阈值分割算法的研究

    [摘要]:图像分割是一种重要的数字图像处理技术.本文首先介绍了图像分割技术,其次总结了目前图像分割技术中所用到的阈值.边缘检测.区域提取等方法以及分水岭算法.针对各种阈值分割算法,本文在最后做了详细的 ...

  6. 加权平均法融合图像matlab,基于MATLAB的图像融合算法

    内容介绍 原文档由会员 小甜甜 发布 基于MATLAB的图像融合算法 1.9万字 34页 摘要 图像融合能够将不同类型传感器获取的同一对象的图像数据进行空间配准.并且采用一定的算法将各图像数据所含的信 ...

  7. 【老生谈算法】matlab实现图像去雾算法——图像去雾

    基于matlab的图像去雾算法详细讲解与实现-附matlab实现源代码 ## 1.原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 [老生谈算法]基于mat ...

  8. 【图像隐藏】基于DCT算法实现数字水印嵌入+检测+攻击含Matlab源码

    1 简介 介绍了数字水印的产生.发展及其应用,讨论了数字水印的分类,提出了图像的预处理思想,利用MATLAB中的剪切函数.缩放函数,以及调整图像直方图的方法对图像进行预处理,并用MATLAB进行了仿真 ...

  9. 如何用matlab求出覆冰图像像素点,输电线路覆冰图像的Canny算子改进算法研究

    输电线路覆冰图像的Canny算子改进算法研究 摘 要: 每到冬季 关键词: 形态学滤波; Canny算子; 边缘检测; 覆冰检测; 微分算子 中图分类号:TM755 文献标志码:A文章编号:1006- ...

最新文章

  1. mbr备份以及破坏后如何恢复
  2. python导入mongo数据库文件
  3. 人一样自然流畅地说话,下一代智能对话系统还有多长的路要走?
  4. 2020-07-03 CVPR2020 i3DV论文讨论(2) 笔记
  5. 在Spring启动时与mongodb一起摇摆
  6. 「CF 932E」 Team Work
  7. linux Kernel Map
  8. Spring中bean属性注入方式总结:构造方法、setter注入、p命令空间注入、SpEL注入、集合注入
  9. 来点实在的 Community Server 2007 剥离出的模式窗口
  10. java同步器有哪些_Java 队列同步器 AQS
  11. Excel表格的35招必学秘技[配图]
  12. Android 真实简历
  13. Oracle、聚石塔
  14. 存储技术(一)-基本概念和技术发展
  15. 心态-《生活的艺术》书中的精髓:中国人享受生活,所以有着独特的生活的艺术,享受生活首先要有闲暇时光,也要去感受生活,才会体验到生活的乐趣
  16. 基于协同过滤推荐+余弦相似度算法实现新闻推荐系统
  17. YLAN_TRANSLATE ABAP程序批量翻译工具
  18. 单片机实验(十三)串口自发自收实现
  19. php手册下载打开没有内容,php pdf文件下载:无法加载PDF文档
  20. CodeForces - 538F--A Heap of Heaps(树状数组+离线)

热门文章

  1. Android 判断网络状态
  2. 【[HAOI2011]Problem c】
  3. 0、Spring 注解驱动开发
  4. 获取DOM节点的几种方式
  5. 中国互联网+光伏建筑一体化行业商业模式创新与投资机会深度报告
  6. 如何设置SOLR的高亮 (highlight)?
  7. 《监控》再起风云,连同创作中的《监控2》成功牵手影视公司
  8. linux longlong大小,Linux基本数据类型大小——int,char,long int,long long int
  9. 查询oracle模式对象信息,ORACLE 模式和模式对象
  10. pushpop指令的操作数必须是字操作数_指令格式