|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于MATLAB图像处理的白平衡算法,也称灰色世界法# x5 B# F+ @3 `/ ]) S/ U
0 G4 k0 c4 J, q
7 ]- B$ v; u; j$ Q2 s2 o" ?
白平衡,即所谓的白色的平衡。9 Y; n0 `5 Y: E7 l/ R' c
+ |+ X/ g' Q7 m/ M2 g% C
白平衡的算法有很多,这里记录的是最简单实用的白平衡算法,即灰色世界法!. r6 l- H% `. ~- }, W
! T8 ^2 d/ R4 f0 o灰度世界算法(Gray World)是以灰度世界假设为基础的,该假设认为对于一幅有着大量色彩变化的图像, R、 G、 B 三个分量的平均值趋于同一个灰度K。
0 i4 [6 A3 O2 ?9 P @: |: X0 Y2 D; g' C
下面是具体的算法代码:
6 d' u9 |6 Q3 e3 P1 g8 b0 g S E& i* E) }) T$ Z
3 R1 x: [; y7 t* `1 f8 {* ~
- 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, |, k0 n+ O4 k' x1 V
& S! ~! {7 [) B0 T+ `8 D5 M9 J( N7 o) W
7 n Q" l& q) d2 G" ^/ R
! r" h: p- _5 D8 S4 D下面是算法的效果:1 K& ], G- M0 L/ X
" U: c+ l, U; F; j. d5 v原图:' T9 K5 Z; F3 V3 K G! d$ O k
! {8 L* k" H' W) ]- R1 `% m, G
4 Y' y: c- d/ l+ ], e( h" M
( y. Y/ K+ b# |: b4 I# p g( P! L' o# w0 m, u" k6 X- [1 ?
白平衡之后:
! m( d. `6 B- B; z0 l9 R4 Q, q0 o& s; V/ y# j' Y8 C; l" u
$ d! g& E+ n) s2 K; C b9 o5 |$ L- h1 k3 K
6 p6 D. b( A7 L可见,最原始的算法,效果还是不错的,后面有机会会补充其他好一些的算法。
# U6 o8 R" _6 ?+ [
' b) ]/ I$ m/ t1 _% I |
|