|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于MATLAB图像处理的白平衡算法,也称灰色世界法/ ]5 W$ Y. G& n
$ G4 C: [/ I- Y& J( Q+ D/ R2 V3 u
- {6 x$ ^: D5 r+ i白平衡,即所谓的白色的平衡。
- i5 i6 a$ n+ X, m; E
6 b" t, ?/ y+ Q5 a l4 U白平衡的算法有很多,这里记录的是最简单实用的白平衡算法,即灰色世界法!
* c6 o9 D" B: q- C: B0 R: L" v8 [" `) n. \
灰度世界算法(Gray World)是以灰度世界假设为基础的,该假设认为对于一幅有着大量色彩变化的图像, R、 G、 B 三个分量的平均值趋于同一个灰度K。
) Y V/ T l" F! @, z( a# r2 J
$ |- l& w3 ~9 v& m: n下面是具体的算法代码:
( Q; n7 s0 E2 [0 b8 [+ X9 ]4 Y) F) U; e& \( M
6 a0 p' `; t" ~
- 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);
& `) S& B" Z1 Y! ^$ y5 ? + b' h/ v7 M. M; p- s& O# u
% F# p7 Y( Q- y: R1 q
( {; i2 r4 C3 L' j3 a1 }7 N9 @
$ B' ~, W, ~6 A0 N8 [0 x" L1 R下面是算法的效果:& c8 w* s/ y; t( X6 a2 p0 M
{9 W0 h7 U# `! r% V
原图:
; r: ? p+ J. i5 G% c
) K. H+ |# f/ |$ W1 u
) d8 M* C/ _: A9 A% E8 R; Z1 l S) ]5 z" B! g1 ^/ O
+ j8 y1 S: O1 k/ N/ R3 k" i/ Z
白平衡之后:
5 }, r2 K: R# l R1 H+ j# O. K. d3 b1 M
* l& a1 u% M5 p$ ^' P
; D) s+ A. s1 ~, F' u4 X' C: U4 r6 H/ x( Y- C1 t9 L
可见,最原始的算法,效果还是不错的,后面有机会会补充其他好一些的算法。
) \$ M8 F# o3 E$ ?- F9 \8 O) ]) Y+ ]4 H
|
|