MATLAB图像处理_图像的白平衡算法(灰色世界法)

白平衡,即所谓的白色的平衡。

白平衡的算法有很多,这里记录的是最简单实用的白平衡算法,即灰色世界法!

灰度世界算法(Gray World)是以灰度世界假设为基础的,该假设认为对于一幅有着大量色彩变化的图像, R、 G、 B 三个分量的平均值趋于同一个灰度K。

下面是具体的算法代码:

RGB=imread('test.jpg');

R = RGB(:,:,1);      G = RGB(:,:,2);      B = RGB(:,:,3);
Rx4 = RGB(:,:,1)*4;  Gx4 = RGB(:,:,2)*4;  Bx4 = RGB(:,:,3)*4; //Rx4只是做了一个简单的线性的提亮,可以不用参考。

Rave = mean(mean(R));
Gave = mean(mean(G));
Bave = mean(mean(B));
Kave = (Rave + Gave + Bave) / 3;

R1 = (Kave/Rave)*R; G1 = (Kave/Gave)*G; B1 = (Kave/Bave)*B;
R2 = (Kave/Rave)*Rx4; G2 = (Kave/Gave)*Gx4; B2 = (Kave/Bave)*Bx4; 

RGB_white = cat(3, R1, G1, B1);
RGB_whitex4 = cat(3, R2, G2, B2);

RGB_white_out = uint8(RGB_white); RGB_white_outx4 = uint8(RGB_whitex4);

下面是算法的效果:

原图:

白平衡之后:

可见,最原始的算法,效果还是不错的,后面有机会会补充其他好一些的算法。

时间: 2024-10-12 21:50:55

MATLAB图像处理_图像的白平衡算法(灰色世界法)的相关文章

MATLAB图像处理_去雾算法

使用MATLAB进行图像的去雾操作,网上一搜,这方面的东西很多,貌似已然成为研究的一个方向,大牛辈出! 这里仅仅给出一个代码,能实现图像的去雾操作,详细的看后边有没有时间,想自己研究研究. function darktest(filename) %暗影去雾算法 %filename------文件名或文件绝对路径 %用法:darktest('7.png') close all clc w0=0.65; %0.65 乘积因子用来保留一些雾,1时完全去雾 t0=0.1; I=imread(filena

数字图像处理_图像二值化_jzcjedu

皮卡丘:“师兄! ” 师兄:“干嘛…?” 皮卡丘:“你帮我看看这个,这是我打车的发票,看起来有点不太清晰,老板说不给我报销…” 师兄:“你仿佛在特意逗我笑,这不是很清楚嘛!!! ” 皮卡丘:“我老板有强迫症,他说这个扫描之后不清楚,让我弄清晰点再给他,不然就不给我钱.师兄,你一定要帮我呀,不然以后都不能打车了.” 师兄:“不急,我先看看,我记得当初张康老师教过我对于这种信噪比很高的图像你要提取出想要的信息的话用二值化处理又简单又方便.“ 皮卡丘:“这样啊,快弄给我看看.“ 稍等,我开一下MATL

MATLAB图像处理_感悟和总结

两个星期的图像处理研究学习差不多告一段落: 真的应了一句话,只有你接触某个领域,才真正可以体会到某个领域的魅力所在: 到目前为止,学习的一些图像处理知识,都是最基础的,其实和机器学习.计算机视觉.人工智能等方面比起来,只是小菜一碟:感觉图像处理方面的知识博大精深,确实如此,这是一项研究生花两年的时间都不一定能掌握好的东西.只能说和嵌入式方向一样,都是水比较深.搞过这个之后,才深知自己的数学知识没学到位,后悔大学数学没有好好学,现在又有重新学数学的念头了,甚至有考个研究生的冲动了... 是不是很蛋

MATLAB图像处理_直接操作像素点进行颜色变换

需求 直接操作RGB图像的像素点,进行颜色的相关操作. 掌握这个,必须对MATLAB中矩阵的操作有所熟悉,特别是整行.整列的操作. 如: J = [1 2 3; 4 5 6; 7 8 9]; --这里定义了一个三行三列的矩阵. J[:, 1] = 0; --直接操作了J矩阵中每一行的第1列 此时J = [0 2 3; 0 5 6; 0 8 9] 其他如行操作用法类似,不再赘述. 下面我们对一副图像进行直接操作,把其中的红色部分改为蓝色. 代码如下: % BY SCOTT % red2blue %

MATLAB图像处理_同态滤波

同态滤波: 利用广义叠加原理对同态系统进行滤波. 同态滤波是把频率过滤和灰度变换结合起来的一种图像处理方法,它依靠图像的照度/ 反射率模型作为频域处理的基础,利用压缩亮度范围和增强对比度来改善图像的质量.使用这种方法可以使图像处理符合人眼对于亮度响应的非线性特性,避免了直接对图像进行傅立叶变换处理的失真. 同态滤波的基本原理是:将像元灰度值看作是照度和反射率两个组份的产物.由于照度相对变化很小,可以看作是图像的低频成份,而反射率则是高频成份.通过分别处理照度和反射率对像元灰度值的影响,达到揭示阴

数字图像处理_图像的采样和量化

基础知识储备 采样;就是把一幅连续图像在空间上分割成M×N个网格,每个网格用一亮度值来表示.一个网格称为一个像素.M×N的取值满足采样定理. 量化;就是把采样点上对应的亮度连续变化区间转换为单个特定数码的过程.量化后,图像就被表示成一个整数矩阵.每个像素具有两个属性:位置和灰度.位置由行.列表示.灰度表示该像素位置上亮暗程度的整数.此数字矩阵M×N就作为计算机处理的对象了.灰度级一般为0-255(8bit量化).量化示意图(a)为量化过程(b)为量化为8bit 在现实生活中,采集到的图像都需要经

数字图像处理_图像基本运算

图像基本运算 1点运算 线性点运算是指输入图像的灰度级与输出图像呈线性关系.s=ar+b  (r为输入灰度值,s为相应点的输出灰度值).  当a=1,b=0时,新图像与原图像相同:  当a=1,b≠0时,新图像是原图像所有像素的灰度值上移或下移,是整个图像在显示时更亮或更暗:  当a>1时,新图像对比度增加:  当a<1时,新图像对比度降低:  当a<0时,暗区域将变亮,亮区域将变暗,点运算完成了图像求补: 非线性点运算是指输入与输出为非线性关系,常见的非线性灰度变换为对数变换和幂次变换

MATLAB图像处理_统计最大/最小/平均灰度

需求: 求图像的最大灰度.最小灰度.以及平均灰度. 代码如下: % BY SCOTT % Count max gray and min gray clear all; clc; rgb = imread('test.jpg'); gray = rgb2gray(rgb); [m,n] = size(gray); max = 0; min = 255; sum = 0; avg = 0; for i=1:1:m for j=1:1:n if (gray(i,j) > max) max = gray

Win8 Metro(C#)数字图像处理--2.51图像统计滤波算法

原文:Win8 Metro(C#)数字图像处理--2.51图像统计滤波算法 ?? [函数名称] ??图像统计滤波???WriteableBitmap?StatisticalFilter(WriteableBitmap?src,double?T) /// <summary> /// Statistical filtering process. /// </summary> /// <param name="src">The source image.&