|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于MATLAB图像处理的白平衡算法,也称灰色世界法
; g2 `% A X( U t9 M5 ~5 _; q/ d1 f: p; q" C/ B m- A4 M
% g' F' P* b" i6 A* A
白平衡,即所谓的白色的平衡。5 [, ^' j2 E$ c9 ^8 S$ M2 p
: e4 B9 b, u- u y2 k% z# R; U白平衡的算法有很多,这里记录的是最简单实用的白平衡算法,即灰色世界法!0 c W$ g8 I0 ?2 W( w0 f7 m
; _# a6 t# b& f f
灰度世界算法(Gray World)是以灰度世界假设为基础的,该假设认为对于一幅有着大量色彩变化的图像, R、 G、 B 三个分量的平均值趋于同一个灰度K。1 Y$ c0 l0 Y" K4 T n3 z
7 n2 ~7 D- e1 I9 X下面是具体的算法代码:' Y3 M; F. I4 J5 S& i/ Z
; U/ f, Z3 h9 J" T4 _: |
( t4 t3 n8 m; ~* V! r' 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);, K% j' A9 H- ~7 j3 F1 N& y" h
. d8 o4 t4 X5 s! g% ]2 V, j. Z; O6 s9 E# [0 v
9 L3 Y& D1 r: y( `0 E+ I
( \) y' U" C1 g& z: O( u) I; |下面是算法的效果:
9 K4 _# N+ g% _$ J4 U- b: B6 @' }0 V4 ?& b, R- i/ j3 a
原图:
2 c3 H9 a2 ]. J% V8 k) M
. e! l1 _& Z$ `9 {9 ~: V4 k A2 l }
8 Z' D; I$ A( {3 s, ~; K) O
# g9 a$ v0 X% f5 f" C0 T
1 i. Y: Y& b. G白平衡之后:: [% B7 w1 X: F' r: _. h- K/ x8 Y
2 z! T) C" g1 Q0 g+ i# j5 Z: l
; q2 {. G( {. I) X4 {0 r# B
- v' U2 V# q7 i, C3 s
4 ^1 p7 {/ D% @. g
可见,最原始的算法,效果还是不错的,后面有机会会补充其他好一些的算法。
; @( U5 L; ] _( T4 w. }* h' Q. X% y7 A! D/ C# f0 P& V* O
|
|