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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
用MATLAB仿真基于直方图均衡化的水下激光图像处理
8 ]0 l5 K% E( m& o% v* u5 H; Z8 u, ?* ?, R
MATLAB仿真程序:
8 N9 V; w" r: T5 ?3 H+ ~+ G
( J1 j/ F( s5 @0 `9 [%{
" i9 |5 T! o& ]" l! a) B1 t2 w7 t# ]' J
  基于直方图均衡化的水下图像增强(MATLAB仿真)2 p: H9 [  Z$ k

3 Q1 e+ t# N6 b, K* N1 G, C  对RGB三个通道分别进行均衡化处理,得到增强之后的图像
  O5 e6 _% H; j9 v, k- `, y; C. l
3 ~6 w/ C$ X5 g) b: I  实际测试,效果明显,下面: T5 o6 ~8 ]* p7 |; V

3 K$ z% S# y$ l( o  时间:2014年9月11日23:59:01
3 G% D" F' _3 R
8 R7 h$ G' v9 E5 [( X  整理:天空之恋
- g! y2 `5 s+ A3 u$ p
. I* h/ o% l# a8 C: B: V8 @" f/ h  地点:桂电
7 X2 q: d# P1 q% v5 T; c- ^( ]4 x, v
$ |- U) b: _: v6 E( z* e%}
+ \- ]5 D% G, e% B9 N* r! d& S, P
( z$ _$ h: R& dclear;6 c. w0 g& n) v4 `1 C( v0 J0 ]+ W9 t

5 T4 B- C- X# v) L+ Y' K. [t = imread('wa5.png');  
( @2 B/ I$ a; f. o- a5 }2 {
/ S0 `8 E5 M4 r4 `( f" lI=t(:,:,1);/ t; \4 ~# ~$ g6 q' L; a, X& F
9 U$ m+ i6 C7 r( w
[height,width] = size(I);  
3 d' N+ g( Q* T5 h; I2 t: e' I7 q: a; W& G- s1 {
subplot(121);
  p: N" v4 m0 Y" G0 Q& ]) x; d$ r+ I+ }, i, q5 l
imshow(t),title('原始图像')%显示原始图像   
5 Q$ v0 P% g, R# o, C' K# C: c4 E. m; N- Z- C0 Q8 K0 ]
%对R通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
3 {8 H1 F8 g* T. M3 y$ ~1 }' z8 G5 R/ A: A; c, t+ `
%进行像素灰度统计;  
$ h, g. k% g) V. ^- j0 _) ]' G5 `
s = zeros(1,256);%统计各灰度数目,共256个灰度级  - k9 F$ }& J: J# k
+ p# z, M8 P/ a- i+ |1 J
%绘制直方图, T/ x" x1 z7 D7 z' J% ?" }% F

! K7 `3 w* `+ bgp=zeros(1,256);: u) y- [/ w! e  o+ f; h4 ?) Q
5 Y) Y0 c" Q, @& I- m/ I
for k=0:255: u7 [# j3 f! M% m4 c" `. a
' g3 i! R: y2 O7 z: {4 ~# k
    gp(k+1)=length(find(I==k))/(height*width);
. O5 q$ A: h. U1 t: t- G% f- d% H+ K1 R
end
$ _) J* f! P0 G; Z* B$ W! D4 D$ U' b
* p/ i' I8 [0 m. O7 D9 Hfor i = 1:height  
8 q9 R  i8 K# c* ]1 I
7 [3 u; t) l* P: }$ H- ~8 }1 F  D: E    for j = 1: width  ; ?7 P/ C6 Q6 _5 [6 q
' I, \1 K8 d5 q1 e3 }+ w# `$ \
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
: E3 I: n0 w# m1 _  V1 n
$ R6 u6 [- t6 Q0 L    end  
. n9 {: \$ N8 v) r; `/ Q, o+ Q
" A) |" [' @5 K( o' j- Eend  
$ e- n% A/ g! q6 J  f
3 f) K3 [* f$ h: G%计算灰度分布密度  
6 X; F9 _) `: g' C- N4 i* m" Y! L0 ^8 `! `7 y1 t) U  s0 C
p = zeros(1,256);    Y. m" B/ O! f9 w: [, B) @4 B

( ?) _/ y5 ^6 B: q- C. J) bfor i = 1:256  3 o0 X; z; d" j) B1 B

9 @3 h7 x0 g5 |    p(i) = s(i) / (height * width * 1.0);  ; Y/ p, f8 I- P4 r) J& P7 [
4 N1 w3 `8 J* q& N) R+ n2 H
end  
! a- p5 w# r, P& N0 I
% J- Y) f' F/ V" j%计算累计直方图分布  ! G# z) H: Q$ _, [0 a
) J* B* d5 M. F) @* J2 Y
c = zeros(1,256);  5 {# l: p" W. _; S
6 I: k! ]4 y% W# ?, p' c0 t5 t0 H
c(1) = p(1);
& Y7 J( f2 L5 _9 r# a% z5 s8 F
. Y4 V9 A/ h9 [# cfor i = 2:256   
/ a) q! m6 B, m5 x1 }3 q& q; h* ^, D) @
        c(i) = c(i - 1) + p(i);  
" o' }' q  E3 x4 l1 Y: n- y) y7 s* _1 m7 |3 F1 l- J# i& s5 D
end  2 X9 [2 e8 [! C& R+ {- X

4 i8 ~. A# u5 t% O( ^%累计分布取整,将其数值归一化为1~256
4 X% a- p% F% h/ M# p
! p5 ?0 E, T, t: s' Xc = uint8(255 .* c + 0.5);  & C, i; {; \* U$ Q) h

* H- k, O# K9 s4 b8 s6 x* i: U. K. I%对图像进行均衡化
, ?  n6 z* A1 w6 x% \. X4 n
4 \9 A7 b* P9 b. p" Pfor i = 1:height  
8 A5 x1 k. v& z! \4 K) ~- |, W; P$ t$ J1 `
    for j = 1: width  
0 ?! D( o" w% W9 I$ e
0 D7 B6 z! x. e" C- b; P        Ir(i,j) = c(I(i,j)+1);  " I' p2 d: C. v* n

# V  s) }( e; A+ J0 m; P. y    end  * x$ N8 y2 N7 u2 z
# _) U, Z' \5 f/ ^& }, L+ {
end  / S' C' F( ?: x9 q$ e, e* \

2 M  f4 x; t, I5 s) mdis(:,:,1)=Ir;
( @' [7 ]0 |1 @
& W3 B' R0 S5 l+ _  V" x. F%subplot(122)  / b4 c; E6 Q) x* e
: j% w; S+ ~9 y" {9 N; n7 Y' \7 E
%imshow(Ir)%显示均衡化后的图像# H1 x) i6 _% @: v" k8 @1 E+ ?
! d8 S; p! U2 G5 Y* r
%对G通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
, B9 N& C+ S2 I& U- q3 @3 k% B+ J1 r3 ~, u: {
I=t(:,:,2);- i& `- g" j6 {% Y
# B- U) V' P7 Q/ I- Q
[height,width] = size(I);  ! d0 \0 R) H7 p3 T' m  ~
5 @2 N6 p! w& z9 q' f" M
( C1 d( F" ^# F' L8 i, `

0 t% N% l+ ^- w%下面使用直方图均衡化进行处理5 u+ T! g; R2 a: o3 ^8 U# o

+ l4 O  @! ^  Y3 Z7 N%进行像素灰度统计;    O8 e! H$ A. s  Q2 ?9 B

9 F" N6 ~  U' r. x- Zs = zeros(1,256);%统计各灰度数目,共256个灰度级  
! N0 D' y7 D: E$ p% j! h0 Y; }7 F! c
%绘制直方图
( q- l  `: q: U% r& ~; d1 L9 E8 `# x, Q2 ~5 O; {! e$ a/ k1 e* ~& M3 U
gp=zeros(1,256);
! [! g; j+ y2 z8 E  T9 T. {, P# h$ d3 b1 _* ~) T9 e4 z  g" p
for k=0:2550 c( ~. H  E! P2 q( [

" y, d. G+ A+ X    gp(k+1)=length(find(I==k))/(height*width);/ g: {. |) O4 n) k3 Y" {- E9 E
+ X( A2 B( C5 y- a. s! ^* ^% R
end' B0 i/ R2 X+ y

: `1 R) c  e( H5 S8 cfor i = 1:height  
% D! Z# W1 P: G7 u
. ~" w/ z! L: ~2 @* V  H    for j = 1: width  4 O+ S2 g, A$ r5 o" i0 h

3 H3 `5 Y6 [; p' H* p. n        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
& O' h! j$ s1 l6 |8 e" i
% F# \, E( p# P3 e3 n- v! b    end  , ~' k6 B' i% W- T

+ s) b  q- l2 x, p5 t" Mend  : O. R( c1 s) ^, n) e

. T* p/ C. g, g; r, g) R9 _%计算灰度分布密度  
. h6 I- |3 w% s1 `9 {2 G8 i  n
. [, s6 ^! b7 `1 a6 k$ E* T3 e9 [' vp = zeros(1,256);  
, ]6 W# K' b0 C2 m. c+ A/ R3 L4 P6 x; p6 p' ?1 V, b
for i = 1:256  7 U" n5 x( U3 N0 C
4 U4 \: i' r2 C2 ]# M" F; `
    p(i) = s(i) / (height * width * 1.0);  3 ]% t2 ^7 k* O1 A) n

1 T- p" a9 |$ P4 k' k6 X6 zend  
! k- B0 [6 x* q1 L5 j6 M% P" y4 e0 I- [2 L9 z
%计算累计直方图分布  5 y+ O8 I, t$ @* U& g+ v: }6 z

% c5 n$ X  e8 Y; E  l7 {c = zeros(1,256);  
4 J" l4 }6 e! M4 O8 U2 V, {
: r" z' n8 \1 @, _* h* o; |/ t# ~4 u; A& {c(1) = p(1);* o! {) C5 E9 W3 b( H

* u9 m8 d. K! _& m0 B" {for i = 2:256   
8 x. Q6 o  B5 \0 @# d8 m1 s. U, r# B8 [# O0 \
        c(i) = c(i - 1) + p(i);  
! B8 f5 ~. F+ H& k# c" V& H. E: \9 [1 U
end  4 @; X+ @1 X6 @/ j3 u9 T+ q8 e# ^: S
/ F; Q+ C# p1 k6 m6 r5 F! v. n3 y! `
%累计分布取整,将其数值归一化为1~256 ! T4 m  x, u. {6 N5 i. m; z) K
8 k) c) b; Y9 h3 I
c = uint8(255 .* c + 0.5);  ( H' v  B6 Q, G9 W$ q
. T# \" i- T) e" m2 P! l
%对图像进行均衡化: f( [$ i& k) f! g
" ]" x7 N/ V3 S. E  t9 G
for i = 1:height  
' \& E, q$ }% K2 F1 M9 B5 K3 ]/ o
    for j = 1: width  0 T5 P' a9 w, ~" y+ a# h/ b

3 d' j0 K: [6 T6 u* F# \% n        Ig(i,j) = c(I(i,j)+1);  : U6 W1 z+ G9 e
3 X& Y" |& J4 A& W4 p
    end  
; I$ y/ J- [, d- H0 \; E
# i# l* r5 |7 c* U$ V; wend  6 _6 O$ G8 o$ L2 Z, e
! ~2 u9 G& J2 |. a6 W- h4 `7 m2 i8 z
%subplot(122)  
: c9 }4 h& W1 E4 L% l  h% Q- ~/ q
0 j# H3 n4 d. B6 g%imshow(Ig)%显示均衡化后的图像
/ k4 D# e; h3 n' Z0 f
. ^2 k0 y: h1 |# b, H$ Edis(:,:,2)=Ig;
# q/ c) Z, C- M
4 j5 T: |4 J  Q! T/ L' X. ^# S) H- D' q" ^5 Q

. V9 S( D6 j0 f0 O; u%对B通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
6 H0 {0 I4 h+ }/ {# W  k0 }# y" W: l
+ I: X5 I3 ?+ ~I=t(:,:,3);5 B( ?! ?4 ?; A+ U6 J' {

, x; u8 z% x8 f5 S; L8 |6 |- c[height,width] = size(I);  
0 e8 h" f1 F/ |; m1 X/ O) ~& u& f9 ~6 Q1 K  e. T
8 b  u/ }( q0 p0 f$ |

4 w8 E# A7 @: O2 l9 ^1 L%下面使用直方图均衡化进行处理. ?  z: O4 g& d: D3 A
2 H' s: J6 S! k- Q$ t7 N! \- M+ C
%进行像素灰度统计;  
. @* H0 I; i- S, I" ?8 w2 [% K& }* [( N
s = zeros(1,256);%统计各灰度数目,共256个灰度级  & s# g2 S6 [9 C5 J, f4 w

, p# E% s* U7 h8 P4 D5 ?7 [6 O9 T%绘制直方图; S0 ^2 m# M6 ?3 q( z. y8 w( N
3 |5 j5 ]* U$ [  N! j8 l
gp=zeros(1,256);
  O: f9 e+ H2 k6 P
4 P/ @0 e3 s5 u1 L5 k( y7 Efor k=0:2554 @* B# Z8 E# `

  o: [; b6 e- m, G/ ~    gp(k+1)=length(find(I==k))/(height*width);
% E; w2 z0 w4 d3 G+ i0 Y5 T4 c) Q0 w1 i% f7 m3 h
end2 Y: L  }" b: V; {$ d& R

9 j. p  A, e1 R0 ]& Dfor i = 1:height  
* q3 G* D4 w5 q3 c! C- Y8 Q/ M4 `# ^) A
    for j = 1: width  
& g; v+ H9 N, G9 G5 j8 |% A( k, M! d  N* T
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  5 h7 x9 L7 g5 `& u, m' E

7 g* j& y8 M: A    end  # n$ Z; w# r& |( }9 o% ~9 j
7 K" i" ]2 M( s" s& m2 Q
end  ; k( L) @1 \( Y" N$ X
: ?* Z3 e0 K9 o7 j. ?5 v$ ~
%计算灰度分布密度  
" l6 \) M& f/ `/ A# T! O9 h; L1 ?- J) E) f
p = zeros(1,256);  ( w4 o7 O7 @* ~/ x2 h8 s1 T
! Q3 A: D  y) M- }; t6 V
for i = 1:256  
; i3 f! Z, T' T' h3 n- J  [$ x/ K  V6 b
    p(i) = s(i) / (height * width * 1.0);  
2 ]; y) P0 {( g: z% T5 w0 O# J% e2 J0 |4 F& n& s. l3 N0 Y* f
end  ; T0 H" c/ T/ W7 B! g6 d! A

' Q6 D0 |: |8 h) W) L) x# J9 ?%计算累计直方图分布  
+ |3 t5 l4 Q& H6 `9 T, s0 v: W2 D% }
c = zeros(1,256);  
) H, r5 x' F( S, g+ ^. q
" E. z- O  V" M8 r. Gc(1) = p(1);, Y8 `2 ^  g& e- r; C1 s

" B4 [) p) b( U5 W7 ifor i = 2:256   1 V5 b% A2 |1 |* ^) z8 A
0 Y) F3 u# ]. W% e0 a+ f: Z( ]
        c(i) = c(i - 1) + p(i);  
& a/ ?  C( D2 O( U* n- c
9 w4 E0 v3 M9 e6 vend  
2 j8 M* h/ c( O: g: y' h
* W( J+ w6 x9 R  m: s3 f( Y%累计分布取整,将其数值归一化为1~256 + p, T9 M# S& j; @0 I

/ i( g! ^. D( H1 a! H9 x0 u2 {c = uint8(255 .* c + 0.5);  
$ G8 m9 T) K0 [8 u, ]0 _) R9 q5 w7 o2 U- o
%对图像进行均衡化0 i  p* J5 B% w4 d1 [+ C2 P
6 O4 t: I1 Z* J* z
for i = 1:height  : `; M; f/ K) w& `5 G
: g  O6 ~) N1 W1 ^+ q3 O
    for j = 1: width  $ ^. s! w7 J, Q; A
; n$ D# @8 [( P- P" k, f/ R
        Ib(i,j) = c(I(i,j)+1);  " |( Z0 i" y" b% @9 R
5 Z: [5 ?3 c5 t, v# [; I) n1 T
    end  ) a' I7 z. q! h/ l/ A4 V
  l7 P: a1 @0 t0 V! U# N# n
end  
8 a7 G% z8 x$ ]
& D7 G4 n2 ^% Z# w7 {$ \dis(:,:,3)=Ib; 0 ~; x* K3 I& f) J/ w# X' t' v

$ [% t- ?! ?8 L%subplot(122)  ( P, h+ A2 s7 o% X5 @2 i' i/ _

. i) ], c7 n* Y/ G) k5 E8 C1 v%imshow(Ib)%显示均衡化后的图像
$ n6 f4 I" m, x$ ]" D$ h$ v2 J/ ^5 y. R9 t+ W
subplot(122);2 m7 r: |) _, ?3 O

" u* B, [$ F: p. {imshow(dis),title('处理之后的图像')%显示均衡化后的图像* L  s9 H4 J* S! t& n0 l5 Y
, V4 [2 L, \( L9 Z9 G) n
/ j( m- d1 q1 ~- _" I

: n' Y5 H& X& n8 r- ]+ S
  • 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 18:22 , Processed in 0.203125 second(s), 24 queries , Gzip On.

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

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

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