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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
用MATLAB仿真基于直方图均衡化的水下激光图像处理! A3 V9 Q8 P& |5 g8 {- L

( R; B0 W, w( Y$ T* D9 ?& |- \MATLAB仿真程序:
( O! C- ~, h0 |, g2 P; j+ Z5 R/ p! M4 T" S6 ~  ^4 d
%{+ a7 l/ \$ A. u8 I5 H$ d
1 Y8 S$ S2 @' d% X
  基于直方图均衡化的水下图像增强(MATLAB仿真)# L" q9 g7 H- r

' T4 ]) _# N- k$ E: K% J" w  对RGB三个通道分别进行均衡化处理,得到增强之后的图像- q3 S7 {2 Z6 S, b! Z) n8 \) s, R

; D$ ?- |# A# w0 O" L: F  实际测试,效果明显,下面) m" a6 N) j6 q  }) F5 |/ m: }* O$ `5 ~

0 m! j, U: z. T+ s$ @  时间:2014年9月11日23:59:019 o! M+ E/ w1 b8 w& O
2 J7 L1 D* h& g: o7 x
  整理:天空之恋
) w9 x0 o" E  P2 p( @! R1 M% \* K& c  ~. x  m3 p
  地点:桂电) [; m3 v2 J6 G- ]* C/ y( A
# J+ r/ u. I0 N% u$ I. X3 }/ r
%}
; ~. i) Y# m4 M9 g% e2 y2 ?. H8 y4 M- u* u/ u; O/ C) W
clear;. ]" R5 @7 c* U. U! C- z

  A- \+ {; f5 c! d; }6 ut = imread('wa5.png');  
, o* R- I& k- C" @: J+ C  r: u5 ?1 H, E
I=t(:,:,1);
9 j* p: d& A9 M' u3 K8 S! D( @8 J2 k
[height,width] = size(I);  
2 M; N; ^* K2 y3 P+ K
  M; l% g, g5 k% N1 ~2 v: k/ E5 Gsubplot(121);* J3 [$ ]; K/ p) y

6 y) G0 p' a) r: P: D# C5 ~8 k# n' timshow(t),title('原始图像')%显示原始图像   
: r3 e3 c0 ^9 e- k7 y
9 O1 T8 |7 q8 D7 y  q# t# v/ }%对R通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
* b% X' U# N1 X; g( m
9 b; g$ u' ]& f# D. p* v* G) y%进行像素灰度统计;  , @1 W1 {/ q: Q* p

$ s( N& k( `1 I, vs = zeros(1,256);%统计各灰度数目,共256个灰度级  % U1 w" A8 g& h; H4 L
' L! a* J! `* O$ m. ^4 Y  V8 ~
%绘制直方图/ h, u. P8 y. L
+ J3 U6 O- x3 N: Z
gp=zeros(1,256);
3 q. \7 X( @% p3 g1 c* r$ b# |
+ V9 t. Y( g2 B$ x2 g/ sfor k=0:255
  N+ e5 r  E/ [3 Y, d( P2 Y
6 j- ~) `9 O" {# A: p8 r' P    gp(k+1)=length(find(I==k))/(height*width);9 f: I9 h5 |4 X/ ]. b1 `, k0 e

- t& ^  z/ {; Fend
7 F+ L2 K( k1 @" l9 a4 O5 P$ |1 K: L0 [) G; C- ~2 I; t5 d9 K
for i = 1:height  
- H& `  v3 F7 X4 Q. _0 g+ L% o* ~8 u1 e* q
    for j = 1: width  : d/ n# s/ |% M
$ W( l! s2 X5 q4 V5 ~! |4 q7 e
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
' H7 d6 E0 |+ }
3 v. z& U) f: d    end  
- P# B- o2 t/ K8 e- ^& v+ g$ s
7 X# _7 `$ ]4 z$ s; Y8 ?* q& zend  
! l% r4 ?6 ^; d  H3 J( J: Z4 E2 \  E0 l
%计算灰度分布密度  
" c1 Q4 S5 F4 f) _  e
5 E: b! M4 r; A3 |- w2 p( Vp = zeros(1,256);  - j; N, u# O# b" f3 S
( S! j/ P: ^5 P3 n
for i = 1:256  
- x- ?0 K6 J* m; Q$ f
% l% Z. c! `; j5 I* @    p(i) = s(i) / (height * width * 1.0);  
# A; r8 E* M" `0 k/ _! Q0 C# f' i* }$ O
end  ; ]+ }. ]# o. X. |+ ^
. K. D! B  J8 n
%计算累计直方图分布  ) f" q4 Q  R! {- s$ P! m% S

3 s( C' B! m1 i" N' Rc = zeros(1,256);  
. b. j+ y- Q5 A) T$ i3 L* D/ c) U* k  ^. a
c(1) = p(1);
0 f6 e, U1 z( n, |  ]( B& Q+ a" `' X) X- ]. e! K6 \' Y
for i = 2:256   
' a- `8 [/ T2 f9 v2 d# i. z2 b6 O( h( R- }" w) ~3 c
        c(i) = c(i - 1) + p(i);  
: f- @2 R# l/ r- H+ L" v+ h1 T9 W$ Z, v
end  8 S, y$ X& k* C" Z" Y  o5 R/ h% m
$ ?; W3 o3 L4 A8 f, Z
%累计分布取整,将其数值归一化为1~256
1 c8 ^6 @, r% O( f3 G; E
9 B0 _5 a2 [$ x4 J  k) cc = uint8(255 .* c + 0.5);  
, M9 W( E. m- M8 {" R7 S) Y# ^5 u- P" {$ w, |
%对图像进行均衡化7 P1 S/ n' `8 s. d  f; p% v

7 P0 ~, I0 m/ ?: y, w; Kfor i = 1:height  5 g% L+ H8 R  B( B
+ D0 N8 o/ W4 Z6 i9 m3 a# C+ f
    for j = 1: width  
4 P" G4 b9 J& X- f+ {( J4 s2 M9 J) g$ t. o) O
        Ir(i,j) = c(I(i,j)+1);  
9 n' [9 d# n6 T7 _- P
: r! |( g5 C; a3 d    end  , X' z$ j) K$ F

& S( n9 M' g! r5 O: r& l. t5 ^; Iend  
# k, l+ M) ?8 F
/ s- h. L( d  _% a' ?& adis(:,:,1)=Ir;9 [! G/ g. g3 t2 v* u  [

5 j1 v! x/ d% o6 y+ o%subplot(122)  ; J3 D5 j/ F& J/ y& a9 l5 u1 g

% ~( t* s0 k7 U8 o  n$ t0 a" Q%imshow(Ir)%显示均衡化后的图像
' Y0 @. Q" P' v% ~: i, ]8 f; i- M- K& d$ g
%对G通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
) N4 P$ \' f2 ^3 U. x& m% P; n. V. w! x/ A% Y
I=t(:,:,2);
8 P/ k! y+ s( N7 O7 M) b3 v$ Q  M+ b! `+ c" S# W6 u0 |
[height,width] = size(I);  
" x3 B+ q* {2 S
/ L8 G- J# h" W0 X$ N+ s& K  n# z. {6 R
# s. D9 ?( J1 f2 [: J- o4 b% |
%下面使用直方图均衡化进行处理
3 u( c$ p& N: ^& }* g* ^8 k
2 U$ y! w) f+ i! {5 U%进行像素灰度统计;  
' l! E5 |% s( t! C
) f) ?" k3 O4 u$ [s = zeros(1,256);%统计各灰度数目,共256个灰度级  
" Z: T7 D. ?5 F0 M  \: S! d, O" L/ J& U( d, n  Q
%绘制直方图7 Y4 N0 i' v' W6 N

, H' k) e; E+ X; }# r6 x' V4 egp=zeros(1,256);6 `+ g9 K9 Z) U4 V

' E' F; O+ [) c! Mfor k=0:255, K  f# @' n' x: o

. ^8 X" r2 r- D/ W" X) |    gp(k+1)=length(find(I==k))/(height*width);
; M! r0 D" E" p8 q/ L" C
5 U! ~5 g% x3 }9 aend
; _1 R$ N( N  f( ?: U3 e; y
. b) F) K( y+ R0 c: }! wfor i = 1:height  0 m1 l  l6 C1 V5 Q6 \4 ~
8 P( ^# {3 L$ ^) C
    for j = 1: width  
; |, x$ x0 i# ^1 ^
# Z3 ~) }* d; f4 {2 X# R/ a8 z: {        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
. c8 z' c, d& X" N3 L
. p% x; }! [$ N    end  
0 r1 m4 n% K, ^3 {( \6 Y) T
; a/ r, M9 r% ]. Tend    I2 c( B& B! g5 S
0 R' G* }% N) l/ w. G- i( u
%计算灰度分布密度    c& o# t- t( G" \
; \0 ^0 J0 D1 V
p = zeros(1,256);  
1 G! b3 z4 t3 R+ G+ t' y+ }- o6 Y9 ^3 w4 |0 R
for i = 1:256  # z4 M5 V+ p2 M

0 \& T  N1 v; h' Z, D5 s2 B    p(i) = s(i) / (height * width * 1.0);  ( \) q. L9 f+ |+ d" g

; ~# Y) v" p# B9 Y' `  @2 fend  ( o! [; K5 u% X& S

, s! }! O. D" Y, c%计算累计直方图分布  
/ N+ Q+ y% y' c7 {8 v. @3 [! M9 k$ C  _' U! O/ g
c = zeros(1,256);  / W  m, m, Q" b3 p

. W8 B6 A- z5 K/ n- {0 E" T" h* ]c(1) = p(1);, s. h1 ]! U0 i- @" l: o

% N/ {) I7 [: j  {7 L; g2 d8 Rfor i = 2:256   7 v- F0 q& u( v5 C
# j1 X" X% d6 A8 L1 m6 D2 t
        c(i) = c(i - 1) + p(i);  
2 U1 Z2 |+ \4 Q( u' T9 F6 y% Q  E5 N
5 k3 p" Z; t- w( @$ C" kend  
: K9 d& S: l( Y$ J3 o5 X. t0 h. T' i. {3 z/ r3 e
%累计分布取整,将其数值归一化为1~256 5 O" S! @+ f. G. `, X

) i  C9 {7 }0 K- _c = uint8(255 .* c + 0.5);  ; e7 s* L- a& ]9 v% ~( u" R

. S# Z4 U4 B: x4 m) y' a. @, q%对图像进行均衡化( C  O4 j( A0 I5 H
0 b% `# r3 w" Z: B8 s: T1 \" n+ X
for i = 1:height  5 o* T( Z( B( g$ X/ c/ ?% K9 |

4 H( i8 |) ?+ D. ~4 D    for j = 1: width  ( v; c8 B2 I  a, d+ `
  Q& U  I% @  z1 ]4 E+ |
        Ig(i,j) = c(I(i,j)+1);  ) O# s( k! m& V) X. R0 C3 \

" V$ V7 k9 L6 ?1 n5 w( \3 ]    end  
) C$ M6 c: b" z, [9 R
1 m( \6 t8 W2 q1 f" i  Hend  
/ ]# ^. a# a& |
2 d7 _: o6 a4 D% w5 z6 o# `%subplot(122)  . j" o- s; }; m- o
. l, T1 m% d7 M: P
%imshow(Ig)%显示均衡化后的图像4 ?/ v9 |3 A# `% {+ n1 o. A
7 ]: ^/ u2 Y: [( t' x, J
dis(:,:,2)=Ig;9 _7 L0 u4 E, T" @+ v9 F) y+ s
! I+ f* F7 y! e* w. Z" A
) i2 }. h/ }' x1 D

* h& U( {# {" d+ {( o+ D%对B通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用) [( a( v8 _+ c5 y5 v

# p1 h  u$ `6 @5 iI=t(:,:,3);
. b5 C/ V: X1 K2 }" Y0 N3 V8 T2 I2 u5 Y8 l
[height,width] = size(I);  - I% D+ Y" G2 O6 x( k+ k$ p3 i

7 `. i+ h! o$ B( k# f5 ?2 E  Z: b- Z4 F; ?3 H
6 O. g& A) p5 O; S' z% o  U5 u( o
%下面使用直方图均衡化进行处理
6 {4 N: r/ T3 b% d' a: o" l- n7 U! ?! Q, |! |1 j
%进行像素灰度统计;  ! |" C) R" U' Y' c

: B3 w9 g3 f% U! z. [- {4 X. fs = zeros(1,256);%统计各灰度数目,共256个灰度级  8 m/ ~) F+ W% ~" \* y

1 P  V/ H2 R$ f6 o3 _! K" E! `$ u; E, P%绘制直方图
6 \) X1 C) n! C3 Y% r7 W! y) p2 c6 [) B$ U6 @$ s; g, l7 C5 C+ l
gp=zeros(1,256);. I$ z: g- M5 x  v% F

; v8 x4 P( ~# G+ x) vfor k=0:255! u. o( u. q4 {
/ J9 Q. }4 f& P* p& O6 X- V9 E
    gp(k+1)=length(find(I==k))/(height*width);. O9 V1 ?/ u8 B4 L/ i

8 w9 Z9 l9 v% w8 [4 a, Vend
+ [+ w- v; J1 D% i+ m5 ~. n" V3 t9 d2 _. O9 t
for i = 1:height  0 _3 X) z5 }/ J7 C; f1 n
5 E* T' @$ K2 E; c3 Q, |/ T' B
    for j = 1: width  
) H5 M, y  v( ~( W1 \) v( ~) Q( W, M5 A0 t
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  & @' ?  J# c. x7 ?9 ~6 Z0 N* A

; U4 N1 `- s( _    end  , i( M- V9 e0 |
( ]6 w% [% h8 Z* l* p! q
end  : u0 s7 A& h- z- J. T& C
+ S1 c% _3 {, c- J+ F2 c
%计算灰度分布密度  2 A5 B( U! T: o6 M2 Z( e+ ~% U; h# I

# V' I; C3 k" ~- y6 Lp = zeros(1,256);  
0 ~; S* C7 ~/ s* \2 T
- F) u* k2 E! F( Qfor i = 1:256  0 N8 n. V& d4 K' b- q

/ q, E6 ~8 Y) i/ R9 o    p(i) = s(i) / (height * width * 1.0);  
3 h7 D7 B! X2 `9 U
9 G; G8 u% Z4 A! R* rend  / _% d( F4 r8 t8 `5 W- [7 F9 R

7 S# o0 N. O% B8 [/ w) e- i%计算累计直方图分布  ' c4 ^. |( o3 i2 _( P9 v4 i- B# X( G

, z1 l1 L6 L2 n# [8 [c = zeros(1,256);  
; m% A8 o- o% d/ s# r- C. j4 K& e4 s& ?- `$ z+ Z9 ?; P/ Z
c(1) = p(1);
8 X2 r- B6 O8 o3 y4 K% k+ I
& f& v/ [' g* q3 z6 Y& b  C1 B& Mfor i = 2:256   
- I% w& Z/ E6 l5 Z- M4 }) \7 ?8 A6 Y* f7 m/ B+ r9 N
        c(i) = c(i - 1) + p(i);  , a' V7 [5 b( d2 P" l, N
6 r* n# _' ~+ t1 u- Y: l$ c
end  2 h2 ?/ [' b) V; c3 q7 _& ?
6 P1 ~! y: a3 L' {5 B
%累计分布取整,将其数值归一化为1~256
- ]( w  d6 q8 P+ w) ]/ I, T7 D3 `' T+ Z6 N& z- P, N/ |4 J- n; O
c = uint8(255 .* c + 0.5);  7 F/ l- Z9 L1 F5 Z8 g0 s* ?+ n
5 g% d+ f3 E+ x7 @2 x" [
%对图像进行均衡化
  q; \& c/ |+ \7 Y3 V" @, x/ N' E% ^! R5 E3 ^
for i = 1:height  
0 T6 i5 T+ \1 F. A4 |+ I% y
& L7 ~# \' Y3 X% M/ L. Q    for j = 1: width  
, E: E, G( y3 C! d! a# {" j: Y1 [$ E
        Ib(i,j) = c(I(i,j)+1);  
, ]2 Z! N! H. d" G
0 p) j% _! ?+ r    end  2 J# v  r# b2 X: q

' k/ P9 W0 G" n8 w0 z- A' uend  
; p8 n$ \8 f3 @5 X. _' c' ^' j1 A* K7 z3 J, b) {0 ^
dis(:,:,3)=Ib; ) Y5 Q& ?& r. C, a1 l# h

) [8 `4 S& u* H  T%subplot(122)  " S0 _0 j& ]; \9 P  m& j/ \5 y8 ?; ^
) L0 Y" n& [2 b4 M. |
%imshow(Ib)%显示均衡化后的图像 4 b; Z+ N1 s2 M6 j

& K. `& U! |0 n2 I4 Vsubplot(122);
; d: k5 ?0 d2 A3 L/ R4 u) W- u) ?' ?# w' y: O4 e
imshow(dis),title('处理之后的图像')%显示均衡化后的图像0 Y, M; K2 ?7 d  L. Y: E/ V" l

6 ]% _6 n" o/ e1 X  P+ Z& K8 d: ]* v: |
  [6 [/ E6 w. N5 b, V
  • 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-5 10:41 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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