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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
用MATLAB仿真基于直方图均衡化的水下激光图像处理
. N+ ^0 U$ b# \$ ^! j4 l, g
& i( Z8 c* k1 x& @8 X- N. g- fMATLAB仿真程序:9 h2 }7 Z% B3 h

% z: `0 q+ ^( G5 B" {%{( b, W: p' Z" L- P  ^5 _2 Y8 h

) e) e8 x3 F" H4 R& D% q  基于直方图均衡化的水下图像增强(MATLAB仿真)
" w: [. u4 B1 ~: ~0 A' V" \9 v3 p) k) J) v
  对RGB三个通道分别进行均衡化处理,得到增强之后的图像, L: B5 X& A( C
* A/ j) _% G1 x
  实际测试,效果明显,下面
' ^9 P+ W+ H( ], e7 R, F0 E
7 Z$ ]" f% e* R7 P  时间:2014年9月11日23:59:01$ }# \8 P, z, R) [, p+ H; ]

# L. V5 f+ d4 w: y+ _1 M  整理:天空之恋
7 d. H# i! D( y: q. I! _7 c
8 i, m1 {* C/ u/ T  地点:桂电
1 Q- m, V- l+ w* W, M
# a  `" w/ Q' M%}
% `) D2 V7 S2 K5 Z6 ^6 C2 r( k4 ?0 _: w0 i" d
clear;2 d- F+ O! }5 s5 h+ l
4 @9 }+ j" V# l6 Q# ]
t = imread('wa5.png');  , I: g( x% d+ \
$ w( n; ^0 U; m. i" H- _, X7 m
I=t(:,:,1);6 O( Z2 u8 f7 Q/ L* V

4 F# K7 w. m  b' a) P[height,width] = size(I);  
4 b. d9 j  ~3 o) W
; @! a3 e( v% T9 fsubplot(121);
$ I4 A/ a, K" {
* k  V4 B5 G& aimshow(t),title('原始图像')%显示原始图像   ) l7 a! D( T) G' g2 K

! R! b$ |. t: x# M- C%对R通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
. }; s+ @% m3 a0 v* Q# @
# e5 ?* _) v: ?, d  n%进行像素灰度统计;  
# @+ Q+ {1 G7 p' G
& h1 j, I6 S4 ~' S2 F- Cs = zeros(1,256);%统计各灰度数目,共256个灰度级  
8 `- c2 M) L% v' `! V% p- ^6 s4 d  _" D, P
%绘制直方图2 b% q5 W* ^" {. n5 l

2 u6 p8 {. u! R) ?/ dgp=zeros(1,256);
; K- j& [6 j' Q1 S9 R
) Z$ j% P; k# }" k& r* e! Ofor k=0:255
- m8 `( s7 Z( N& o4 I3 k$ o$ x& G( u2 d+ O
    gp(k+1)=length(find(I==k))/(height*width);
4 n3 n7 Z9 V* c/ K7 ]# P! M" Y" M
- I+ p' H: w4 Yend! n( B" A+ \6 n' R$ @& x; p1 i& x

& q7 |  M0 M7 ]3 zfor i = 1:height  
6 C, ~* K, |  X5 F5 p( h! ]% a1 n# W
    for j = 1: width    S7 Y. Q5 h% O7 }: r$ U  S
1 G% @* V/ T2 o) i" T
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
6 R6 ]. y, ?8 b3 ^$ O  x7 U  g; x/ J$ e- n0 q( q# n
    end  
2 \4 R+ V& k( [5 i3 T) h$ ~/ {+ T! `5 P- [: z2 _
end  
: R( ]( v/ @- L8 X8 E. {+ |9 Y' J$ {+ Y& f" |- ?1 l1 T2 M2 v7 p
%计算灰度分布密度  
: a# e/ G  F" Q/ s% ?0 w% x! W
' z* n: W$ e: ^p = zeros(1,256);  
: B" q  i/ b# |: [# ?" i
& A" F$ X7 U! V: q0 _" mfor i = 1:256  
! @& ]5 |9 l: N& M2 B
* ^, q& O9 L7 J. z) r8 H/ h    p(i) = s(i) / (height * width * 1.0);    i* z! j2 y* P) m- a1 U) Z

. J. m7 d/ o+ N2 F, z) O' |; Jend  0 M  r2 k0 z" m+ q5 s5 e

* r/ Q0 q# S4 [1 E! R%计算累计直方图分布  
6 ?5 m# C% J- c9 s% P0 K# q2 ?$ y2 h9 l" a8 P
c = zeros(1,256);  
5 q5 t7 g3 d1 ?4 r8 s$ z) R! w
! d$ t5 c! P4 rc(1) = p(1);
7 R. v- p6 H+ q7 @" ]- S. |  q0 o9 a# a3 ]/ B6 C
for i = 2:256   
1 R6 ~* |! a; {7 i; z7 T0 z! |6 j% A* Z4 P& N
        c(i) = c(i - 1) + p(i);  2 d+ ]2 e  X6 X9 v& K1 l

5 s2 V. ?9 j# q/ O7 Eend  * n' a. l5 x# I0 ~+ M1 q

( ^" ]  {( M- t3 b% t/ W; ^$ q%累计分布取整,将其数值归一化为1~256
, a# R% ]9 q! K# X
, H/ n# G* F9 P9 M3 @9 d- yc = uint8(255 .* c + 0.5);  , r: e1 f8 \* v+ s& D1 k+ d
8 Y0 p  y; f  J7 j0 L- Q. P6 m: E
%对图像进行均衡化. D) G8 y5 p; X) C  o% y

9 o9 k8 n$ O0 s: h7 P( hfor i = 1:height  # b( W# `9 a5 P1 H
1 a* r8 g  G  i" g
    for j = 1: width  
) K( s( B- s1 m
5 B& h4 ~2 c6 F* M        Ir(i,j) = c(I(i,j)+1);  ! _4 z* y  K) w% a, g
+ [  I3 j8 a! H0 g/ g: `" l3 d
    end  , W+ [  v6 Z/ P; ^- e5 M+ _+ V

/ K- d# ~' G" b7 ]: ?  ~& Jend  
) b% x! c  w5 K2 s) y1 V5 f& W
" b: _9 A! v; G: d% M: _dis(:,:,1)=Ir;+ }2 W+ h) n; k% G# }
" R/ w( I' `2 B( z% f
%subplot(122)  
, i/ Z8 z% h% W5 I, f4 W( q. A8 M3 J8 Y6 ]' ~3 F1 P
%imshow(Ir)%显示均衡化后的图像
. e" Z) C7 c7 ^% N* q
6 D8 B9 J+ S( J  ]( ?%对G通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
$ J- W1 A% C! `6 y5 O  _: X' K  g) z% v* V  Z6 \( x& Q% R
I=t(:,:,2);
6 S% K4 m- g5 ~9 z" F/ G+ ]/ X8 p
[height,width] = size(I);  
, F: `, {8 c3 `4 w9 b( P" S7 n
" K# T5 R$ }- F) u: p5 o* U) f! z6 F+ C" R

6 r0 F9 q/ {# ~5 K. \%下面使用直方图均衡化进行处理
; |) ?7 M' e! U  Y& O5 W
/ \4 F& \7 l4 a# D% _%进行像素灰度统计;  
6 b. U5 Y) h) K, X( U
+ [# E  }1 Y0 ^* {1 Ds = zeros(1,256);%统计各灰度数目,共256个灰度级  % Y: a8 h) \8 w0 l. ~

3 [6 e/ F  |1 i0 m%绘制直方图* M# P( w# ]) f

# `) r: R$ H; Jgp=zeros(1,256);
) o. N$ b# G6 T. ^# H4 y! `7 V$ U% l+ @( u% k" Q- h
for k=0:255
) h8 G, ?0 u/ O: P# F3 b3 D: F/ d" O$ B/ ]/ ?8 @: o8 I( B
    gp(k+1)=length(find(I==k))/(height*width);- g9 M( z( |/ Z* }" E% i. O& s
$ ?! N/ `1 n! W* Z1 B- `
end
: K, b  M- Y& ^7 b' J
7 \# F. f& ]: z: r* ufor i = 1:height  
0 o# w' d' k- `) C2 _0 O+ w
2 U2 F! m# w+ n( D! M    for j = 1: width  
6 V% {; M' p* f0 s1 r: ~1 R+ ]9 f. |7 r; L
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  ; Z. u8 Z, r: S; ]& ?/ q' b1 B. `) L
$ K$ P' n& p6 J* q$ l, E
    end  % s0 @. L. J8 u: E
+ i5 M+ W' H0 j8 f8 ?1 p" c4 }7 p& d
end  , u2 u( l  \$ [% g4 M
5 {7 M, r! [1 M0 I: Y7 H
%计算灰度分布密度  6 E6 N/ d/ @* `* P9 h
  q- G6 q( f7 H/ O7 {
p = zeros(1,256);  
4 C7 ^( |3 Y% ^  u$ ?3 Z) c/ v0 S; q8 w
for i = 1:256  
9 `' ]- s5 l! K! G' {
! E4 n" {7 {% I    p(i) = s(i) / (height * width * 1.0);  
- g5 S/ Y' K3 x- z$ q1 y( d5 ~  M  @/ I) g6 X
end  . |3 q( J# P  F$ Z7 k- C( Z% R
# t( L1 g9 N; }' H4 i
%计算累计直方图分布  
2 v# u$ N2 p( T8 H) I! E% I! d! T( `& Y" z3 \5 r
c = zeros(1,256);  
/ O4 a4 r# i) b
% w' y; x+ }# |# w" v0 gc(1) = p(1);
4 {$ E5 x- W( S5 u' w# M' F( L6 M) l) L6 Z/ T
for i = 2:256   
9 @( Y9 ^7 p* Y  W5 t4 [7 k7 x" Z
        c(i) = c(i - 1) + p(i);  7 s3 q" u$ i3 b# @+ r' y; g

8 G4 u. n9 N* Z$ ~  |$ d; b- \end    L. N! [2 y1 N5 m

* I' ^8 `7 @: \+ o/ [' d%累计分布取整,将其数值归一化为1~256 1 Z1 B) z6 J- F" K
* }$ V4 Y" G6 n+ \. p" W
c = uint8(255 .* c + 0.5);  ; h; G$ N6 Z4 {; X. u, E( h
; f4 T/ }7 O: z! n
%对图像进行均衡化
9 R1 |& x5 i: K4 c$ x/ t( r0 ^  a% h3 j- Q, C
for i = 1:height  
& r; n3 I5 O: \! |" O# Q
3 G1 x8 ~) K! o% X. ?: r5 s    for j = 1: width  
* i" Q. f3 B* D' B3 {8 V/ J& Z7 h/ [
        Ig(i,j) = c(I(i,j)+1);  ! u# c( G0 u8 ^" N2 a- U
- ^6 `! h' [$ D7 @
    end  , P% @  i  E, C9 h, @8 S: w; F

( s& n, x( `+ ?/ Wend  
" j, N) m8 m, ~0 J; |0 W; y( E
6 p+ b' S( ~1 Q# z9 Q%subplot(122)  
: \1 p4 q' Y" c, a
5 Q/ M, z' T* J* k7 _2 O. n$ s%imshow(Ig)%显示均衡化后的图像
- W4 s: Q: Z9 {( X4 ]  L& A+ D% q  f; \4 I2 I7 x0 {5 p1 J
dis(:,:,2)=Ig;
: k! A5 \% X# z$ v/ P$ C* \, z8 k
- w1 O6 M# F5 n8 ^( E" @/ o- y# w& C
: m9 @' O/ m& J3 I
%对B通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用/ E: @  }& R; y3 f+ q

( [1 G7 z+ ?' r0 k& ]. [! lI=t(:,:,3);
' m0 h3 k/ G' J- g% n! `3 S1 x/ Q/ V
& |, D. M% N5 r+ y[height,width] = size(I);  - z* C0 Z/ R2 x8 Z* G( T! @
$ {3 C6 T  l5 o" C- H! F- n- v& ?
" q" t& s" g- D) X) k' w/ b

5 i, q9 ?' k. _$ M%下面使用直方图均衡化进行处理- t% O; b8 F: Z1 ]
  p# f5 l& J: ]' w0 Q* ~
%进行像素灰度统计;  - O) N* l! `4 q# f7 `7 O
/ p- |0 A7 {2 ^% [) G9 J
s = zeros(1,256);%统计各灰度数目,共256个灰度级  $ Y9 U$ ?/ V0 c6 R
7 \4 Q- _8 k. c, {2 M
%绘制直方图6 b3 q/ D6 q* y$ F% H" A
7 B1 O9 a5 L: I% B2 W
gp=zeros(1,256);
6 D5 |8 q. p  y; R  q8 D
% o8 J! E4 l& S% x5 \# b6 qfor k=0:255
5 l! D) P, Z( m. T) j# @2 q7 Q8 r" R; s& d) x
    gp(k+1)=length(find(I==k))/(height*width);( e2 z6 [- T' A5 i7 L- Z

. ^& D* D3 z: @end
! l4 g- A4 f+ E: \! j0 }/ T: S* Y7 y/ J+ y8 q
for i = 1:height  
* k2 p3 f$ P: F# i( ]
8 R0 _1 [' ]9 z0 O    for j = 1: width  
& Y8 i1 a, w  g- j8 f; Z* y! @3 @/ M* p8 O1 P3 e/ t+ V' f
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
) k, A( U, {2 M
* y! t# i( _( v, l, z    end  6 H9 l$ w" u% E: @( f! Z

  G# O8 e& g1 ~- R" ~: J* L5 @end  
. ], h( T6 O: o& o4 s
# X5 q! ~' ]# C) T2 c& @%计算灰度分布密度  
) R" p: H" C* v6 E8 f
! U; O. M; q+ \. Hp = zeros(1,256);  8 F% t5 t6 f% X
1 |6 k* n/ r$ J# b0 U
for i = 1:256  ( u7 G% B. e2 R: _+ ?8 ], R: r/ {  c6 J

+ P. r0 o+ u7 `  N/ J    p(i) = s(i) / (height * width * 1.0);  1 }$ M9 o' X' d; D
& ]  P* b8 R$ ^- c2 L" M, t$ L
end  6 V9 k8 H( J0 E) a% v
: n4 {1 _, q* s- p! }
%计算累计直方图分布  
' H% W% d& f  {- D* r/ A, @7 [, r, u+ U3 D& J1 Q4 b  }/ f
c = zeros(1,256);  
7 \7 [9 a5 q8 \/ |9 K
9 x) b. Q) ?( I" \' Hc(1) = p(1);6 e5 v: Y* [8 y/ v

: P$ J8 W2 o) f% H& P  ~& ^for i = 2:256   3 y# I5 O: J& w* G6 h
/ Q* D* U. V( j" ~$ y: t& `
        c(i) = c(i - 1) + p(i);  
9 l$ _3 t9 M; x* F. m  S; c3 @5 O) Y2 Q& Z
end  
2 [; V; ^6 F! |8 |
  c$ Y. o  u8 r6 J%累计分布取整,将其数值归一化为1~256
$ w5 F, h3 V1 A& C2 @3 f, @4 F. K8 ?! {
c = uint8(255 .* c + 0.5);  ( }' [! {" C1 ~, ?0 H5 {$ @
( _& C- T; D! N8 r+ w- `- w6 e
%对图像进行均衡化' u% R) F5 Y8 }* n9 B" Z0 @; i

0 o' L- w7 t, H# xfor i = 1:height  ) @# C! V: V% H+ d

, s) o1 Q( D9 \    for j = 1: width  * a: Q6 J2 F% o9 t' g7 i: z
, Y6 B% ~: M4 i7 ~- |
        Ib(i,j) = c(I(i,j)+1);  & l4 K& B* b6 k* [5 b& ], ?7 X
8 E: s5 N& F  g- q9 N" z. p, Z
    end  
1 |; N' j4 o% o9 f: ]) P
. J  r6 Z0 }% ]3 F8 r3 M" Jend  
  x1 H! o3 g5 G4 M* U
$ G7 U) B$ G* Ndis(:,:,3)=Ib; + L* B% p% l* z4 j5 n  ~
4 D( N& h8 |( ~, @2 v5 S
%subplot(122)  
. z4 c2 Z/ C3 F; m
( l, j: z3 s3 t7 [" r; t0 {%imshow(Ib)%显示均衡化后的图像 % X7 ]) |# X) K) Z
+ S0 ^- T1 K1 D" m
subplot(122);
3 {. o! t+ y6 R% K. {5 ~! q( J7 P7 D' d6 h/ ^
imshow(dis),title('处理之后的图像')%显示均衡化后的图像
/ t' u: p2 x5 K" P6 m- V
  Z2 [% P5 P: W1 L3 l  D! F; e2 D! f0 e% O

1 d! J, t6 L& Y& w
  • 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-8-24 08:35 , Processed in 0.125000 second(s), 24 queries , Gzip On.

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

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

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