|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于MATLAB图像处理的白平衡算法,也称灰色世界法6 v7 y8 B6 `( H6 |
2 x. H7 x: e R e, i9 E
2 I3 F8 V6 S! Z, t白平衡,即所谓的白色的平衡。4 U+ Q6 d1 ^1 @. C. }& m
) J; R6 m* }3 T, U白平衡的算法有很多,这里记录的是最简单实用的白平衡算法,即灰色世界法!7 g w( j: ~: v m! e( n0 a" `
6 w/ ~% J* e9 F% R' ]. f. l灰度世界算法(Gray World)是以灰度世界假设为基础的,该假设认为对于一幅有着大量色彩变化的图像, R、 G、 B 三个分量的平均值趋于同一个灰度K。/ z! u C6 W# Q: q Y$ i/ U' B& {9 w
1 s; R8 W; r$ M8 R d$ ]下面是具体的算法代码:
$ B- I+ l1 t9 H# @- F4 f0 G# u8 y
- b; g( I, |9 D( d* G: Z/ T
! H5 u4 Q: p8 h7 w0 D) I- 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);
: F0 N& q" d' c2 P8 m- \7 }
# T7 P3 T z) m! R N; v0 X
% ?2 C" O/ E9 w
) B4 M$ e* c, q1 h
9 h0 ?6 T* N: A. F0 T3 j下面是算法的效果:
& z9 J {) f) K6 }
% X0 a& r* y! [" p2 @% z8 o原图:
4 ~" l) \( F0 x3 d: ^
0 O8 T- ]; _4 W: Y4 O# j, ~
; K7 m# V4 V6 }/ u" f$ p( _! _7 o! r V. r6 \3 ]/ D
1 M: E6 A! p; B$ s, F7 H白平衡之后:# O( s' d7 v* u" E
4 t9 K, k3 p o. d, b# x/ V6 g& |6 y
/ B" I! y7 h; w( p- k
. v: r6 j- U5 m) b6 B# ^; B4 U
7 v" ~2 ?8 o# Z& P可见,最原始的算法,效果还是不错的,后面有机会会补充其他好一些的算法。6 b9 d6 w- d8 g2 a& a
; S1 N! c' J$ z& S |
|