|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于MATLAB图像处理的白平衡算法,也称灰色世界法7 Z1 L( r" A* Q4 I
1 S5 @! A* @2 c% {6 `% G) y$ f% P
; D$ T5 Y/ j1 E' p P0 y* ^白平衡,即所谓的白色的平衡。
/ s8 x w R5 E- n3 U5 ]" ^* S' \4 e3 L; \
u' t& B9 u7 f1 Q" \1 p/ }9 g白平衡的算法有很多,这里记录的是最简单实用的白平衡算法,即灰色世界法!5 m5 o7 X2 K" Z: |! @
/ _* s6 O. R! ]0 n$ z
灰度世界算法(Gray World)是以灰度世界假设为基础的,该假设认为对于一幅有着大量色彩变化的图像, R、 G、 B 三个分量的平均值趋于同一个灰度K。. K6 X1 S8 B7 G
. Y% m* t9 v; S7 g& J; S' X9 H下面是具体的算法代码:
* M: f7 f. ?2 ^; k6 m2 ]: x. J# }( U, l3 I& S0 }$ V
0 t, P: j' f/ f5 f6 S# m
- 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);
6 P* E; J; V+ s, T' \/ w4 ^
5 Q& Y ]) ]3 y _% d
7 `+ i$ V1 Q3 j* I6 s1 Y) E; H" ~4 l% _0 `& ~
4 J$ ^% f7 K7 _- I5 e0 Y$ \5 Q
下面是算法的效果:
1 B Y: ?; Q# ?$ j3 `' Q8 T* T. N
X" B) Y8 y( d5 o8 R原图:
' x; J$ f5 \, l# ]! n! Q! W' p$ G8 s, V0 H N& L( C
# t+ l0 K( v" ]
8 j) v9 d2 v9 \; B! i# N d- `
. v2 w$ p" a8 C% D z( A白平衡之后:1 L5 q5 L& D [ P
- J8 I3 g5 R4 o: ^) K
5 j R+ f1 d2 ]$ a3 y) f# _
7 A# A/ l8 E: C" n. G3 c; w( I( r( m7 c& Z6 r1 }3 v3 q3 T" E
可见,最原始的算法,效果还是不错的,后面有机会会补充其他好一些的算法。
% c( l/ Q0 I! P, ]) m ^4 z) b: M5 @$ R& N
|
|