|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于MATLAB图像处理的白平衡算法,也称灰色世界法
, n9 x5 o; v+ e
- e% w' Y' X7 a' j6 o
8 F/ C) Z2 A7 u& L白平衡,即所谓的白色的平衡。: a, C4 F+ `/ a( X1 P4 X d
9 B5 p8 Q) d% H6 o- H1 u2 }/ O. U
白平衡的算法有很多,这里记录的是最简单实用的白平衡算法,即灰色世界法!
% g( X! g0 ]/ l3 {' x* ]9 L8 n/ d2 |; W" K5 o
灰度世界算法(Gray World)是以灰度世界假设为基础的,该假设认为对于一幅有着大量色彩变化的图像, R、 G、 B 三个分量的平均值趋于同一个灰度K。 G! g0 M( n" E+ |2 F9 A
/ f0 U! d& x* a- u7 `
下面是具体的算法代码:
* J( h' h! W0 R: O
8 F) q" b5 Y7 B" d& M
" P" K# ]& S L- 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);
. w0 r2 e$ U3 c1 S5 i$ f3 _
$ ^# L! `0 S+ b9 H. ]) [6 B) i$ A; X+ A% l
3 Z0 d, ?/ a+ {; V! z# S1 Q3 G# Z1 F7 _3 c& j+ ~' N. O
下面是算法的效果:; u# l, K9 P- O6 f! O0 |
4 I1 Q/ ?( v, j) d" W1 r% p r! {
原图:
k1 }1 F6 {0 c; G9 |5 ]) ^# _* w/ w, ^( z6 L2 T- U; q
r2 f7 R% A% m8 z. Y* [/ s9 _
; v, ~; L+ n1 a1 s% b4 K' f+ _
! Z. n( Z" }) U: e/ a0 N; G白平衡之后:
0 S! m6 S4 X5 N& i* l
9 b! J* k3 R% Q* f/ z+ r/ I K
1 Z& J3 k8 u- ]5 r* e( ?2 W" t6 z2 D6 C$ s! n. O) _) P, S0 ?
2 P* ]6 M& O2 k, r1 `/ P( p可见,最原始的算法,效果还是不错的,后面有机会会补充其他好一些的算法。: ~0 a. k3 A' F5 `' ?4 o
8 Y5 `* W% l/ }6 C8 z: @; C
|
|