|  | 
 
| 
基于MATLAB图像处理的白平衡算法,也称灰色世界法5 Y  H7 m- |0 A; u2 z9 }6 P/ W4 b* l
x
EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册  
 % y4 ~# F; W1 o) B" T- z* [# R  i) J1 s* S* M, M7 W2 Y& U5 P& S
 白平衡,即所谓的白色的平衡。
 : f# O* c  ^6 [  N0 E0 t4 [# W
 8 Q" L; D' W% P5 E, a白平衡的算法有很多,这里记录的是最简单实用的白平衡算法,即灰色世界法!
 6 F8 p$ N" z+ b  j( k/ l8 e) R- z0 o: F
 灰度世界算法(Gray World)是以灰度世界假设为基础的,该假设认为对于一幅有着大量色彩变化的图像, R、 G、 B 三个分量的平均值趋于同一个灰度K。
 0 j- J$ m1 K4 k; _5 z, o' }4 v4 S) F+ G0 h1 U, J4 T8 x
 下面是具体的算法代码:) f3 n) p1 B. n& t; J: ]
 
 / I7 v( o; l3 p& z& C
 9 t  w, p3 t2 a2 ~
 : m; {- N5 Y4 D& O  Q% {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);' M" _, U  S6 s1 Z
 + j. l/ X  X2 d1 N9 _
 ) V4 I2 l$ E( K3 @) Q# g6 ^
 $ }  E+ Z+ \% W/ ]
 下面是算法的效果:/ `( `, m' Z% A1 r# J5 g9 M
 7 P- f# I, j. o1 h  E, o6 V
 原图:) b2 B- ?- i+ t, ~3 f% j# A+ {
 
 % J; _( f: h8 e* Z" m) v  h+ m& ]* M
  8 Q( J( o& b; O0 e3 c0 J! l  R: f 
 9 E% J/ {( L; U9 a: l; U& a8 ]8 y5 g: j2 o( ~& s
 白平衡之后:6 |  I7 d8 e2 g$ z! w
 
 & i, [! x' ^# a' E& |
  7 Y& A( n5 C' l! \8 h 5 M' D% C" v( t% b0 a
 # q) D2 R( l9 L. Y0 y
 可见,最原始的算法,效果还是不错的,后面有机会会补充其他好一些的算法。
 / w: |: `% k( O: G* B( C/ G: [6 v9 p$ r1 N; X
 
 | 
 |