You are on page 1of 6

Cn bng Histogram

1 Thut ton
1.1

Thut ton

Cho nh ngun gm N mc xm (0, 1, , N 1).


Cn cn bng histogram v M mc xm (0, 1, , M 1). Lu : M, N c th khc nhau
Bc 1: Tnh pin(k) l xc sut xut hin ca im nh c mc xm k (0 k N 1) trong nh
gc.
k

Bc 2: Tnh tng (tch ly) sk =

p (i )
i =0

in

Bc 3: Lp bng thay th T(k) = ROUND ( sk * (M 1) ) vi 0 k N 1.


Do 0 sk 1 nn 0 T(k) M 1
Bc 4: Vi mi im trong nh ngun c gi tr mc xm l k, thay th im nh ny vi mc
xm mi l T(k). nh nhn c c ti a M mc xm (t 0 n M 1)
1.2

V d

! V d 1: Xt nh 8 mc xm (0,1, 7) vi kch thc 64 x 64. S im nh thuc mi mc xm


c cho trong bng di y:
K=Mc xm Nk=s im nh
0
790
1
1023
2
850
3
656
4
329
5
245
6
122
7
81
Yu cu: cn bng Histogram v 8 mc xm (0, 1, , 7)
Bc 1: Tnh xc sut xut hin ca im nh c mc xm k (k=0, 1, , 7)
Mc xm k S im nh Nk
0
790
1
1023
2
850
3
656
4
329
5
245
6
122
7
81

pin(k)
0.19
0.25
0.21
0.16
0.08
0.06
0.03
0.02

1200

0.3

1000

0.25

800

0.2

600

0.15

400

0.1

200

0.05

0
0

(a) Histogram cha chun ha

p (i )
i =0

in

s 0 = p in (ri ) = p in (r0 ) = 0.19


i =0
1

s1 = p in (ri ) = p in (r0 ) + p in (r1 ) = 0.44


i =0
2

s 2 = p in (ri ) = p in (r0 ) + p in (r1 ) + p in (r2 ) = 0.65


i =0
3

s 3 = p in (ri ) = p in (r0 ) + p in (r1 ) + L + p in (r3 ) = 0.81


i =0
4

s 4 = p in (ri ) = p in (r0 ) + p in (r1 ) + L + p in (r4 ) = 0.89


i =0
5

s 5 = p in (ri ) = p in (r0 ) + p in (r1 ) + L + p in (r5 ) = 0.95


i =0
6

s 6 = p in (ri ) = p in (r0 ) + p in (r1 ) + L + p in (r6 ) = 0.98


i =0
7

s 7 = p in (ri ) = p in (r0 ) + p in (r1 ) + L + p in (r7 ) = 1.00


i =0

(b) Histogram chun ha

Hnh 1. Histogram ca nh gc

Bc 2: Tnh tng (tch ly) sk =

Bc 3: Tnh gi tr bng thay th T(k)


T[0] = ROUND(s0 * 7) = ROUND(0.19 * 7) = ROUND(1.33 ) = 1
T[1] = ROUND(s1 * 7) = ROUND(0.44 * 7) = ROUND(3.08 ) = 3
T[2] = ROUND(s2 * 7) = ROUND(0.65 * 7) = ROUND(4.55 ) = 5
T[3] = ROUND(s3 * 7) = ROUND(0.81 * 7) = ROUND(5.67 ) = 6
T[4] = ROUND(s4 * 7) = ROUND(0.89 * 7) = ROUND(6.23 ) = 6
T[5] = ROUND(s5 * 7) = ROUND(0.95 * 7) = ROUND(6.65 ) = 7
T[6] = ROUND(s6 * 7) = ROUND(0.98 * 7) = ROUND(6.86 ) = 7
T[7] = ROUND(s7 * 7) = ROUND(1.00 * 7) = ROUND(7.00 ) = 7
Bc 4: Vi mi im nh c gi tr mc xm l k trong nh gc, thay th bng gi tr T(k)
Kt qu nhn c:
pout(k)
0.00
0.19
0.00
0.25
0.00
0.21
0.24
0.11

Mc xm k S im nh Nk
0
0
1
790
2
0
3
1023
4
0
5
850
6
950
7
448
1200
1000
800
600
400
200
0
0

Hnh 2. Histogram ca nh kt qu (v d 1)

! V d 2: Vi nh gc c cho trong v d 1, hy cn bng histogram v nh gm 6 mc xm


(0,1, 5)
Bc 1 v bc 2: tng t v d 1
Bc 3: Tnh gi tr bng thay th T(k)
T[0] = ROUND(s0 * 5) = ROUND(0.19 * 5) = ROUND(0.95 ) = 1
T[1] = ROUND(s1 * 5) = ROUND(0.44 * 5) = ROUND(2.20 ) = 2
T[2] = ROUND(s2 * 5) = ROUND(0.65 * 5) = ROUND(3.25 ) = 3
T[3] = ROUND(s3 * 5) = ROUND(0.81 * 5) = ROUND(4.05 ) = 4
T[4] = ROUND(s4 * 5) = ROUND(0.89 * 5) = ROUND(4.45 ) = 4
T[5] = ROUND(s5 * 5) = ROUND(0.95 * 5) = ROUND(4.75 ) = 5
T[6] = ROUND(s6 * 5) = ROUND(0.98 * 5) = ROUND(4.99 ) = 5
T[7] = ROUND(s7 * 5) = ROUND(1.00 * 5) = ROUND(5.00 ) = 5
Bc 4: Vi mi im nh c gi tr mc xm l k trong nh gc, thay th bng gi tr T(k)
Kt qu nhn c:
Mc xm k S im nh Nk
0
0
1
790
2
1023
3
850
4
985
5
448

pout(k)
0.00
0.19
0.25
0.21
0.24
0.11

1200
1000
800
600
400
200
0
0

Hnh 2. Histogram ca nh kt qu (v d 2)

2 Cc thao tc lin quan n histogram trn OpenCV


2.1

Mt s hm c bn
To mng cha thng tin histogram

int

hist_size = 256;

// s lng mc xm trong nh

// to mng 1 chiu c kh nng cha hist_size phn t


CvHistogram* hist = cvCreateHist(1, &hist_size, CV_HIST_ARRAY);

Tnh histogram trn nh mc xm


// tnh histogram ca nh mc xm gray_img
// v ghi nhn kt qu vo mng 1 chiu hist.
cvCalcHist( &gray_img, hist, 0, NULL );

Xc nh gi tr nh nht, gi tr ln nht, ch s tng ng vi gi tr nh nht v gi tr ln


nht trong mng 1 chiu hist
cvGetMinMaxHistValue( hist, &min_value, &max_value, &min_idx, &max_idx);

Ly gi tr ca phn t th i trong histogram


Cch 1:
cvGetHistValue_1D(hist,i);
Cch 2:
cvGetReal1D(hist->bins,i)

Chun ha histogram: sau khi chun ha, tng gi tr cc phn t trong mng hist s bng 255
cvNormalizeHist(hist, 255);

Cn bng histogram: cho nh mc xm img, cn cn bng histogram v nhn c kt qu l


nh result (lu : cn to ra nh result c kch thc ph hp v c 1 knh mu)
IlpImage*
result = cvCreateImage(cvSize(img->width, img->height), 8, 1);
cvEqualizeHist(img, result);

2.2

Cn bng histogram cho nh mu

Phng n 1:
-

Tch nh mu (gc) thnh 3 knh mu (R, G, B). (gi : dng hm cvCvtPixToPlane)

Cn bng histogram cho tng knh mu (R, G v B). (gi : dng hm cvEqualizeHist)

Kt hp 3 knh mu (sau khi cn bng histogram) thnh 1 nh mu kt qu mi (gi : dng


hm cvCvtPixToPlane)

Phng n 2:
-

Chuyn nh mu (gc) sang h mu HSV (gi : dng hm cvCvtColor)

Tch nh mu (h HSV) thnh 3 knh (H, S, V). (gi : dng hm cvCvtPixToPlane)

Cn bng histogram cho knh V (gi : dng hm cvEquilizeHist)

Kt hp 3 knh (H, S v Vmi) nhn c nh kt qu trong h HSV (gi : dng hm


cvCvtPlaneToPix)

Chuyn nh kt qu (trong h HSV) sang h RGB thng thng (dng hm cvCvtColor)

! Yu cu: Sinh vin t ci t v kim tra hiu qu (tc x l, cht lng nh kt qu) khi cn
bng histogram cho nh mu theo 2 phng n trn. Cho bt phng n no thng cho kt qu tt
hn?
Trn Minh Trit
03/2007

You might also like