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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
用MATLAB仿真基于直方图均衡化的水下激光图像处理" d) i) c6 L5 V: @- D

) H* q' G+ Z. L0 sMATLAB仿真程序:6 J: q4 c  g# ?# {

7 f3 A5 H( n5 ~' |' |%{1 Q; ~6 q8 ]+ @  o3 n
, h- j& ?: [$ Y& h* J
  基于直方图均衡化的水下图像增强(MATLAB仿真)
" t2 D4 `% B* D5 J6 b/ e
$ T/ l0 g. u$ q  对RGB三个通道分别进行均衡化处理,得到增强之后的图像1 |* h" U/ ]5 c& T4 d; _# N. X7 a

$ _- Q  M0 [3 h4 t- j  实际测试,效果明显,下面5 D5 }6 ]% z* k9 [5 j0 T. Q; [
9 A4 z6 h/ \# G, x, p
  时间:2014年9月11日23:59:01
  ^( J' h) ~3 Q6 N& J. i
+ u& k7 A" G5 F& d# P7 W& {' ?! {& u  整理:天空之恋+ h) Y9 I; [- T
) d9 {5 n' _0 W% S9 U8 S
  地点:桂电
" ^8 o0 Y" D, [( O& q3 O% I" S5 N3 m' D. z# |
%}
$ K& M1 V( q* ?7 }8 @4 S+ P3 v: W# {- C+ M# \7 k
clear;, C5 j/ q9 q, J! I& r9 v5 B1 y9 l$ d
7 L) h5 o: l) `$ e. u& e) _5 ?4 I
t = imread('wa5.png');  8 u+ \0 N, V. ?" y

8 h/ o, S( z" }% G3 GI=t(:,:,1);
5 R- f. C& q, Z5 P6 V4 P/ C" P4 B1 ]0 a  O! D' ^- z! l
[height,width] = size(I);  # }- K7 ?5 A6 {' b
  \) I$ H7 V& W/ Y3 G  l+ b
subplot(121);$ s1 n) E/ W- ]! K' Q. ~& d' y' j
; \+ p0 i: |+ ~: Q' L
imshow(t),title('原始图像')%显示原始图像   
) l0 M) ~, X6 y+ b! t6 W9 n0 O% }) W# ?! _/ \- {# }, t8 E
%对R通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用3 m. Q2 N  o) |+ K& U9 J  \8 O

$ F& {; i3 q- }3 G%进行像素灰度统计;  
: c/ K$ W, B. H9 _3 Q; m8 L) l: I0 U# [8 q" V& P% N* Y
s = zeros(1,256);%统计各灰度数目,共256个灰度级  5 t) Y/ ?3 ]. p! F$ x8 ?

6 V$ E: |! e- R4 I%绘制直方图" `7 S$ P4 q& G) R7 T

- Q) V7 _) U% V7 ?' vgp=zeros(1,256);
- a3 E) d$ Y' G  A
3 }& l% C9 |4 b  q& d6 n. y0 Afor k=0:255) f$ s% Q) }/ B& k& e
( j; d' X6 o- y/ ~) N# N. L1 h
    gp(k+1)=length(find(I==k))/(height*width);' R# s' Q  b; \% e: U( g: i$ S

. o" I5 I/ k5 T3 P8 k6 J$ hend
* R' F: j' G3 s/ u# S3 s# d6 p, V4 n; i
for i = 1:height  
9 \( a5 i* o2 B: A3 }
0 \& I* }6 f+ ~# U6 H* E    for j = 1: width  
7 @" m! x* A9 s' }9 F6 V; ]
1 P# |/ u3 m6 x+ q$ @4 e! t        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  4 u7 I3 D' r+ ^
: M, D( T$ I$ v7 m6 N
    end  
1 R% X$ i3 O) R' u$ ~
" I6 B8 b9 C$ r( n/ P! Y) ~end  
6 h: g( t3 y, Y9 @. d* Y- c, f+ A. ~# `
%计算灰度分布密度  - z) C# M0 M- n  O

& |- t0 r; b3 C2 B) ~7 j3 kp = zeros(1,256);  6 y: s; U/ K# X

0 @0 t# K; N) `' d2 a- g5 J* Hfor i = 1:256  
! |1 Z; C6 }! r% c, c
6 |& g9 X( _; i; ?+ i$ u    p(i) = s(i) / (height * width * 1.0);  
$ R5 @, X8 E# [. k! e) h% Z8 {9 L
5 S! ^; c0 }$ o! _* ^* u  M* n! [end  
. u. @# H- l& P1 d! Q! P, z7 n- x  ]/ A! m$ o' Z
%计算累计直方图分布  
+ ]: U& {+ _7 ~# x  s; b' n1 p/ @( f$ z: T5 d& i: F
c = zeros(1,256);  & ~/ H" N* t! F% l" e! v
, @; B( s, W. P( G9 q
c(1) = p(1);7 z& j% i1 U! w! b& z% `& P
2 G& o3 }: v0 e" [
for i = 2:256   
* @9 d( ?4 g( Y3 R% `  ^1 v% Z+ p4 q  I: x8 |
        c(i) = c(i - 1) + p(i);  ) z/ G# c; g; F' Y7 E, w- w! g
' `, O0 E" l7 k3 T5 U
end  
4 I/ Y& {# K/ v. f( B; v# g1 n( ]% `: r2 M4 w$ p4 ~
%累计分布取整,将其数值归一化为1~256
0 A8 T8 s3 U# [& ~7 o# @; ~/ `- O0 H, z; u1 ^1 G- f( w- [2 ?7 _/ ~
c = uint8(255 .* c + 0.5);  7 T) Y: [0 \1 |0 L! n

! @4 c  }5 S3 R) \: O4 j: r, @%对图像进行均衡化
% y8 `* l4 L* o) x# p6 [8 W) l
. a- y* P& Z1 i& W& z) bfor i = 1:height  
6 Z3 Y( k% ~% \. t- e0 }+ ~# g5 h# ?
    for j = 1: width  ' A) ^4 f4 N4 p" L3 Z; _
# Y; Q/ R- w: J
        Ir(i,j) = c(I(i,j)+1);  
$ u  U. Z! |9 |. {) {/ _$ w4 ]3 ?
    end  ) q' w4 n5 `! q5 |/ w, F
& R% g  ?  a( ^; d
end  
1 @4 A+ ]* r9 c3 z5 ]9 \8 a; G  o. P6 A7 l, X9 t3 x: a
dis(:,:,1)=Ir;6 T! t$ g- d& b4 X+ U

8 d* X+ \5 U) A. {% W6 w* r%subplot(122)  
* Z" s0 u7 w* n, W! R0 \! w# z
8 W. G8 [" h; }- I* x%imshow(Ir)%显示均衡化后的图像
; R' {! w( j) b9 `' D
$ n  l  p" M+ Y6 `%对G通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
5 y; w- X# E0 S( [3 D9 ]& V) ^8 I1 {. q- o# P# ?
I=t(:,:,2);& y$ s& b% P4 K& u6 `
. j, `6 P# N1 j5 y: [( Q3 S6 g
[height,width] = size(I);  3 z. W: w, t9 ^; @
! B: z+ @% X7 p

. O7 Z& M' K  ]" p6 X! k
; e% y8 `0 d9 U8 o% X6 o5 I%下面使用直方图均衡化进行处理" _: O( P3 O8 b2 h/ @3 \4 ?) m
9 ^1 W# K  R+ N" J  J
%进行像素灰度统计;  6 k) q5 D. ~0 c
1 T, S7 {! t  ?% R  M
s = zeros(1,256);%统计各灰度数目,共256个灰度级  : y1 W! f2 ?3 K' d

4 x4 I- _- H( f%绘制直方图
  a3 g' `3 K  B& Q' h8 |) E& \$ H! y' v& T( c
gp=zeros(1,256);& C) |& \" S# x, S, s: i
, U0 U% M' s+ b6 i3 `
for k=0:255
% X) ~" {' Q; q* Y
3 @7 y1 S8 ~% e3 c* e+ f    gp(k+1)=length(find(I==k))/(height*width);
) Z1 a1 {$ v2 N# U# g& O4 A6 T3 h5 p
end5 [4 ~6 c0 F/ F: w

- @# b) D5 p2 }; L- J7 E& i5 W) |. E2 mfor i = 1:height  " g4 ~3 a" G$ W
; ^& i4 v+ h6 u% I/ e
    for j = 1: width  * m* u$ \: s- i1 Y. A/ N% I3 j

  w7 \8 [5 C& ^        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  " t; @) E% |5 w- b; F- `) q9 k9 U
& W3 a* q6 V' X
    end  
' K+ |! Y0 \( f( W6 I2 E: x! d, I- e2 E* A% Q9 B
end  + v. O: l- p4 Z( l; J* g3 l; u( x
6 h: {# `- ]$ ]% a+ a
%计算灰度分布密度  
. z8 n7 Q6 e5 }' \  t/ ~: K% L! @0 F2 W, ]1 M
p = zeros(1,256);  * L. T0 g6 b9 F* `8 c
. E; i6 s" o& Z% V4 Z( Z
for i = 1:256  
/ D, Z) U% B2 N3 P$ @
- X$ T1 k5 l' E6 e9 U& p" |    p(i) = s(i) / (height * width * 1.0);  
: q0 E3 K1 x* d/ E9 p" @: t9 k: a' O2 |
end  6 J/ W* w" k# _. h1 j  c
; G) T8 e$ O3 D5 o
%计算累计直方图分布  - {5 F  @2 C/ i4 w9 H4 x; k
( x" B* l5 h6 _
c = zeros(1,256);  
( F) g! }( a0 z' ^, V: l% h" K; N2 f$ y3 m% G" L
c(1) = p(1);2 k8 V6 f" n8 x* Z' _# t
/ p" [9 O! d* Q0 J$ N$ `) Z- T
for i = 2:256   & u. K9 c8 h7 v, k- Z
- _" K/ y5 ]" E5 P6 _
        c(i) = c(i - 1) + p(i);  
3 i+ k5 S* s* v: U7 F9 t7 Q$ B) l8 s) N  t, f; q0 n
end  
. V& o/ T  j2 ~; ~" u: V
1 Y, L; ?+ O  I# \: R/ _%累计分布取整,将其数值归一化为1~256
( q# e9 s) d/ l3 c, }( V& ?# b/ d5 J4 |) Y5 {+ H  e7 R
c = uint8(255 .* c + 0.5);  
+ ^$ |- b# s) f8 h! u) p" ]: h" d' q. ^
%对图像进行均衡化
! k* g7 z% B: D7 [8 [, y$ j; T. w
+ Z7 n6 j9 s& x6 j- Efor i = 1:height  ! J6 C5 K3 X; _& J, S4 z
$ |( d2 |/ o$ X8 U' _# D+ _$ Q
    for j = 1: width  
/ I; L( a* Y: ~; J# q. e
0 y: L1 Z2 X# h- N3 g" u0 d2 k        Ig(i,j) = c(I(i,j)+1);  
2 p2 p& _6 b+ }+ E# R# Y: L& h  x2 t$ n
    end  $ L. H% ?' _. u3 t1 }& l3 C

# `9 Z9 Y+ R; c# Y. q6 jend  
- n3 r4 O' ?) ~* H0 A* \7 |' `, K$ E4 L0 I4 F1 R
%subplot(122)  
: z! q1 w$ \. v
3 n$ i" Z: x& h%imshow(Ig)%显示均衡化后的图像
2 X# ~  r- b- j; \
0 _4 }: m7 P; X- s' ?3 mdis(:,:,2)=Ig;
( q8 a6 }& Z' }8 a' e7 f
6 \- i0 Z8 Q& N1 g3 w! M
' o6 \; [% a% K- J! x; F0 {8 B1 i
%对B通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用9 e- p+ l2 A5 @8 F

8 z6 E( j& D( g' y; hI=t(:,:,3);  [! U8 N( `' V' y1 R/ B
6 ~% p% Z* _' X" n/ q5 y- b* x
[height,width] = size(I);  
/ O- ^5 E. y' s& _0 C, n/ p) q, L7 \/ Y

" @7 g  ?6 |- b, X1 W; n: h5 X; R9 D8 k7 v
%下面使用直方图均衡化进行处理
2 F, p7 u% l9 K; B) Y1 g+ G0 G1 ?! z7 l6 @! t- Y. `- z. y  D
%进行像素灰度统计;  
0 A. G( _1 C6 S& p$ P8 W4 ]# b0 N, `4 R
s = zeros(1,256);%统计各灰度数目,共256个灰度级  1 _  I2 w  j- ]/ w
' ]2 u5 V2 X' I4 D; _" {( [' N
%绘制直方图& v% u. G( ?2 W
) A1 R- e2 k2 J+ \9 w+ V. M/ P
gp=zeros(1,256);
) }% a* F1 `. D; y* o% T& C: y! K6 `: E7 e1 l; M. ^2 K
for k=0:255( E6 s1 z/ k' g0 x# A

- Q9 H3 ], h2 P    gp(k+1)=length(find(I==k))/(height*width);
6 y+ k  z% w9 O+ P* V% K- P, H0 E3 G2 w$ G2 P; z  M' {+ r+ {+ k
end4 ]1 _/ ]7 w# ^$ G0 R$ P
$ c, j0 B! D3 V/ r
for i = 1:height  
0 l! T7 w1 J: g$ F+ ^. i5 S9 P
4 C9 f3 K# z  k; b/ Q4 M/ u4 y: [    for j = 1: width    _! d9 ]0 j+ M+ d/ A

& Q$ l. _8 X' w+ a1 K9 v' n        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
/ t/ K- O, b7 `1 [
. \8 l8 n' `7 r& T1 Q, Y4 k, I    end  ! S) o5 s4 f2 C( u. u, @1 u& z: Y8 ~
! ~5 N' Y# ^$ {. {; U; Y0 ^
end  
) z# \5 Q8 Z3 e: H& W/ m9 A. F
7 S! ~  R: H& |$ R$ _%计算灰度分布密度    H! r/ q7 @: B8 }" O
, s' y- ?2 Q; A" _! t- y3 |/ l  F
p = zeros(1,256);  " l/ B& x' v7 r% D1 N' w
" f6 ~) ]& t& W( s+ w0 K6 M/ Z
for i = 1:256  2 f8 K. I$ Q1 V
) ]3 g' u7 e5 g2 S% a0 b
    p(i) = s(i) / (height * width * 1.0);  
6 }" n+ }! x! i" c6 @: r1 m0 w; G, q2 @% K$ D: c" |4 L& v6 U
end  
5 C4 _' G: N5 K7 I! `
6 X) ]7 t/ j/ U%计算累计直方图分布  + i) {' o, l5 c* J* k+ `
6 |4 v* L5 o) Z% Q& X6 n& s! b
c = zeros(1,256);  
! d4 V# y0 J- u! E: Y' ?! ]9 `0 `& z+ o: _" I6 }
c(1) = p(1);7 E- Y! |& Z8 `

6 g+ o* K2 U1 P2 k/ ]! h3 nfor i = 2:256   7 Q, o/ x0 T* [- `* H

1 v2 `* g" ?- V        c(i) = c(i - 1) + p(i);  
# B' G; t( V' q% Z+ t3 o8 C6 s+ ?
8 N5 o  \9 F1 A" a4 ~8 l' S, pend  9 S( e5 Q2 {* T7 c

% ^  D/ y& |1 J% e4 e0 F%累计分布取整,将其数值归一化为1~256 ) c" a' U8 a( e# h/ P- C
* ]. O# j1 o* v7 @* t3 N; ?. V
c = uint8(255 .* c + 0.5);  
' ?; o4 w) h9 t- K
+ d$ V/ ?3 k& t% Z: v%对图像进行均衡化5 E  d. d3 C2 {) u, s) X

  {) }, [; i3 ?  ^* {. ^: lfor i = 1:height  9 Z8 g7 |0 `/ h. x3 i6 s- `
( T/ g* |% Q( S' N6 ]" V6 p/ q
    for j = 1: width  . o4 J0 @6 T+ x5 E! Z

6 q" b  \5 ]6 F, z% O* R        Ib(i,j) = c(I(i,j)+1);  1 {1 G( O7 M5 W0 Q

8 j  [4 O+ {3 S    end  
6 H3 W1 c, m6 B# N4 r( B8 A
; n, ^' z( O& N# }- e# f! lend  
, U5 o3 b: x" R+ C$ m
* x% ^+ e0 N( L) P$ gdis(:,:,3)=Ib; / E2 p2 y0 D. P5 `) |) s# v& |7 w4 y

5 y( f8 q: M5 q* g' b%subplot(122)  
: m  w* j# H0 k4 W5 R1 v. ?
9 y: ]9 y& e; `, H+ Q%imshow(Ib)%显示均衡化后的图像
5 u9 E; M' w! U; T- x1 C+ X0 T* C& l( l  T2 s6 B% \7 R
subplot(122);" h3 L, x8 e: @3 d+ K
$ [" L1 C$ W8 ^$ r
imshow(dis),title('处理之后的图像')%显示均衡化后的图像6 n: z( t$ k% z% G" A, e

) g/ ]. ^: I7 ?6 a1 v- T6 f7 l1 B# r9 G8 U$ F7 P

( k  L0 P* X' N# Q- r. }' I5 L: H
  • 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-10-25 13:37 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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