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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
用MATLAB仿真基于直方图均衡化的水下激光图像处理, y3 H( ]% J3 ~8 i& s5 a$ r8 y  R

! V; a# n7 X6 Y. q% \MATLAB仿真程序:' u; L& B5 G) w8 u
. |4 _8 H$ \8 E
%{
+ a1 `1 P" r7 ]2 Q; S9 B+ I, m
/ C! e6 i' C; K. ~) H! X/ E  基于直方图均衡化的水下图像增强(MATLAB仿真)- b1 M, m2 ]2 p/ i$ U

2 k( Q; a3 _9 R1 T; W. \9 Z2 V  对RGB三个通道分别进行均衡化处理,得到增强之后的图像
! O7 `+ P1 z5 c# \3 a
# B, q3 A. \$ o$ a9 {- w  实际测试,效果明显,下面: Q6 c% c4 Q+ I' o! R& y+ G8 Z: \" q
9 U  M  j! m& k% ?, B0 U
  时间:2014年9月11日23:59:012 h4 d( o' x; L: g. S9 \- N

& a2 G. R% j; ~% B- q  整理:天空之恋
( \  |  F) p9 v$ ?) `
( l# C2 W+ ~$ z  地点:桂电) [) V# l1 I- h7 |2 a2 c7 [, e
& ?1 M* v4 a+ p9 p( ~; l( H
%}  M/ ]1 Z+ |3 k) L2 S
" w$ W! M. z# |: }& f3 \9 u0 {! j
clear;) @( O" a4 G: N" ]( z" H, m

6 t5 C) D3 I' e: R0 T1 X3 L' tt = imread('wa5.png');  
! e1 J* B' ^+ s2 t; o& B- o' o6 n" F7 j5 G1 s# E
I=t(:,:,1);
( ~/ W/ e( ?* v5 H% b5 ]
- b! Z6 [1 a( O  W+ W- w' p[height,width] = size(I);  
, c7 u3 B2 e" r0 g& I9 ]: C
! ]8 p. C" a$ R, X" Q4 Xsubplot(121);
4 n! x. g: U0 l5 p7 G# p) {1 [8 r! @; i% }! E( b! X
imshow(t),title('原始图像')%显示原始图像   
# ^' L/ Y) N6 a) e0 f
8 F: N5 P2 L% ~! E: H%对R通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用! v: Y8 e8 K0 j- R

1 _, v* k+ {% z1 t%进行像素灰度统计;  
' H- G. v2 L1 r2 j' i
2 Z. X) p: F! U( D- s; Cs = zeros(1,256);%统计各灰度数目,共256个灰度级  + X) d3 B/ W5 m6 Y7 ?- Q

0 i: |- r, s5 G* @, {0 [+ t%绘制直方图, N! v# b2 W* |8 R+ V' {' E9 V" W
9 A4 k- r( ]& b7 N' Z. N- P
gp=zeros(1,256);" R3 x) I+ n, l) v" q
+ p. P8 [2 k3 L8 l& D% [
for k=0:255# l0 @' O" T3 C8 R
! C) r2 T( J1 f" N5 I' x
    gp(k+1)=length(find(I==k))/(height*width);
, w0 O. a5 p  \9 F/ G) o
0 B/ d" a# I' |, b% b3 a' ^end4 K4 {* C. s  s1 H( z4 U

$ E1 y$ r( p8 hfor i = 1:height  
4 M& F& I  O3 }; I- Q/ t
' k# t' F' w) ]0 Z+ [    for j = 1: width  / v* U7 u' [" I2 |' ~) B
3 l5 G( V/ Z4 P2 \( d2 a
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  2 A. o$ ^7 m& Q- a$ a
+ e2 m$ C( t; u. H
    end  + k& Y3 p4 w: Q. U7 m" w! t
' j7 c# [, ~9 C6 J+ f) l- k4 |
end  
. Q! f# J) p0 Y2 I, W
6 x+ T' o0 [; a# b8 w%计算灰度分布密度  
- Y8 S. P1 ~7 z  ~4 C+ z  n% ^8 Y1 s4 H, B
p = zeros(1,256);  * R) V6 l6 }6 c) q* b6 L

$ u* g6 F3 M4 c$ x* ]. p6 Ffor i = 1:256  / k, w$ Q# @( d# w4 v% t! X/ k

' [$ w0 ^/ v4 Y& F5 v    p(i) = s(i) / (height * width * 1.0);  
0 R, }0 i0 u5 ]" X8 Y4 `0 }
& L" V5 M& O+ o1 uend  8 k) L* p) \( C) X7 f
7 _5 i8 E7 a5 L2 k5 [: s2 _& o
%计算累计直方图分布  9 q; E8 d5 \9 O
$ ^! m2 F! A8 I) ?' U
c = zeros(1,256);  
/ p8 ^# F" d  }3 S
' U) a$ g6 G- L; }" t9 }6 V- ?c(1) = p(1);
  \5 h7 S3 x5 j/ t
! M& x9 h5 o" x' K" d! d* Cfor i = 2:256   
5 B4 _' d0 |9 S+ H0 h
+ l8 D$ A  u2 s9 D3 L% ^        c(i) = c(i - 1) + p(i);  ! }% ?! ~% f  m' M0 D+ S' N

& J( N0 ~- z$ W6 P* g2 mend  ' }7 H+ u4 y: ?' [! H

7 ~1 e/ d+ L) ]$ }9 h%累计分布取整,将其数值归一化为1~256
7 m  J- q$ R& X6 c3 z/ E, B0 v$ Q2 B( o4 A5 y+ b
c = uint8(255 .* c + 0.5);  
+ L$ m) C2 U+ V' P! Y) A  U2 O. ^/ A( q
. q/ q+ u/ ^5 `%对图像进行均衡化' s) ?' b" J4 U" W+ V% M
2 [3 V2 V: l1 u% \& i
for i = 1:height  
% y, i4 V0 }; d/ ~& }
+ i: Y' L6 Y6 B" U9 V6 w; m2 Z    for j = 1: width  ) P3 C) W( o; ]/ K- u3 s
2 r+ ~# J9 L- r$ A
        Ir(i,j) = c(I(i,j)+1);  ' `7 D9 r- _: e$ F4 {* k9 u

4 ]/ s8 V$ g) N, a# Y. m    end  . \1 l$ |6 ~0 d# G6 @' R+ c) ^
  H% \* h2 ^/ F$ n. s: [
end  
1 K% X1 p0 ~- X2 Z0 [+ v3 J4 p
6 N2 K/ e7 L2 ]9 |) W& \dis(:,:,1)=Ir;0 u$ ^9 B8 K( E8 z

* @8 m3 k% F- B  h4 \%subplot(122)  
) P$ n6 _8 u+ W: g: `9 _3 b. O7 }5 G$ n! L
%imshow(Ir)%显示均衡化后的图像
4 r+ n# A! `$ {( O+ T6 s7 l9 s9 m4 j2 L' Y. ~
%对G通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
$ Y2 d( R0 r$ @# J1 p3 r
7 N1 Q7 q; K- Y6 V1 m- e. KI=t(:,:,2);
; g7 {6 m' H7 S% `. P1 r4 D  ^& }/ J8 S+ r( J
[height,width] = size(I);  ( w5 D$ w; u3 ^
* g( S& ]6 f  t( V9 c/ m/ }- _

: N' G( ~+ b4 p
$ e/ a7 q& ^/ w5 S* h& c%下面使用直方图均衡化进行处理
1 ~4 l) [0 ^3 Z6 e- u( c$ v; o0 `0 k& ^) N
%进行像素灰度统计;  $ P; J+ ~, t2 `. j2 F

$ ~. w8 u9 V0 @s = zeros(1,256);%统计各灰度数目,共256个灰度级  * i5 S* L' G& T- y- y9 Q

( |0 D0 n, v5 H( k1 f%绘制直方图8 ]0 z, D" O" D) l1 N; ]$ N4 V

3 X8 C2 l. T8 i. n* Kgp=zeros(1,256);" O+ X: Z& V9 A( u* j1 |- {0 ^
2 v# h0 Q7 J( s! H, i& u6 N6 J" a
for k=0:255
; e. O# t2 L- C; l2 |: K3 f) ]( k( e
  \8 P2 f" Z. y  z, x' t    gp(k+1)=length(find(I==k))/(height*width);
2 K" n. P6 Q" ]$ ?; c$ f" d, N7 r2 d. N8 f
end! S- O4 D$ A: c

! R1 n  J* [1 r( u/ ^for i = 1:height  1 p3 e' A4 U4 {7 a9 e  i& o5 a. p, q
2 c" E2 B1 T# s) ]
    for j = 1: width  
, O" G8 M" {' A3 N3 l& h6 |% n; u7 `% l* u6 L+ ?' E0 X+ {) Z, `3 P/ F6 |
        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  * _3 m  P  a, p% f; y/ L$ S
3 S: I) ?( T: c* i
    end  
- U( B6 s" s3 S8 Y/ v- g6 h
7 o- V+ w, U, L- y" Gend  6 D3 L, p# ]. O/ q$ v) Z/ {

2 {" x/ i% b( m%计算灰度分布密度  
! ?( r$ B  T1 O; P2 x2 S5 x) k, \4 J5 h. a( _, \1 q
p = zeros(1,256);  % H2 L2 F! W9 E! y) d# q
4 `  _' g$ w& M( ]
for i = 1:256  
" a) U( {0 O' X+ W7 l$ m) x
. D7 v$ |& |4 \4 O    p(i) = s(i) / (height * width * 1.0);  . r% H$ N+ M3 T; D9 Q+ O0 c
. a, T9 j0 r" ^6 I. U- p
end  ) b, s7 a) }7 Z; g- W
8 J; @) J# d! O# ]0 _& V
%计算累计直方图分布  , O9 E0 M  E* T2 |

3 C7 T$ @6 m; z& ^c = zeros(1,256);  3 B/ v9 \6 x% F# m4 t
7 e1 E( r! n3 d6 r8 [
c(1) = p(1);
" e' r/ `" P$ E5 {$ Q6 P0 r# }4 R; H* ?
for i = 2:256   
# Z$ \$ |( @" u3 l8 H" J1 O2 G' H; @) G% N; w) K# J0 }% w
        c(i) = c(i - 1) + p(i);    q6 M2 P/ ^0 f, h& u5 \
& B$ X0 [5 C* W- Z8 w! d+ A
end  
+ t4 `: v- I9 A: G6 ?/ ^+ M# `" _
%累计分布取整,将其数值归一化为1~256 0 ^) [$ c* {, X% x* N
( G1 x& g: c5 s9 _7 s( [, u
c = uint8(255 .* c + 0.5);  
9 K9 ?$ n# S, A0 s
) v& L) A: A: q0 d5 b! a* m+ {%对图像进行均衡化
& G) [+ V& X: E# t) b" W3 W6 w* n5 b5 v4 l
for i = 1:height  5 ^8 B9 w( P3 x9 ~$ c4 O$ Z$ W) M* }

) m) o8 w( G6 o6 N. W    for j = 1: width  + i( r4 j1 p. \

+ e. |2 e) w8 p" V        Ig(i,j) = c(I(i,j)+1);  7 M8 q* \, o) n% v$ S

. S* x' \# N4 r" I    end  3 }  H7 S2 f# Q3 N, N% w( u

! T9 s" ]3 m1 d. Vend  " e1 r+ x. Y- m- P1 @

: q. u; S2 Z* T0 S1 S%subplot(122)  # q$ \  |! {, C3 G. [- l( T2 R

0 J# T' ~; a7 k( u9 A%imshow(Ig)%显示均衡化后的图像
) C: m1 |$ x+ ?3 W7 H& @" i( H5 k0 M* [. D% w
dis(:,:,2)=Ig;
* S1 @2 g; r: O( }5 k. Q9 g# S) N! g2 A6 S/ g7 R

+ u+ K+ a9 |; ^! k$ F
4 y" i- P* T0 T; T/ K# R3 x& Y8 p. @%对B通道进行均衡化处理,均衡化可以写一个统一的函数,直接调用
% |6 k, X1 u7 c% b1 w1 I. B5 d5 j$ j' M: {9 g
I=t(:,:,3);
5 B9 ~7 B: x8 t' X# {2 k6 ?# x5 \7 S
[height,width] = size(I);  
, [6 v9 p- v! ]# M) T. o% J4 U* w1 v3 D- V, \% @
7 Q! D6 P5 s" W  P% t" X/ X5 {
# R; P  G6 I' R
%下面使用直方图均衡化进行处理' r$ b1 p3 m) f2 ^/ u

  L0 a2 {9 f. }9 S( H%进行像素灰度统计;  
. u" ]3 F+ u5 R  K! F( f. t% U# O2 x% r( e- C2 U
s = zeros(1,256);%统计各灰度数目,共256个灰度级  
, j9 b& b3 a( B$ j  }2 G/ q' e" k8 W
0 Y+ h4 ]; a% {/ X# u; H%绘制直方图
) t9 v; W, N6 k
1 e  d: G3 |# W, \: ?4 X6 f# b5 ngp=zeros(1,256);- N8 v- ~5 F; I* K! y

3 f4 ?; ^( R' @6 O- Y% J& L7 ^for k=0:2556 X* ^7 [) A# ]3 l
$ I7 U6 i. `. }  G
    gp(k+1)=length(find(I==k))/(height*width);
) Y+ D. O/ H5 I  E8 i0 |# H# [1 Q3 l2 ]1 M0 J1 W  S; w4 |; `8 y
end7 \- b  K) H1 W+ i. l1 L  m1 |3 D/ R
, W+ s4 k5 T7 J& p/ r% O0 j5 @
for i = 1:height  
9 w5 U  M8 m2 \% I9 b
, r" `# G- d( p0 L, ~    for j = 1: width  - \# K# T4 O3 f; V3 Y2 B

# {8 b- k; E6 y7 W" a& ^        s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一  
4 O7 v) L& `5 v$ L' f. F% M: k! v; X5 l2 P- w' @7 B' L3 J
    end  
4 E5 I7 a- p' `$ b% ?2 l- o' S  S; ^) g
end  " f% y5 w  ~  x; g4 P+ S1 H

6 U8 y0 N( @3 X" I1 M1 }%计算灰度分布密度  
* {6 K1 Y& U# C# F" X; E6 d* i. x: Z: o* k( r+ U
p = zeros(1,256);  4 Y; m; g2 ~3 E3 s! b% s0 G( o0 t* E& S
* P0 u% a! r% ]4 R' K3 Z: |( p
for i = 1:256  
1 k% ^" ?5 S5 G& n
& J& g* @% U" c    p(i) = s(i) / (height * width * 1.0);  ) T* G, j, e) l

7 X3 t. ~/ H' a! e; ?! m0 jend  3 Q& |5 V* Q4 {6 g

3 ]1 b  o; X+ p%计算累计直方图分布  
  ^% d- G- t7 B5 _$ D  Q7 i
/ u/ q0 M1 Y, i+ b, U6 w' Pc = zeros(1,256);  
0 A3 w! ^' l9 J  A0 D" v$ M0 D1 v, J
c(1) = p(1);
3 E! o3 W% |" y
) H8 N- n, e& L( g' |6 a& tfor i = 2:256   
% q5 H' S: s% `* Z& R0 M
  Q4 q5 o0 A) F: W5 O. P        c(i) = c(i - 1) + p(i);  * f' k2 c3 q% Y5 k' z. e+ Z" p7 C
/ Y; B, K# c& T3 f) z
end  8 a3 P, Q% u  x. `! J$ l

) J# P& r$ Z& E6 t: d7 p%累计分布取整,将其数值归一化为1~256
  M1 Y  s2 F' U) {# N2 ~) ]) t, e+ Z5 t( M
c = uint8(255 .* c + 0.5);  
* w8 Z. |+ Z. r# [4 z* ?  F# y9 s, ?
%对图像进行均衡化* \3 I! M* ~. g
4 u% `( x% `5 X" |
for i = 1:height  
% M, B3 \7 d8 M6 T: B
5 \) I! K& Y: S2 p6 c( x0 ~1 D    for j = 1: width  3 u( s1 s0 ~* B
3 V/ z4 W5 r% p9 \
        Ib(i,j) = c(I(i,j)+1);  . i$ i- e5 `1 t1 M3 \/ L; M7 R
. Z/ d) ]) d1 k" i8 i) z0 T
    end  
9 X, L6 X/ J% q9 J, g. n. O
6 @6 O' t5 F5 ~/ W+ S9 Vend  3 C+ A  F* ^2 ?7 I) i$ e

9 S' E- @# B) T, U4 ]/ Jdis(:,:,3)=Ib;
1 P. C$ E( ]4 J# O4 z$ K/ }
7 e: I% K- m4 h9 A%subplot(122)  
7 K4 b2 y$ `0 l
* b+ M9 ?$ Q+ j7 Z, G, Z9 E% b$ d%imshow(Ib)%显示均衡化后的图像
% Z6 p- O! @# H% z/ y
; ^! ^( E! F4 Z/ j% A- r9 J3 d/ zsubplot(122);
" o- Q# f3 z4 o, r' z' {3 v) t9 ]# R
imshow(dis),title('处理之后的图像')%显示均衡化后的图像% @7 S0 ?, G8 e2 `4 ?

: Q$ ^( q  @, T% x. n  o) h3 l
/ H$ m  _% V1 c% g/ x( N, F$ ]6 w6 k+ J  y: k# Y% o
  • 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 14:21 , Processed in 0.171875 second(s), 23 queries , Gzip On.

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

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

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