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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
用MATLAB仿真基于直方图均衡化的水下激光图像处理
0 {: D4 V$ B% [- I/ l
$ U0 h* w5 F% ?  K! yMATLAB仿真程序:
9 P' {' E* x' I  y' Z( ^* Q2 O) ]2 k+ R0 m
%{2 v/ _1 R5 K4 o' l3 d, ^, K' K

6 K: K' a0 x3 `1 C# k2 H  基于直方图均衡化的水下图像增强(MATLAB仿真)& s7 I7 N% ?; L4 H2 U/ M. q- R& \
$ _" v: [/ b) W: w# J
  对RGB三个通道分别进行均衡化处理,得到增强之后的图像: l. h' }! Q. o( @" E0 e& O$ c- ?
" @" E9 R3 H8 E4 V/ D7 U# ~% e6 U; _$ M
  实际测试,效果明显,下面# @1 D/ c2 }/ F9 z
  r7 `( h" {$ y
  时间:2014年9月11日23:59:01$ D9 k  t: W  X

: ^; z/ A1 W. I/ B6 z  整理:天空之恋
( f$ c3 N/ T- {- E2 e
0 }# ?) d0 P* D$ B4 {1 v  地点:桂电4 D- j, P8 ]* ^& F8 E# O

3 v* K, l' X/ j%}
- l2 Q; d5 H2 O% |8 ?
- b9 B; c7 y  E2 R- L+ u4 w; Iclear;
+ s" H( j6 w8 f% M! W5 |( Z( E. f& X, V% t
t = imread('wa5.png');  0 F6 O" O3 {7 c: T3 V) t
6 o; {5 F. }0 t4 _+ b. z
I=t(:,:,1);
9 `' O9 ?4 i: V7 d
7 p7 U8 G) R- a1 [[height,width] = size(I);  
' N- u3 v, b/ B3 y3 ]& N" K( U4 S
( W0 L2 d' `. X2 v6 g/ {3 |! b9 F/ }subplot(121);% ]  a# Q7 j: I" L

/ A/ C9 D0 n. S% c' X9 Q. M6 Vimshow(t),title('原始图像')%显示原始图像   
: V. F4 O5 R+ ]* m8 y; p
* [4 D; X) E  B# i" q- r% v%对R通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
' ^2 l1 }/ {$ Z. h! x* w/ ~3 I# ]0 N% F" E  Y8 f( ^+ B2 k
%进行像素灰度统计;  5 `  T( C0 S( C$ m, ~1 r# r

) B3 S9 V; ?; {; y3 Es = zeros(1,256);%统计各灰度数目,共256个灰度级  
0 g1 N/ |2 j+ m) t9 i# r- C$ u4 n6 K3 o7 X$ n
%绘制直方图
2 t9 c( X% {0 L1 r; ]( b0 c% e9 z* r+ y3 b7 P% b
gp=zeros(1,256);5 K, O  e3 S1 G' r; r5 d; x. c8 o
. x0 M  n. `0 d$ L1 E1 m% _
for k=0:2558 ^4 u' D6 |4 v' n- U3 T

5 d  X$ Q. R4 }: Z    gp(k+1)=length(find(I==k))/(height*width);
1 x% S$ G4 p! R: b; \! L+ s* E" ~1 |( J  }4 {& E- U2 K
end
/ M5 Y7 S5 N, y, v1 q% \& Y) r! F6 X: o) Q7 `4 j
for i = 1:height  
* ?2 @$ C6 [- V& l6 o
9 b9 x4 B$ o' L8 A3 s1 H- G    for j = 1: width  : }- g8 j- i! w/ C
; a* O" y) j) w" g8 z
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  , E6 B9 ]! x6 m5 k1 b' j# S

5 |% }- c7 z! o, J" a2 U    end  
9 J) ^5 f* [' V0 _+ g! q( O
+ R  I& Q/ r0 ?% E# Bend  
  W8 q5 W( t' ~3 m! z, s% @& F/ l: }5 }5 s# u
%计算灰度分布密度  1 l" _/ X# W# l

0 v3 j$ w  j* v# g$ Q( ]p = zeros(1,256);  : o. V) M6 S9 L
/ G: |* X1 U! P
for i = 1:256  " j' K6 n, F$ |' w# B

' S, u/ S. E9 N- z    p(i) = s(i) / (height * width * 1.0);  0 O: ^1 F" K7 N4 l+ K1 a+ U

7 n( a# u0 K2 ~# kend  
$ t' i+ R6 ]# f5 H$ c1 n
+ y4 S. T, ]+ T3 V1 g# c%计算累计直方图分布  
: Y6 Y6 r% f# J9 r% b% h
  A7 _0 X2 t9 ]% e  s8 g0 \9 |c = zeros(1,256);  + p! T: P5 x+ q

# f1 S3 s5 W/ h& ?6 W$ C) f5 a0 g2 Tc(1) = p(1);0 ^9 W) Z6 B# ?5 @# C, V5 I: v
6 J* z/ B& P1 l% o- t2 {% X0 K
for i = 2:256   ! o# T1 @  J4 m* }8 w
6 P; u+ S3 \8 p* i2 K1 U6 N/ J8 [
        c(i) = c(i - 1) + p(i);  
3 I. M/ ?0 m4 ?4 z0 P7 Q( Y
# v! Q% Y9 ^. |  vend  5 I7 _0 I! Q; ^% V% Q, d

& c; ?) A5 Z) a( E# g%累计分布取整,将其数值归一化为1~256 ' ?6 h; g2 M. E0 a' G( A
0 s+ K5 M5 l* y' L! L8 w
c = uint8(255 .* c + 0.5);  0 v5 ^4 O5 h( p
2 k8 w6 L1 u+ S4 s  ]$ o
%对图像进行均衡化
: X- |2 H( q. q3 J6 _
( D& P5 n4 r7 q' x8 lfor i = 1:height  + N7 h9 w9 t, M" a! |$ h  G
7 K# r; W% d& g- j7 M
    for j = 1: width  9 n( \5 N; y$ J6 T) b+ ?1 X+ u

, W! X4 I/ n/ U( {1 Q        Ir(i,j) = c(I(i,j)+1);  
5 t* x0 c& U* }* X9 r
6 a5 D4 f# f0 f" X  G7 V1 W0 U    end  * o& b* t1 `0 n$ G: K, U: e* a

4 W4 k8 O; z+ L5 a& |end  " Z5 ^+ X8 A9 o& \5 l
. e- S3 W; E: _+ W0 ]
dis(:,:,1)=Ir;
& Z. t7 f4 v8 H  N1 T8 P
- b1 l" Z$ R, U7 k+ \$ b: I% b%subplot(122)  . a/ W! R2 f5 Q3 w$ b

7 F9 ?; {" Z* ~9 A0 g%imshow(Ir)%显示均衡化后的图像
$ n3 e; l! B# j8 e$ z
+ I4 o, M! c/ v* n. M%对G通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用0 s6 R' u1 c% }# e0 ~

0 T" ]/ h$ Y) M: W7 f2 GI=t(:,:,2);3 l5 \/ s) S  i9 [

9 r, W5 Y9 P1 q) p  d/ B[height,width] = size(I);  6 l, U, B  N* V8 j. F* S3 A9 B

& a1 j/ l2 \; z. ]
) j; f2 {$ j3 ~1 ~, L$ j% z) m: L1 ~8 ~, o' ~! b
%下面使用直方图均衡化进行处理
! M) T2 B+ k& ~. j4 l* g8 \2 J8 S$ s- ~& F: L0 x
%进行像素灰度统计;  * |: V# X; y+ R5 B, l/ B7 q

; T: f( I: k/ W* B) Zs = zeros(1,256);%统计各灰度数目,共256个灰度级  
5 q% p$ n/ l! H% Q! ]! c: R, a8 v+ F- x" M
%绘制直方图6 H# p  E2 e- E$ E

9 h; G! w7 j4 N, `6 dgp=zeros(1,256);3 E8 U- g3 O- y
8 U- ^# `$ U* y/ J* K
for k=0:2555 |7 [8 B# l( {& [- C

/ H4 j2 q% n( x1 R+ f; N+ v" ?5 a    gp(k+1)=length(find(I==k))/(height*width);
& ^' l9 _$ k! O( R' G% F* I
- B1 a- v* c8 I$ ~* x! o) kend
6 E2 p7 b4 k1 i! |3 Q3 _) I" x) Y6 b2 P, L3 s* t9 O. m! m
for i = 1:height  
' [+ S8 P' S  ^3 a  b* O' K% r0 d7 ^3 u( f& ^& N+ f! `' D
    for j = 1: width  $ ?7 H' f1 H" w) K2 t

  Y0 X6 m8 @1 ]: U3 G9 j. F        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
4 x5 m( [& [3 `# ?. n, W; a; q( O- d5 z5 ^, ?0 z
    end  
8 r# v* o9 z; p- p7 k+ t1 ?) `1 p: `/ O5 G; R  I+ Y: K
end  % V& b! G# g4 g) B  l* t
' ]4 j$ ~+ H$ A0 r2 V0 L' r
%计算灰度分布密度  , w- `8 X- K; O' i' J) |

9 p) l# q+ a: R0 ~" f* B' ?& A' C6 _p = zeros(1,256);  " S4 p4 c+ L. I* {$ p: I
1 d  ?$ D. h- W" S0 n) l* d
for i = 1:256  
) Q! G' o+ ~8 h* S- f5 N+ D
6 I& x5 v% {0 B" W; y) L7 {: V    p(i) = s(i) / (height * width * 1.0);  
8 |# o/ I! J! w! h9 O( q: Q0 H
' M2 R( o, p7 m5 Q9 m6 bend  
6 u* Q" c! k6 J8 s* p5 b. W1 i- Z# {$ P  ]" ~
%计算累计直方图分布  ) J4 Z1 t" D0 H- {

0 s0 \6 Z- @" T8 G% |( Uc = zeros(1,256);  * y7 M5 _/ v5 E3 i

4 A. c+ m! q0 ~: pc(1) = p(1);
8 M9 U7 O4 Q; n9 I( G0 U0 L
0 k2 V5 X! v2 l1 Jfor i = 2:256   
5 t5 u% H2 J. `' V$ M& Y
( b, {' H% G) @        c(i) = c(i - 1) + p(i);  / Z$ j0 N  @+ ]3 K
1 L. `: l( I. a, f, T
end  
4 C" m# q; j) W" c* P) T' Y4 Q
9 k* b7 |9 n. G9 S8 X/ ~  i* S%累计分布取整,将其数值归一化为1~256 ' @! w- y) g4 C* z- V
3 ~( o4 b) Z% {
c = uint8(255 .* c + 0.5);  ' `# H! e: J5 F& J# U

* s" D5 L- g  w. d5 l  C%对图像进行均衡化. J; m/ P( \- e: Y% I' w% f
9 N6 K4 i: z8 d; ]7 @+ B
for i = 1:height  
# k( J6 ]4 X* f2 M  k" |; }+ d3 T8 r# D! @. N8 l* e
    for j = 1: width  % ?# n$ I+ |. c9 x+ `
" F' f# t$ R# h) b- P3 ?& x4 f
        Ig(i,j) = c(I(i,j)+1);  0 R* x% L0 t/ s
/ A3 W1 {' k$ |# q
    end  ! W1 a! ~, |1 E) O0 X- @6 L3 q1 a
, ]& l' n6 \1 @% n4 _  x+ R
end  8 }  d3 D4 ]1 T
6 Y8 G4 T; J5 R6 I
%subplot(122)  / y! E7 h- z. c, ^- |7 t" f% ]

5 L# e3 r# u1 v! [( n9 S( Y%imshow(Ig)%显示均衡化后的图像7 f& R- T% n7 j" n7 W5 R' a: H

% x5 G6 a$ }) P, \dis(:,:,2)=Ig;2 W% @2 i; Q4 I# U  C

& v% U9 U$ Z# N9 Z  G  s# S/ x/ X- J$ m* ~6 Z% U" }

1 n! Z- K8 W7 v3 i$ V7 M% T%对B通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用" G) G& n. q6 _. j. `# ?0 R5 g
; P9 C. G: |( \& J) \& K! P' X
I=t(:,:,3);
  X  ~& M$ m# c% ^0 N
4 s+ j  v# F" b' v* X. z4 }6 J, N[height,width] = size(I);  
1 O+ {# m1 |/ Y* _" J% M6 K2 W5 f8 c% Q2 Y* l0 I, w2 }
; ?' g/ L$ ^; p

3 W, W% P* }% ?+ h5 B. t/ |%下面使用直方图均衡化进行处理
& c0 N" }- x4 {9 I" ]& z; v  B7 B  e0 c
%进行像素灰度统计;  
0 \5 i3 P3 O. f! X' P. V. e8 i; w
s = zeros(1,256);%统计各灰度数目,共256个灰度级  
5 a7 L5 F# a( K/ l2 j" T
- O' @3 J  O7 Y# ~8 Q: H/ O) H" O%绘制直方图
8 ^3 D1 o& R6 Z% o# {9 y5 B. j: D: B+ e% ]- i) ?% R
gp=zeros(1,256);
* r3 N' `# A2 B% X9 m1 d# b7 @
" y6 x6 L9 X: O/ N/ T9 Y1 R' Zfor k=0:255# Y6 R7 N$ o- q+ V0 K; ?2 s

8 l& n: h  V% }    gp(k+1)=length(find(I==k))/(height*width);
# ~1 J* W/ V, s5 E9 {
% v$ e5 ^4 L# |/ N  k2 i& }end! h, k7 S: V6 x/ E
7 f& w. J* x2 q% b: N7 B& _- F
for i = 1:height  
' {0 f* v5 l& E3 ?& d8 M
% j7 T  l1 j# d4 o3 D4 r    for j = 1: width  
  a# O; l( W1 V* Z% F. V5 l, T- Y
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  # t% f. s$ g  B3 h7 g
  a, Q- R2 Y3 P+ ^0 U
    end  & \' h4 F4 Q( H

! ?- X- g! a) H' uend  7 m; x% }- H5 @! R6 `* ~4 @6 T, G
& D. M- `+ v6 |  w
%计算灰度分布密度  ( M3 _6 E8 H3 t5 \" G) j) u# t

/ C8 a2 G2 N* ?, xp = zeros(1,256);  
8 N$ F4 ?6 e: [% h3 S# ?9 u8 y. R. k/ Y2 c! k; M
for i = 1:256  
, {/ L, C% t* ^2 M5 ^) ?6 P, \5 [6 B. A( m6 k- w6 u1 T
    p(i) = s(i) / (height * width * 1.0);  ) S' S) o: u& }$ o

8 W$ v& E8 c$ Q7 G" _! {) a  uend  
( Z- T6 T7 N+ Q* G3 c; M6 D5 i$ i
9 Q) }9 b' i+ e%计算累计直方图分布  7 Q2 g; ~9 u& Z, c; x
$ y, R: G: c+ G8 b
c = zeros(1,256);  - g6 Q; {- ]; ]+ [

; l& f1 M) A$ j/ Jc(1) = p(1);
6 z2 {: r0 \: p- h5 l' p0 G# C4 h" Z/ U" R4 v. t, d) e& F5 o
for i = 2:256   
4 n% x9 Q$ T/ W  @% Q$ U
+ }) C" H  s7 `6 o9 o8 u3 k  x, O8 I        c(i) = c(i - 1) + p(i);  
, r9 F1 r- h9 t# i" K8 s$ d/ M% s5 |4 y0 T  Y0 ?" r
end  
# ^* i8 \! L( s2 u" P3 G
% `- @; t/ I  y2 z: }%累计分布取整,将其数值归一化为1~256 3 C# o0 N# D7 a, o' z7 W: K4 ^7 V

$ g9 }4 S% m9 Q6 K3 oc = uint8(255 .* c + 0.5);  9 f3 n9 [7 x/ G. r# n+ s0 }

7 |! D7 a# |. _. `%对图像进行均衡化
) g( f9 `+ t) y. \) p
, {; f/ k  i; hfor i = 1:height  
2 u6 u+ S7 ?4 B8 l5 Y0 ~+ V$ \
! ^' M) Q6 d+ D    for j = 1: width  7 ^- K. }4 o2 b# m

7 @9 G/ s: f! \* f  A        Ib(i,j) = c(I(i,j)+1);  
& p! x/ e  E7 n7 C
0 m4 V1 e5 o/ u. h* f" g5 K( Z    end  
: n2 h- L! F/ h, z8 \' K. p8 w% J4 l0 [- r+ D$ l
end  7 z" W( k4 a4 j# ^. G$ a; d
- q- v. p0 N) l: l! b3 _8 m
dis(:,:,3)=Ib; * |& [! n: m8 y4 ~0 B% q

1 V8 Z; `7 I8 c" m1 k# ~! D9 r% O%subplot(122)  $ J. R, |- r: E- h
- m  x) K) p. h- |- J
%imshow(Ib)%显示均衡化后的图像 $ j$ W4 E% [' p: I0 Y% E, r. C

/ s# C% ^: w7 W) Xsubplot(122);
5 Z$ \3 U( \' q; y8 ]$ [
/ }6 B" x" e0 K8 t8 Eimshow(dis),title('处理之后的图像')%显示均衡化后的图像; i/ z/ t# ~- x9 k; M) j
1 G* z3 ?4 ~8 H# A3 ^

; G6 A( ?. G5 `! Q$ w1 ^, J  t+ `% Q9 L6 F6 K3 o
  • 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 13:18 , Processed in 0.171875 second(s), 23 queries , Gzip On.

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

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

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