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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
用MATLAB仿真基于直方图均衡化的水下激光图像处理6 ~/ @5 n8 h* g7 E- S; h
3 _" K4 s" w0 M/ i
MATLAB仿真程序:
/ |" U1 f" l8 P+ ~5 f
1 E" c0 @: U4 F( @" n6 w( U%{
, D! ], V" M  I7 y7 E! z' |* {; i* C1 b: U$ V' z
  基于直方图均衡化的水下图像增强(MATLAB仿真)
4 q( c+ h8 J$ h) y/ I2 H9 J9 r5 P
  对RGB三个通道分别进行均衡化处理,得到增强之后的图像
) v- G! V: @3 i" P
& G9 I" }1 L9 U3 k  实际测试,效果明显,下面5 k1 j7 t! ]( Y* |  o
# C# c& e$ I' L- Q8 w8 {5 F: V
  时间:2014年9月11日23:59:01
, w0 o$ o9 J, R) D
! R( A3 q: w( }$ d% ]  整理:天空之恋
+ `# j# N1 h7 Q
9 ?% X  f' u( b  `  地点:桂电0 W4 m6 z) o, D; O( z0 ~6 F" @3 ^1 E
+ Z; M7 P2 \9 ?  @7 E7 s3 k
%}
6 W# \  O2 j0 a+ `# }# M, _& Q. c; s
clear;, ^7 Q, G* W4 _( n

4 |& B# C* s. |$ Pt = imread('wa5.png');  
' J( ?) e2 N. ~7 z! T9 x. K  i4 j
. H8 H0 r/ T" k; ~& q+ cI=t(:,:,1);
5 [: B# B. `4 M, `7 K
6 A8 Y  Y; h" r: ?2 ?[height,width] = size(I);  
4 r% V1 H; |, r- `! b9 _" ]& R0 l( F8 H- o$ J+ ?1 w7 x- X; P
subplot(121);
2 k0 v; |3 z8 C+ a
4 ]/ |! |) a6 m# \9 ~imshow(t),title('原始图像')%显示原始图像   : r+ d$ Q6 `: b( G/ i$ a
7 F9 O# C$ \4 b5 p( H5 S
%对R通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用& k  ]) b' ^9 c; i

. L$ s; e7 g0 r& U* T%进行像素灰度统计;  , J% A' A+ u+ Q% [: X2 T
2 A  P! J3 z  B  K, ~9 w' }. H
s = zeros(1,256);%统计各灰度数目,共256个灰度级  2 F8 Z' C6 H/ |. o4 f
6 p6 Q& O& K- [3 u6 _& N
%绘制直方图
+ f: m" g( l1 Y
0 ^, ]4 O) L9 R. V5 Rgp=zeros(1,256);5 G2 C* E" y: n+ T
, D. q* c8 v! Q& D
for k=0:255
8 {0 e: H8 B2 c5 d% T$ U; h4 C8 x! O+ b9 [* r
    gp(k+1)=length(find(I==k))/(height*width);
+ D0 z! K8 v' r0 V: M
9 ^0 z8 L/ _! e9 U3 A1 o4 Qend
9 ^$ r+ c/ O  D& ^$ d. p
& \- v3 H2 x. w8 g8 L& mfor i = 1:height  
2 H, j7 I0 \) F9 x) D. v* b' L  f0 L
    for j = 1: width  4 T& t' M% d0 h) b7 {- v3 ~: t

* \' M4 D' m7 u( \        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  1 D5 F& i, w, U! G% q
3 W' l  R" k! Q' h8 I% h* u
    end  ! [& I' V% D5 {4 _# }

. L& A) z/ i$ d( }end  
5 x, U' p* {) f2 R
; \$ m, t0 R) Z; ~5 L0 k%计算灰度分布密度  
" _/ k2 h, X" g% I" @% r# }+ p" ]& i! {2 q) n' Q0 s4 H
p = zeros(1,256);  2 w+ ]3 {. D9 t5 S4 L  a

1 K4 @$ Y+ d$ y* W) Wfor i = 1:256  $ ~5 I! P" x2 Q$ M# E
7 c! ]9 P& `3 Q. e
    p(i) = s(i) / (height * width * 1.0);  # e* Q) A1 K3 [; F' b; L& P
$ Y# d" F  e  i0 V9 b# l
end  
( \' j3 y7 Q+ j5 `0 q9 e9 X0 V3 m( Z. \8 |4 r
%计算累计直方图分布  
; S7 _* ]8 x9 X( c) ]" P7 E3 z! f. ^' g
c = zeros(1,256);  
: ^$ x4 G8 ?; J/ h8 a* i! F
5 j, ^2 t$ @& S/ r" }2 Ac(1) = p(1);
( X3 o! q% `& C/ D+ T2 [1 M& ^
8 O' I$ q. n7 x# _7 A9 nfor i = 2:256   
) \5 y0 `0 b/ Z# O! W5 o. ~7 q" s; y
        c(i) = c(i - 1) + p(i);  
# g2 N5 b' ]' D; ]- z. O) m% R. {* B
end  8 G% u  [; i8 f9 k

7 d( `! A* I2 s) s%累计分布取整,将其数值归一化为1~256 * s' R0 ^3 {  t% u) \' c

' K9 s9 X  j8 D/ l9 [& x3 O, Fc = uint8(255 .* c + 0.5);  ; v5 n+ i. F. D1 _, l9 {2 _8 m

( n" \2 a/ A( E4 q& p%对图像进行均衡化
) H3 U$ |( x; J3 \8 P# L
& j1 ^$ S1 G) K! pfor i = 1:height  # r: o& x! V4 O, x0 e0 _
! A6 a( w* d, Y4 ~0 t
    for j = 1: width  - Y9 Z6 }. T% @& C
! r, C8 N3 ^$ n8 I' z
        Ir(i,j) = c(I(i,j)+1);  
$ }2 N/ G( i* E' p* h4 d& Q1 e! ?
( f, i0 w" ?/ M1 c- M& n( T    end  
/ U; ^( e2 R# u0 n1 q( s7 D$ k1 P8 r( y( v4 {1 }. k( @" e" v! |
end  
4 H8 s( Y  G- t- g, s0 ~6 x7 q5 W4 q+ R/ m# k7 N+ N, |1 o" f' ~/ X
dis(:,:,1)=Ir;
* j3 `, t- D* P! g) T2 ~- R/ [( x# f) u
%subplot(122)  
0 P. b* w2 J% ^
) X" H  R1 B& Q9 H: @%imshow(Ir)%显示均衡化后的图像- o0 ~5 X% g7 J4 Q. F' w/ j
0 _5 l* C! p4 C* _$ {# m) Y) T
%对G通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用/ Y" u5 w4 s; p6 d; t( @
5 f4 O# [3 Y6 Y" N$ ]
I=t(:,:,2);
% p, M" R4 R8 R5 Z3 B: Q
; g( i! B4 y2 r5 u9 }8 [* G+ I; Q[height,width] = size(I);  
. i- \$ ]' S5 ~0 Q3 D3 T, S# |  J4 }0 U. T

5 z2 {' V9 M, j: r. ~" X% E
- B4 S9 k2 R5 h  Z% l%下面使用直方图均衡化进行处理+ z- V0 k. S% L, j8 E4 H

! Z0 p& V* I/ V; ?1 `%进行像素灰度统计;  ' `* h) n: }) I; f+ A$ v' m

& `1 S' ^7 d/ Xs = zeros(1,256);%统计各灰度数目,共256个灰度级  1 _  [% D, A$ k' H* p5 o* O

1 {: f5 q3 m# ^8 ]  h, i6 J%绘制直方图. o) L  h3 ~% ]" q- p# _' m
! u# M0 ~& Y- k8 d/ l4 |
gp=zeros(1,256);
* ?& f* K" \! T$ @7 o) C, ]5 ~3 o; P' y, q" i0 k
for k=0:255' Y' T! C3 T$ d" o( J2 i

) X: h" F- D! k    gp(k+1)=length(find(I==k))/(height*width);
4 C! V- u* C  S% l* K; u+ T% p* S: A5 w) L3 o* M% y
end; o1 O# r: ?) ]2 {5 S0 A

; P7 Z) r3 ^$ W2 [: ~for i = 1:height  2 Z9 M+ C4 p6 t2 ^0 \& ^

  w2 N4 q0 E9 N$ V    for j = 1: width  - [$ p. `4 G$ X4 l

. V% K% u+ w$ R$ F( V        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  & |6 Y! R% y* G0 M- `# f$ F
) t8 X7 m* y/ t6 J
    end    a& e( B1 j+ G! E5 w% G  I

  y' ?+ T4 u" R5 [/ R$ Kend  # I" E( L+ `" Q' Y" g( a

8 g$ Y4 @' N. ]1 [4 \%计算灰度分布密度  
3 i5 g& _- P, o* k
! y' e& G8 p7 s+ `. Op = zeros(1,256);  
$ {7 ]1 C/ Y; B0 ~. n- ?+ ~( H/ ^3 F' |9 {7 G* S7 n
for i = 1:256  
5 n3 d. m: |6 c$ V! \
/ }. F- I6 k0 V; c6 y; O, t, j! p    p(i) = s(i) / (height * width * 1.0);  2 H: F1 c/ O, d3 L4 _

2 R9 j5 O# H  ?8 W6 z6 W2 o7 W8 G( i' ^end  
/ t- a% o7 d& w. k! }4 W( e
- B3 _, x" F# l0 \$ |%计算累计直方图分布  
4 U& _2 t: \6 e- o. \7 b+ s  W# H# Q0 Q/ S! d' Q
c = zeros(1,256);  
+ ]: J$ t. g% \. v+ i  f3 |3 h. q' N0 ]
c(1) = p(1);
" o  \' \: Y$ a& u  S1 T
* N- U% ~, o- ~0 P9 F4 u! ]for i = 2:256   
& q8 u4 Z$ z2 f) Z9 s# o' o( K  a: A1 {  l, G: O* a
        c(i) = c(i - 1) + p(i);  4 I+ v- p6 G0 l
* U& C8 d! J( W& w% L% I' h
end  
4 }: c# p  R7 e3 V
* Y' o/ H! W4 B8 ~! c9 \6 \( z%累计分布取整,将其数值归一化为1~256
/ z, \; c3 D7 b7 y# S6 x2 ]% S* o# E- Z# x, N5 z/ B
c = uint8(255 .* c + 0.5);  ; q3 M4 s3 T$ u7 ?4 I
; k% K) W! F: g- M4 _
%对图像进行均衡化( S  K: p- I% @

1 Y/ J0 A1 x& E5 w- u  v1 o" sfor i = 1:height  ( c1 X+ \% b! L

5 {# ?4 n2 `6 y" O1 ?    for j = 1: width  6 q3 \; f+ ~4 G9 e/ m1 `" J
* H5 j. l% D. F
        Ig(i,j) = c(I(i,j)+1);  & \' R$ x! ]1 |! S/ {! D4 [
. i& i2 o$ P- P
    end  
0 p" Y5 b( n7 B8 ^
8 b; j8 C- L* p/ |1 Iend  
# r) @; b' w6 W7 _
! D* k% h% W# M, S% a# x3 v%subplot(122)  8 I% T" h2 U- K2 s, I/ }( b

' \. T# F% U# k5 C/ l%imshow(Ig)%显示均衡化后的图像, @4 x6 |* ?; u1 i2 L7 s% K6 y6 ]  \
! C+ C. R, T1 B! A
dis(:,:,2)=Ig;
3 @' q9 W; i8 a: k  G4 ~9 B" ~  C  j, ^
2 j& [8 x  y, @% Q4 q4 i+ u' [
/ e' g1 \9 C6 U& U2 r; T8 j5 H0 \
%对B通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
2 A. p7 n  V! s- o/ L/ a0 }
% L) K8 F! u, \I=t(:,:,3);
$ l/ `* u1 r3 \% |) B/ O0 x4 l) e% N" J( U/ V9 X
[height,width] = size(I);  0 }; y* e% [8 l2 ^

1 X5 Z4 r% {1 P5 z- P7 V. ^  P+ Z3 P1 U9 y- S0 ]

' O! s5 F9 Y' H8 n0 W! z8 N%下面使用直方图均衡化进行处理8 A$ T% Z; Z7 w7 g1 ^1 W6 G* j
; o( A, `( J/ q. B; h
%进行像素灰度统计;  2 U  z& v4 Z1 l2 n% q

* t) p+ r* V4 F4 q; _& m/ S6 {s = zeros(1,256);%统计各灰度数目,共256个灰度级  
( o1 o$ y) u8 j3 O
/ t& F0 g5 j2 e%绘制直方图
4 ^1 Q$ z5 B  m8 j" y: h! A* v, V6 M1 H$ B" H' G" Y
gp=zeros(1,256);/ `8 V& I! ?# _& H' r
% r$ n0 f8 Y3 b4 i$ X# q
for k=0:255
  B4 D' Q- j- Q0 I: t# O2 U5 R, X, V# Z8 [
    gp(k+1)=length(find(I==k))/(height*width);
! y+ t7 g2 I' u6 I* d# f" d' ?' ~
6 `; q# i9 I- q9 a; {+ Gend
& `. C# y9 v: m) a" o2 V7 ^+ ?8 ], V$ T
for i = 1:height  6 _" i5 n) y7 [3 }
( |3 b2 D/ ~- @9 ^( r6 g  f  Q
    for j = 1: width  
! _5 r# ~7 |; {6 t% ^, p) b4 l4 t* B! P
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
/ \6 u* z, ^# W, w. J# Z# i& y( x3 u
! d3 r9 ~3 q7 G    end  
5 k# c4 D$ ?9 P4 ]' E
5 }/ G# H- |7 l2 E. ^- x1 ]end  
  O7 x1 K+ [4 x
- B: F# U7 R8 w  \- l# W%计算灰度分布密度  
# j7 [7 ]6 N0 L9 q4 e; k7 H; ^
' U: i! \3 _/ M# K0 Bp = zeros(1,256);  9 F' X, f; b- l. e
# b6 F3 W/ n5 {1 l4 m
for i = 1:256  8 e% J6 q* w9 v' R

+ }% l7 F5 b$ Q: v7 |* L    p(i) = s(i) / (height * width * 1.0);  5 y: _- }6 S, S

1 U$ ~- `" G! P# I/ A- Wend  9 i& k8 j' R2 l* v" w# Z( m% X

7 B+ k5 j* C9 r: @9 A%计算累计直方图分布  $ t' |7 K- X4 E& X/ `; c

* m0 J1 ~7 t/ w. F4 ^c = zeros(1,256);  
6 P% a. I( f* |' T3 X9 a$ K" B6 F# M! M  u
c(1) = p(1);
( H# |7 n0 \% X
* U" M; @$ N- H8 E$ ?for i = 2:256   
% E( A0 f2 A" x9 c. Y; F
9 e& G3 B1 K; \" Z+ S        c(i) = c(i - 1) + p(i);  
& _" e* ?( H: y1 I: L5 U% _5 [8 v4 x. G$ L1 q6 `- O' j/ ]4 {
end  , z5 I0 p% H6 E

0 y0 \3 \% F  w' d! p6 s$ A%累计分布取整,将其数值归一化为1~256
+ z- r; i7 O$ Q! U+ ~# P+ k6 M/ R: L: m9 P" ?7 y/ o4 i: V3 L
c = uint8(255 .* c + 0.5);  
+ ?# H8 Q0 z1 U" A; u7 h# z# c2 [" c) ]* }" ~
%对图像进行均衡化' {$ F: C5 O% F5 m% u2 _* `" B
' \2 q+ X3 j/ V5 C" m% [
for i = 1:height  % ~/ d( B5 Y! y2 w+ Q6 [) P3 c
6 X% X3 U# o( n6 V+ {4 ]6 n% ?
    for j = 1: width  
; E6 W) k7 l  r2 p( E) H
3 k  M; s, q$ r  A5 e/ s        Ib(i,j) = c(I(i,j)+1);  $ P- x! O0 c6 D0 n2 G7 N
+ m1 d& j9 B5 n. r5 Q
    end  . M$ \1 [% J$ r0 D, b' y3 W
# `( `+ n; q7 F
end  
; Z5 L" o, L6 k9 q3 Z& C( z6 t; m  \* f
dis(:,:,3)=Ib;
5 }9 V2 D: D" }# C7 H" ^, ~+ ]
3 U7 x2 x8 C: J$ m5 c; r# s& G%subplot(122)  & n! ~0 K. J& z7 ?# H' n
- D" V0 J8 Q, }$ x* Q8 l8 t6 y
%imshow(Ib)%显示均衡化后的图像 / }8 `0 K2 A* Y) p) N
* C8 U* R0 B: R
subplot(122);
% t- }; k' C$ E) g& _7 _
: Q$ s0 H% ~5 a6 u3 m8 Nimshow(dis),title('处理之后的图像')%显示均衡化后的图像' v8 o" a: ]) f" A6 z' E
4 ~* {! s) v$ M2 R5 W
4 g# Q' I; e! h% c  ?% X% ^, c
  B/ B( ^: u7 i$ s4 |5 L; `6 J
  • 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-6-24 16:35 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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