找回密码
 注册
关于网站域名变更的通知
查看: 384|回复: 1
打印 上一主题 下一主题

用MATLAB仿真基于直方图均衡化的水下激光图像处理

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-6-23 15:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
用MATLAB仿真基于直方图均衡化的水下激光图像处理) Q8 o9 m6 {( C. y& e! S4 ]( X
: G  J; _! }2 P+ E3 Z4 w/ R
MATLAB仿真程序:) w" g' T6 G7 V$ q$ i/ N
- J" i* N; \  o4 d1 z. z( k
%{
: v  Y3 A+ Z' o  f8 l
8 r2 o) L6 y  f3 Q0 k  基于直方图均衡化的水下图像增强(MATLAB仿真)
' T! d( I4 J4 Z1 c9 h: ^+ F  b7 }3 M/ r1 o
  对RGB三个通道分别进行均衡化处理,得到增强之后的图像
6 o. B4 F# i4 [% }0 h! u3 h
2 h( f: Z' l) i" T  实际测试,效果明显,下面
. X2 B$ l9 l$ Q% |, h" n/ X& M
: h( ~( Y: V  n; a  j9 h( B3 ^/ f6 d% I  时间:2014年9月11日23:59:01
* Y- y2 g# Y+ p6 q0 L2 o1 {% _
7 C' C- S/ c2 A4 i  整理:天空之恋
0 k1 U: _9 w% u
8 P' L! f; H$ v* e  地点:桂电
$ H# R$ r. V! j( e& r4 k) L4 F) E; Y. v9 T
%}$ w% J; p1 X% Q* S3 u

1 h4 |& h( r% ]) V1 A0 oclear;& D$ A) Y/ _# H/ P: _" v7 q9 ]. q! d, R
6 K; s- f- p* O0 v# \
t = imread('wa5.png');  
+ S! P4 Y6 q  z8 ?0 [. [; q9 S' U
' `. @$ S; P/ K0 |3 wI=t(:,:,1);/ b* s; l! q7 o- p+ ]. h& w

$ ]$ e  W8 G# O0 q[height,width] = size(I);  
- b! b2 }, t) f$ m7 L) ~' S6 c, ^; {+ O; E9 S' F
subplot(121);
4 t) q! W: V" `' s; m' y' A0 O5 X4 }# l2 G9 @
imshow(t),title('原始图像')%显示原始图像   / W! u: B8 c. K& W) d4 d' x
  `/ [. V) J- }. n6 C' Y
%对R通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用: }& h; D( x9 A, }3 D

: W8 B( m: {0 j5 V6 u%进行像素灰度统计;  
8 q6 b0 W/ E2 d* R8 Q) v
6 _1 e8 C* Y; N# s, G3 k& W: _$ q! Ss = zeros(1,256);%统计各灰度数目,共256个灰度级  
; H. E* G) s) Z! r& G$ I8 g, }/ T: q
%绘制直方图
7 ~! {! R" B/ D& J! v% b& H
  y0 [. W4 p3 g5 |( Egp=zeros(1,256);
# F6 T: h/ m+ J& [& @  a& ]* |, w+ c$ W
for k=0:255( a) X( F- g$ z% k
$ n3 |! t: @* |2 Q5 m4 F% ~7 a" W7 K
    gp(k+1)=length(find(I==k))/(height*width);: Y# i  b/ z3 U  Y' b

) m) x) Y9 W& D0 Vend
0 J) w! }, p( t9 g& \3 H8 K+ X" L5 l/ C& p: M6 N
for i = 1:height  2 @; P, ?8 y0 n. m

$ S5 `6 |3 w6 C4 Y    for j = 1: width  ; W- P% S) K/ H% M  q6 K: z" q
- [9 p0 z: ~* j5 j  X
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
/ }* K+ q( `. U9 t9 E
  a; @  M! p9 T1 |: L% a    end  6 N* @* r7 s1 Q; @) A6 w$ e
- ~3 ]  ]( q4 h
end  , Z! |# _" b* @& X$ y, V
6 b0 [; |; y! W$ m, c% k0 W
%计算灰度分布密度  
& s+ @( k$ C" c  \8 w  L# Y% i* I3 L
p = zeros(1,256);  ( G! h0 S1 p5 e" t2 e' L
6 |% [" z! t# t+ g3 Z6 r
for i = 1:256  
  Z$ R  b* z) A
! F& \0 x/ D) c5 o    p(i) = s(i) / (height * width * 1.0);  : e( N' S, _' R, h
; {/ g! Q2 W* g1 C  p2 P3 X
end  
. ]  S5 L  Z' r# F7 O7 h6 U1 A
4 A9 [8 u. w  c# W/ V' Y# p" l%计算累计直方图分布  6 Y7 h$ x/ X0 B* R, i/ l/ U

4 x# a+ T& ^1 Ac = zeros(1,256);  2 Z, Y2 m8 T% y+ x5 k
  _4 l3 l# H  V! X; w; j
c(1) = p(1);
4 z- w' |6 S8 A' a# L! `: @) g8 b
; L  q* k: A+ \; V2 ~! w/ Afor i = 2:256   
. Q# z' \& N7 p2 B' R6 w6 a7 V' z  A! g/ o
        c(i) = c(i - 1) + p(i);  
0 E! k/ r: P, M- \2 O% ]/ W+ p. ~* m& b% `+ |  n. W+ V
end  $ Q: z% O- o7 U+ r! \7 X; _
! D/ R5 {. |4 e, }- c& I2 X
%累计分布取整,将其数值归一化为1~256
* d, k  J' h/ g+ o$ I0 Z$ z- H. ?
, x4 M* ]7 k' _c = uint8(255 .* c + 0.5);  ; J7 P- W" @0 G' S" c

/ w6 I' }+ d. Z/ \%对图像进行均衡化# u* U* u% R( u3 Q4 r" _) k  R% ]* P
# w3 G: N# ~+ \3 _
for i = 1:height  9 f. I! F* l% C* O

& y" }. @4 q4 u$ d/ _) D5 u0 W    for j = 1: width  9 o/ k2 l- U+ h5 I
4 K6 k' Q# _% ^7 H3 @% r
        Ir(i,j) = c(I(i,j)+1);  
+ c! s; j* S) _2 I: W! F! ~1 x# b* z; x
    end  3 u4 j' x8 ?4 u/ g/ X5 a
7 m# f# M2 f0 q/ K
end  % M. a8 y# ]% }
) C7 }, z9 E8 W1 @+ i% C+ k+ @
dis(:,:,1)=Ir;
& C# ]" `* Z; ?3 b9 v: s5 }# P9 X. F! p- E- k5 _5 U
%subplot(122)  0 `' a* `" ^2 M/ t- J7 A% L

, w; c4 {* l* E( X, z: G- ^. J9 @1 i9 F" W( e%imshow(Ir)%显示均衡化后的图像
. _7 v8 u0 B9 C2 h# s5 m/ y6 n' S, z' ~% d
%对G通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用% A1 H) W" G0 W7 g
, K9 z" q4 V* L. i: U5 M# D, C' p
I=t(:,:,2);
  X. I9 Z! u4 _2 X2 _1 E& a1 j! r( I! _) u' f( x- i, o* a9 D
[height,width] = size(I);  
1 N4 t+ @) Z8 m7 p0 `, o# q" ]9 y  D0 D3 {% P3 s: z( _# ]

8 k, P+ K0 K/ N, [3 _' l+ f9 O
3 {* ^# K, L! ^$ X( e) J$ l%下面使用直方图均衡化进行处理: O) d) i8 h/ m9 {9 U. Y
* r5 ?; P$ v: I
%进行像素灰度统计;  
7 }- B' A, A+ Q! B! `! F# H/ `% p3 J0 \  ?1 n
s = zeros(1,256);%统计各灰度数目,共256个灰度级  
6 H# N: `& p1 ~& r+ D8 ]
. T' P0 m: }9 h' T8 t%绘制直方图
" P; |% C* K0 _! U+ x+ G
# S- p5 V! {( Z# x( mgp=zeros(1,256);. Q+ W9 e  I+ v" V# F& Z

+ s# p' _6 G. w/ t/ v. a" lfor k=0:255
) Z( g) A+ f8 C8 H/ e8 c9 j4 h: i; q0 l/ a3 `8 Z' K& R
    gp(k+1)=length(find(I==k))/(height*width);6 @2 p2 N* A/ G% ]. ~

( D8 m9 E7 A  U+ A4 vend5 a( y) }+ V1 L0 y) L

0 A+ u' S7 B0 V, y' c  yfor i = 1:height  ; Z: p. ]. a2 X7 R8 y, O

* O  g  v" E; b4 X  I    for j = 1: width  0 Z' J; b# E& L/ m) y9 \$ l3 v
' f) a) U! d) j; l: I
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
7 K& }# k. C. [! ~
* Z. u9 r3 N! z! @6 Y8 b7 y0 h    end  
4 ?3 n- \) c# ]
  M: t  t2 N* M$ E8 n9 c: Yend  
# r1 c2 o4 [4 D
4 F4 X. m; A' A" G% c9 E%计算灰度分布密度  ( J8 g0 d. \9 P) r# y! `& z& H
& c( p( ?. T$ p2 q8 @1 D+ Z" }  {
p = zeros(1,256);    T  P& ]  t: L* U3 a9 A4 O
2 p8 P$ |# J( \" D9 _4 D, O
for i = 1:256  - s0 j" I, I+ H3 U7 O: g8 C1 g

9 q7 m: d% `- L    p(i) = s(i) / (height * width * 1.0);  7 I( K! s6 M" H
  N0 t& v7 I- ?/ s' u
end  
( }" U: G; {3 T& U4 e: K7 E, W$ ^& c; G
%计算累计直方图分布  
; U8 N( g' s# ?2 Q+ r
3 c, a$ G3 j5 Sc = zeros(1,256);  ) W8 a; S# b; H1 G$ k

5 r8 q8 P: y9 S- q- j& {6 [1 T7 Ac(1) = p(1);
6 X# ~5 _  H6 K, F1 D; K6 y" _$ w2 J9 U1 m2 K3 A9 T: y* U; o
for i = 2:256   7 G# m4 M0 L& d$ ]0 U2 l7 Y/ @- l

# P  M/ v! }# R, \( ^% `        c(i) = c(i - 1) + p(i);  ) }# D) ^" i, @6 l
3 i- ~* r, |# P( F: m
end  * z3 _/ a/ I0 }& ]$ J1 W4 T& i. i

, x3 F6 P9 m/ V7 J%累计分布取整,将其数值归一化为1~256 ' G/ [5 T* ^5 b$ `( J2 f1 O

+ w& U6 Z7 j  F6 u* Rc = uint8(255 .* c + 0.5);  , K' S9 q- `! w* J2 x1 v
. b, ?4 m8 Q) d# I  K+ K7 O9 q+ d
%对图像进行均衡化
6 ~7 N5 @1 y, K- s' n2 o$ A; K# w
$ J8 L4 [( p+ b# Ofor i = 1:height  
4 J) ~! n% j. G; ~" m1 i8 ~; P( n( d# B2 b+ I: v& D
    for j = 1: width  0 }+ s- Y, `) G$ p. N, E

- Y& y3 \& t8 G+ ]1 b% g        Ig(i,j) = c(I(i,j)+1);  : o+ {+ N' S- ^" J6 s& r
7 X+ R" ~' d! x8 o( N7 i# U
    end  2 h* u2 O' ~4 l) L

( B9 p, X2 ?4 e0 ]end  
# M) w$ o- J5 ~+ t  @; K0 Z! l8 I/ ]- l7 ?3 I
%subplot(122)  
+ t& A% c# ~" X! L& Z
/ Y8 _$ _9 j5 ]) x; I& C, W%imshow(Ig)%显示均衡化后的图像( ?6 j8 ?8 i& s$ X' d" v' m6 @( [9 @

# Y$ |: [$ K5 T, q& V+ w) Mdis(:,:,2)=Ig;
2 ^6 N! ]8 c# e/ N% `+ `/ G+ l* k2 W4 n' g7 e3 s& Q7 l

9 k9 r! f" ]6 l1 j$ s$ D: `; \* J. ^  A$ r8 A& j6 X
%对B通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用2 _8 y% Q/ c) L8 |/ v8 P0 T, f. i$ V

+ T7 J$ D* F# W/ `# l' II=t(:,:,3);
+ D* P0 B1 [; y8 f/ V
" ^% p) g6 r# a( Z+ T[height,width] = size(I);  9 x3 r4 w- c0 B1 t/ {) U
, M- `+ E6 S& {( F) [0 D" J, ^

% f- D! r' U" U  u
4 F0 G* E' o. @9 s  q4 a( G' U%下面使用直方图均衡化进行处理
' q! B5 `* Q! D& h! o3 W$ W+ T: j% H, @1 d" M
%进行像素灰度统计;  ' M0 w( u$ |) M: L* ^: r

$ k- c+ R% P1 w+ i8 rs = zeros(1,256);%统计各灰度数目,共256个灰度级  
' b4 [+ ?$ T% e+ ?
) X! M* _. J$ ~# ^5 r( J' R%绘制直方图, ?' [6 ^. h' B7 D. l

1 y( U5 ~6 I# t, _# \gp=zeros(1,256);% f2 z$ R% _$ U

3 z+ ]5 Q% ^( t/ rfor k=0:255. h6 Y: o  o9 o2 Z, m

. b3 M) S1 ]. J: Q; e    gp(k+1)=length(find(I==k))/(height*width);
4 A  p% R. W/ z( D; O* h7 z9 G2 ]8 A5 W
end) b0 s6 O. H; m8 b5 M' n( g

5 a. q" l5 w) L/ qfor i = 1:height  7 R9 r- n2 B9 N

4 T/ N. {/ p$ ~/ o1 C: X) p3 R    for j = 1: width  5 {! {- i- L9 Q

: u# G" _; t, `. X        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
0 j/ N9 y0 J) C1 w8 |& h1 t; C" {% L- e; I! U
    end  6 n/ v2 I& s6 g6 J& ], f& ~# v; ^
( v0 U/ U, I& \" h8 h
end  
$ V* t* u+ p+ D; ]* \
: x! T8 I8 a7 z. d1 _) G%计算灰度分布密度  
3 F1 F6 ^" ]5 [9 a4 b
: D3 d) H6 P7 r' pp = zeros(1,256);  
8 \, Q8 w' m2 g% K8 G
/ ]( _3 f$ z; W; [  z, ]for i = 1:256  ' H& P0 {8 m3 |5 w2 X9 K: x5 h
" E7 J6 h- [* p0 `7 U7 B4 H+ C; X7 Q
    p(i) = s(i) / (height * width * 1.0);  * [* y: I+ v( l6 b

# E- e  B& e1 A% P! i0 T: y" [" ]end  
: b0 d  e- T. [( p7 B( L0 j: z2 k- N2 y" ~6 k8 l7 n
%计算累计直方图分布  ( g, f* v% U; D# H

  L# v; N# }& |3 }c = zeros(1,256);  ) q/ n8 {5 q# p$ q; D6 R; z5 O
" Z( b5 G8 M9 g- H/ I
c(1) = p(1);! f4 x7 l; A# z! `: _  }$ s

/ o, i7 {5 U& U$ G2 efor i = 2:256   
- [0 y& G! Y" ]! D, d8 s: O. I' O4 X9 M
        c(i) = c(i - 1) + p(i);  
4 V; N6 t4 h, j# a6 Q+ }
0 @$ w- q. g8 N( O: l7 ~end  
5 o) Y1 K& m4 g4 ?! I+ n
5 f0 o$ V7 P1 J  y8 {; W%累计分布取整,将其数值归一化为1~256
, `( m0 f- U1 J: |+ |
" V: s, \& ]& U  n2 C4 dc = uint8(255 .* c + 0.5);  ' {9 Q" y$ Q' {$ p0 t9 ^; y; G

0 U; H. h# O4 }$ H- V9 C%对图像进行均衡化
) f4 H: s' o: I  g% w$ L( d! U. M2 F0 s2 L1 i
for i = 1:height  ( k8 V7 C! w& B

4 Y7 B7 I$ J! ?+ a. s    for j = 1: width  
! f5 L4 n) Q. G' @0 \% Y; S; Q9 {: k; Z9 @2 t! i& n0 G. c
        Ib(i,j) = c(I(i,j)+1);  / v; s" U" `" S6 p6 u
0 u% y% Q! p+ Y% ]) a
    end  7 z( R' ]% G* F* U

6 o3 `5 R) v% N' C1 D' }end  ) f! Y; E! m) T: ]6 J

! I5 q6 n  Q; ?2 Tdis(:,:,3)=Ib; ! F' Y5 K5 p0 X9 K( v; m  [

2 z" l- _0 |5 [- ]1 W$ p%subplot(122)  
; l+ M$ T, C+ o- Z% @; V) S8 \
%imshow(Ib)%显示均衡化后的图像   J: e9 i, W1 G% ^* x
9 K& X# b1 C( |/ Q1 Z
subplot(122);
5 J5 S" @" f0 V# X  l0 y$ R4 M" f
+ M1 M- C3 c9 q  H1 c2 b+ A2 uimshow(dis),title('处理之后的图像')%显示均衡化后的图像
4 X1 i, j6 y' }; m: R
0 V' [- @/ _+ d5 T$ y. b/ v4 T% [
( l- [5 E6 E$ s, l% V: `! V7 r- u: h) L; i& M, U
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-6-23 16:58 | 只看该作者
    用MATLAB仿真基于直方图均衡化的水下激光图像处理
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 12:24 , Processed in 0.171875 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表