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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
用MATLAB仿真基于直方图均衡化的水下激光图像处理
7 F. k0 G  {* N5 e8 E' f4 N; f) K4 p, t% Q, d
MATLAB仿真程序:, l% ~% z+ b( R% X8 ~, Y% r

/ q" ~! f2 x0 ]; m$ I& ?%{
" j9 P" H( u8 d- E! K0 v8 ]0 v6 k9 F# {6 a
  基于直方图均衡化的水下图像增强(MATLAB仿真)
( l; L" Y' y) f0 U% ~4 W2 F5 w" Q1 @: @+ ^, @9 I1 h' _; l& p+ I
  对RGB三个通道分别进行均衡化处理,得到增强之后的图像  o8 t4 q+ z0 X$ q5 B! T7 X

2 L1 u! e, Z7 U- L' Z& s  实际测试,效果明显,下面/ q) B6 M. x% U0 L' m. l
" d% d' M& P6 C; N6 S
  时间:2014年9月11日23:59:014 l/ V6 g, X* \' \5 T/ s

' F- f  i# Y: w, C  整理:天空之恋. T" }5 e( p" V! X4 R1 S

' q7 n' w+ s7 z: `* y9 z( O  地点:桂电
: @2 Q, X/ y1 X8 Z: [! H0 O" }4 r7 r8 M, }7 K  @
%}6 x; s/ q2 Y  ]' T

$ L+ P+ k, b6 r# ^4 \& ^. gclear;2 W% d" W" S" c/ R
0 m( w8 D: d9 {( [+ J) s9 o( r
t = imread('wa5.png');  . N  q6 I* t9 r2 K$ g

& s5 a6 _3 N' ?% `& q! G: WI=t(:,:,1);
. F; L/ |6 I3 E* _
' E. D8 _; p8 ]: U8 k[height,width] = size(I);  5 W8 H2 M! |0 B9 k: _. X
4 c# h8 g1 c+ u9 L! Z  Z6 w
subplot(121);
/ I/ ?" r3 H) p6 \; J+ b2 U/ l2 k/ K4 g: o- H% C
imshow(t),title('原始图像')%显示原始图像   
; B9 `& b: x( C1 y7 [, W+ A3 |
%对R通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
, O5 A7 j. c! F+ N$ Z+ b
; f5 t& N% G' z) F%进行像素灰度统计;  5 F. s9 }  m/ P

& u4 C0 h$ w8 R, b9 P4 @s = zeros(1,256);%统计各灰度数目,共256个灰度级  
# X3 ?. L1 J$ u( K
4 j/ _7 U7 J3 i8 ]' g+ c6 z" [: }%绘制直方图
$ K5 \4 M' f) e' A6 {" a- ^
0 {& d# P7 I$ e' T- y8 e, p  Kgp=zeros(1,256);3 e4 p& t3 S: T" n) h9 `

/ _, K( T, {2 T$ yfor k=0:255
6 H7 \$ T! Z! E# D) l6 R- W2 Y9 R  d; N) k( g) V% Z1 r5 C' @
    gp(k+1)=length(find(I==k))/(height*width);3 w# L$ j% q9 ]/ G* s) O5 z
  ]8 u# a3 W5 }2 D
end! v, F$ o1 U3 M& X

7 g* V8 W# \3 a+ X# Sfor i = 1:height  ( o9 Y& q: R+ ^3 u/ Q5 \
* Z% Z, G$ }& Y4 W/ h# h3 v- j7 u
    for j = 1: width  
/ b* s6 F4 s- a8 [9 p$ n' l# E, }' v* q" p1 ]# o( d' t3 R& X
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
9 C9 h& j' f3 s. \8 E% e- a. d0 D7 `" N9 V: Q
    end  
2 G/ q1 ^" T( y/ {2 M0 B/ V9 z7 j1 z/ ]; K! z9 P
end  
; u; }; J6 C% ?/ E6 H  s2 _- _0 |& n6 Y
%计算灰度分布密度  
5 [2 R; S. E0 u5 h0 g$ F  J, p) L8 m  F+ p
p = zeros(1,256);  4 r( G  c$ c/ a, k9 }

. Y6 M' H. J3 E- z5 b5 b5 wfor i = 1:256  
( u! [( {/ l: D
: Z) D& A9 O4 d7 i% U& E    p(i) = s(i) / (height * width * 1.0);  ) n. y+ \, z/ B
, g  s* [, s# U! T. h( W/ ^* Z3 v, h7 b! y
end  4 d& n& E& I! I+ `& l( a! F: T" Z

7 c/ l: H) O; l+ y%计算累计直方图分布  
" b7 d7 P! C) ^2 O' q4 [* ^& r1 q8 o* h5 ?  ]2 |
c = zeros(1,256);  
/ D0 L, |6 p$ A" x5 U- i
! `! t! ]$ }% B2 c% o5 |5 ~. Hc(1) = p(1);
0 c- o: h+ R! t) l0 P- o) I& V0 d0 j! T6 r. @( @7 m
for i = 2:256   ) i6 `% |% h2 _: q; Z/ r
3 w" \& K1 `, J; }
        c(i) = c(i - 1) + p(i);  
# }% X7 C3 K3 Z/ e% E( O+ P( F' m
end  
5 Z5 {( v/ z4 J1 H( H/ @
. @% I' T- B5 y+ W( \# B' o  M$ ?%累计分布取整,将其数值归一化为1~256
! d  R. |+ B/ T' N
2 ?4 F' k# S0 q# Bc = uint8(255 .* c + 0.5);  
* B* A  H7 K+ p! E& X: x3 F" A& a" ~; z" d
%对图像进行均衡化9 b$ h0 K7 C( d$ ?1 b: {/ S

4 Y# w' h% w+ U' bfor i = 1:height  3 D( E! v) d2 l
; R3 C* r! z! Y" a/ H- x
    for j = 1: width  5 I  {; V. L' u- i
/ H2 K. O7 d+ z4 ?! G/ M3 s9 |
        Ir(i,j) = c(I(i,j)+1);  $ r: e4 D5 Q% L$ k! h0 a
/ b0 F  ^! ]2 V) F2 L, Y
    end  
4 D  v6 n* M! }4 }! e/ C1 v% K' B) S0 n1 T* c, T
end  
+ t; K# ^( r& I& Q" P% f3 {6 Y% e9 }& p
dis(:,:,1)=Ir;) D) L  x. r' K1 V; Y$ |

; c, w# R9 i) T2 y%subplot(122)  & G3 g) x: V* P3 z
+ y1 @/ C0 ^: Q0 U( s5 s
%imshow(Ir)%显示均衡化后的图像
& y$ J# ^6 G# m5 r) j, v- `! T
+ v/ `0 ?3 h* B%对G通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用+ Y/ u+ w: k1 i1 f8 v( E

$ N/ T& ~+ @. N# ~8 z4 q: PI=t(:,:,2);
. C+ t' t( l  A  G0 E* R& J$ J% \
0 j" ?, m, ~& [- ?[height,width] = size(I);    \  }% K: P& K
3 k' J8 Q9 x) v2 C! }, R' x

+ G7 t: I0 c) A! ?
2 X- T* Z. R- m+ j& S%下面使用直方图均衡化进行处理* H! T6 N0 e/ L4 u8 l% g; N0 h/ _  Y

# {* m; w" R3 E* F! p%进行像素灰度统计;  
; G, a! }* d; h- I- t6 J$ |; r, V3 A* S3 x9 Y% [' Q
s = zeros(1,256);%统计各灰度数目,共256个灰度级  
0 E% s( B1 T, v: M% H% K4 B% [7 r1 J! M3 o
%绘制直方图
, T; ~: m3 W# y: l2 q+ ]* M4 H  b4 m) V+ l. M7 l
gp=zeros(1,256);
6 D& v( R6 ]. r/ d8 o
+ `# v/ O! I! }+ Xfor k=0:255
2 W* P! _0 _! d0 L" x  b
: A9 a+ G  w7 p; V2 J% ^    gp(k+1)=length(find(I==k))/(height*width);
& X; c* ]7 p; l; [0 i
' S( l' s8 F, `end1 I, [4 w& T  ]1 d# \9 y

' C" [  G1 z( v! n% f2 o) pfor i = 1:height  
- L' f  b' ~, w! h. r) j" c. J  |0 y: z# ]
    for j = 1: width  + R& I3 n+ H) d; m3 `4 \

& X- K; Q, P$ J/ D8 E  M; S        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
0 }+ R; D0 d/ T
* ]2 u  f$ K% w5 T+ ~# }2 o    end  
) \% ~8 r+ I, g, G, m* i( G2 o7 }9 N0 v/ X
end  
! g. g8 i* U! o* V& G- Y
# J1 n6 e. f2 S, w; Z8 Z/ i%计算灰度分布密度  
  j3 s# ^8 K0 V  `2 Z2 n
, A3 Z8 a0 d3 ?; h) Q) F( u2 I+ vp = zeros(1,256);  / H; R  ]; N) k  A% m3 \
- F" E, j0 d# B# B1 ^$ ^
for i = 1:256  
; k  \. P5 k7 g5 j4 M  g# I6 a3 t7 B0 q2 B3 r$ w) d
    p(i) = s(i) / (height * width * 1.0);  , E- W/ ~+ l6 V: o4 d+ A; Z
8 h6 @5 G% o8 Q  K
end  : L* s" r( ?2 a" j' }

  `, {$ I! b$ l& I. Y%计算累计直方图分布  
0 }$ _# ^: U0 G9 l0 Y, m% b! z& K) F* {& P8 \+ W
c = zeros(1,256);  - X. s8 A7 X9 F% h" [
0 j# k3 V$ W# V) Q" l
c(1) = p(1);  m  ]  e* F7 k9 U8 Q

" f9 |! c2 g! `5 y4 t! ?for i = 2:256   3 \- x" o, y  Y- \* S2 l
; r9 r% L. l& r0 a& p
        c(i) = c(i - 1) + p(i);  
4 U+ S  a2 T& S; d0 A! m2 z- M8 i( d% r) ]7 c: I& M8 b
end  
9 B7 [$ n3 @& p  F0 O  P2 i. m, _# r, [' Z0 l
%累计分布取整,将其数值归一化为1~256 0 r3 @' ~2 z* O0 w  }1 P8 c2 m# j
) D2 @0 ?. G* O
c = uint8(255 .* c + 0.5);  3 C( g0 I8 K! D  Z! Y" g3 L9 d
" s% g9 k8 `' p8 X! D. P% m
%对图像进行均衡化9 s7 |- `- H; N+ z! [
4 d- L) G9 X  Z. s; ?* g
for i = 1:height  & U, ~# w( R# Q& J: ~

  [) x% B" g5 |/ T% e: `/ m2 }, k2 ]& I    for j = 1: width  
5 G3 ~  H- V3 z. e& e/ c
% n% Z; [  b' r5 h8 _        Ig(i,j) = c(I(i,j)+1);  0 w+ Z+ u1 Z* v6 z2 Z
- X* t  x+ ~3 D9 Q! D
    end  " k/ C( U: Z! x; U& n

( t  l5 E- m0 Zend  # Q; @, L( D3 X$ L' y4 s

, [3 I3 y9 X5 u%subplot(122)  
* s+ K3 P  g2 c, ^3 `, T- c
1 `( c8 d* _: ]( r" s1 s3 w8 z%imshow(Ig)%显示均衡化后的图像2 Z9 r  h* W5 I8 b
- ]! O0 f6 T0 B+ f1 v- ?3 O
dis(:,:,2)=Ig;
9 ]# }9 `. y' z; Z! h
. Z5 F* _* s3 G, V8 F4 G$ z) ]9 ~) ^+ z5 b- o4 S
2 ?/ Z+ o  x; y' N% I
%对B通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
8 ^, s6 V- X) ]  h$ p& T8 t" A6 ]5 t# Q; M% a
I=t(:,:,3);
6 g: {. f) Y  u- o  h# Z8 [
5 d' h5 g  N. v+ _[height,width] = size(I);  : ~8 O# t( o% T/ z7 S, T
, x6 X' P+ D# n3 g/ u% r

4 p7 D4 t( Z) `: W# Y6 a0 ~$ q- t. S1 [% ]) P- P
%下面使用直方图均衡化进行处理
% ]- \1 _  [% [% Q3 k) Y8 \; R$ R- l8 J8 u8 }
%进行像素灰度统计;  / [: x7 T2 g3 R3 b
% b% ?9 a9 K; D" v/ B
s = zeros(1,256);%统计各灰度数目,共256个灰度级  $ n/ @0 w0 A8 |: d; p& X: w4 g
" E5 M- n. Q. X8 I! X0 H. G5 S0 V
%绘制直方图3 a, Q) i* b9 q8 a% u8 Q# d

. Z" s3 X' V$ C! [  g* D; Sgp=zeros(1,256);
6 M" Q2 k0 e  _6 x/ l* |+ p. O2 P! d0 _. [$ s- D/ v" A( i+ e
for k=0:255) Q, P. b- w2 p* a3 f# x3 ~
, x& a2 }1 m" P/ S' N
    gp(k+1)=length(find(I==k))/(height*width);* ~5 e: B+ C6 A+ q! Q; Q- B
: U# K% \0 H" t7 X  U! U8 G* t
end. a- K  k# o  K

* R$ x" Q  s9 W" m( n9 c' s1 Dfor i = 1:height  
9 G2 {# X: u+ G" T( {8 N( R0 x1 o
, }- }1 z( Q) p4 `. W    for j = 1: width  , g1 Q0 C! C/ [4 z1 Q3 D% F' C
6 [. B8 B9 ?0 ]: a% D  r3 x
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  & s! L; ]5 s$ u5 Q, o
) u7 P$ P' J1 R: v) ^
    end  
5 E" O' @# C1 o; X
3 N6 v- @: C# Jend  
: e3 i; D9 Z+ l) p4 |/ U/ l& W
%计算灰度分布密度  8 Q, w9 O2 a) y7 ^; G+ x& O2 p% P
$ q$ m) [# T4 p9 |9 v% D) N6 ?; V
p = zeros(1,256);  
9 f# g9 w6 ?+ ~* t% P
& {' L" I6 c! Y' _7 G- Rfor i = 1:256  
. F# U: \6 C+ T9 P0 I9 J# s+ Y' s6 G* {+ K; a5 H0 F
    p(i) = s(i) / (height * width * 1.0);  
# r, R6 p% A0 \: |1 X# Z: T: l
% U+ C' E! P0 w4 [' _end  6 w6 z2 G- n" _9 M
9 j" t- g" u! w+ `- n
%计算累计直方图分布  
2 o9 U/ v9 F  m' S
. f( D8 X3 b% Rc = zeros(1,256);  7 j/ J3 ~, b5 a, n
  L: A7 v# }/ y1 m; c# s
c(1) = p(1);
2 d( V3 x7 k# ]- l( v# b, o: B
: c' x& A3 X& Q8 bfor i = 2:256   
+ l) z# ~% T" @$ H4 O
" ], h3 ?4 E2 r        c(i) = c(i - 1) + p(i);  5 [) n9 g; h0 ^0 R9 s) S
! N0 ^+ n( Y+ k) N: J$ P
end  
/ F/ [6 V% T1 A3 x! A4 Q- ~# G& D: E) A* t, W& ~% [
%累计分布取整,将其数值归一化为1~256
; e2 J) m  b* }$ d9 f6 r7 J* m2 P+ @/ y( k
c = uint8(255 .* c + 0.5);  
* u8 b" v5 \3 i% K/ a3 U. ?
- u! p( }9 c' @+ G- w. N0 G7 E%对图像进行均衡化
$ r* v  M; J' {, t8 B+ L( m* r; H' V
for i = 1:height  
5 k; C5 _9 R: }4 y% l. L( c
  ]+ [, V$ A5 z4 b, [    for j = 1: width  " f; a. D& b4 p; T3 L) G9 g
0 O% _' Z0 t1 E" e
        Ib(i,j) = c(I(i,j)+1);  8 r5 E/ y) x* K6 ^
+ z* L9 P3 M' R3 d. U, T$ Y
    end  
+ W) S1 Q2 L) x- _, v( B$ D) B9 ~
; @/ b4 M0 Z4 O  L, {end  
: H# o( U- C' f: O1 a$ n* t6 _5 H9 Z/ B6 }
dis(:,:,3)=Ib;
" U1 }1 A2 Y6 B- h8 F) P0 s( P- N$ T  P6 c( K' U' c$ `
%subplot(122)  - e; M2 j+ i9 {

5 I1 M7 \* ~6 `: ^' L& G- Z%imshow(Ib)%显示均衡化后的图像 & ~% L1 z6 H9 A$ J2 R5 ^

, y9 q* V/ C( l3 Ksubplot(122);. Y+ }$ Z  m. H: R4 G

; n5 I9 G6 R, m* \# G6 ~" B3 iimshow(dis),title('处理之后的图像')%显示均衡化后的图像
4 o2 \: w) G# B3 q
: U4 _3 }: l9 `9 T% D
  D# N# g' z: O  a" ^9 o, e- p, }
9 S" i$ V6 t* E# r
  • 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-7-25 11:04 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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