44
PHÂN ĐOẠN ẢNH Tài liệu ở chương trước là bước chuyển tiếp từ các phương pháp xử lý ảnh với đầu vào và đầu ra là các ảnh sang các phương pháp mà đầu vào là các ảnh, nhưng đâu ra là các thuộc tính được trích xuất từ những ảnh đó. Phân đoạn ảnh là bước quan trọng khác trong phương diện trên. Phân đoạn chia nhỏ một ảnh thành các vùng hoặc đối tượng cấu tạo nên nó. Mức độ của sự chia nhỏ tùy theo các vấn đề cần được giải quyết. Nghĩa là, phân đoạn sẽ dừng khi các đối tượng cần quan tâm trong một ứng dụng được tách biệt. Thuật toán phân đoạn ảnh cho các ảnh đơn sắc nói chung dựa trên một trong hai thuộc tính cơ bản của giá trị cường độ ảnh: sự không liên tục và sự giống nhau. Ở thuộc tính đầu tiên, cách tiếp cận là chia một ảnh theo các thay đổi độ dốc của cường độ, ví dụ là cạnh trong một ảnh. Ở thuộc tính thứ hai, cách tiếp cận là dựa trên việc chia một ảnh thành các vùng tương tự dựa trên tập các tiêu chuẩn đã được định trước. Trong chương này chúng ta thảo luận về một số cách tiếp cận trong 2 hướng tiếp cận được đề cập ở trên được áp dụng cho ảnh đơn sắc (xác định cạnh và phân đoạn ảnh màu được thảo luận trong phần 6.6). Chúng ta bắt đầu trình bày với phương pháp phù hợp cho việc xác định sự không liên tục của cường độ như là các điểm, các đường và các cạnh. Xác định cạnh là yêu cầu cần thiết của các thuật toán phân đoạn ảnh trong nhiều năm. Thêm vào đó, để xác định cạnh, chúng ta cũng phải thảo luận việc xác định phân đoạn cạnh tuyến tính sử dụng phương pháp dựa trên biến đổi Hough. Phần thảo luận của việc xác định cạnh được đề cập sau phần giới thiệu về các kỹ thuật phân ngưỡng. Phân ngưỡng là một phương pháp cơ bản để phân đoạn mà thu được sự quan tâm rất nhiều, đặc biệt trong ứng dụng mà tốc độ là yếu tố quan trọng. Phần thảo luận của phân ngưỡng nằm sau phần trình bày của các phương pháp phân đoạn vùng được định hướng. Chúng ta kết thúc chương với phần thảo luận về phương pháp hình thái học để phân đoạn được gọi là phân đoạn đường mức hình thái (watershed segmentation). Phương pháp này đặc biệt thú vị vì nó tạo ra các vùng được định nghĩa tốt, kín, xử lý trên hình dáng toàn cục, và cung cấp một kết cấu mà với những điều đã biết về những bức ảnh trong một ứng dụng cụ thể ta có thể sử dụng để cải tiến kết quả phân đoạn.

Segment Using Matlab

Embed Size (px)

DESCRIPTION

su dung matlan

Citation preview

PHN ON NHTi liu chng trc l bc chuyn tip t cc phng php x l nh vi u vo v u ra l cc nh sang cc phng php m u vo l cc nh, nhng u ra l cc thuc tnh c trch xut t nhng nh . Phn on nh l bc quan trng khc trong phng din trn.Phn on chia nh mt nh thnh cc vng hoc i tng cu to nn n. Mc ca s chia nh ty theo cc vn cn c gii quyt. Ngha l, phn on s dng khi cc i tng cn quan tm trong mt ng dng c tch bit. Thut ton phn on nh cho cc nh n sc ni chung da trn mt trong hai thuc tnh c bn ca gi tr cng nh: s khng lin tc v s ging nhau. thuc tnh u tin, cch tip cn l chia mt nh theo cc thay i dc ca cng , v d l cnh trong mt nh. thuc tnh th hai, cch tip cn l da trn vic chia mt nh thnh cc vng tng t da trn tp cc tiu chun c nh trc.Trong chng ny chng ta tho lun v mt s cch tip cn trong 2 hng tip cn c cp trn c p dng cho nh n sc (xc nh cnh v phn on nh mu c tho lun trong phn 6.6). Chng ta bt u trnh by vi phng php ph hp cho vic xc nh s khng lin tc ca cng nh l cc im, cc ng v cc cnh. Xc nh cnh l yu cu cn thit ca cc thut ton phn on nh trong nhiu nm. Thm vo , xc nh cnh, chng ta cng phi tho lun vic xc nh phn on cnh tuyn tnh s dng phng php da trn bin i Hough. Phn tho lun ca vic xc nh cnh c cp sau phn gii thiu v cc k thut phn ngng. Phn ngng l mt phng php c bn phn on m thu c s quan tm rt nhiu, c bit trong ng dng m tc l yu t quan trng. Phn tho lun ca phn ngng nm sau phn trnh by ca cc phng php phn on vng c nh hng. Chng ta kt thc chng vi phn tho lun v phng php hnh thi hc phn on c gi l phn on ng mc hnh thi (watershed segmentation). Phng php ny c bit th v v n to ra cc vng c nh ngha tt, kn, x l trn hnh dng ton cc, v cung cp mt kt cu m vi nhng iu bit v nhng bc nh trong mt ng dng c th ta c th s dng ci tin kt qu phn on. 1. Nhn dng im ng v cnh:

Trong phn ny, chng ta tho lun k thut xc nh 3 loi c bn ca s khng lin tc cng tng mt bc nh s: cc im, cc ng v cc cnh. Cch thng dng nht tm kim s khng lin tc l chy mt mt n qua nh theo cch c cp trong phn 3.4 v 3.5. i vi mt mt n 3x3, th tc ny bao gm tnh ton tng ca cc kt qu ca cc h s nhn vi mc cng c cha trong nhng vng c bao quanh bi mt n. p ng R ca mt n ti mi im trong nh c cho bi cng thcR = w1z1 + w2z2 ++ w9z9 = vi zi l cng ca pixel tng ng vi h s wi ca mt n. Nh ni trc , p ng ca mt n c nh ngha vi mi quan h vi trung tm ca n.1.1. Nhn dng im:

Nhn dng cc im c lp nm trong nhng vng c cng khng i hoc gn nh khng i trong bc nh rt n gin. Bng cch s dng mt n nh hnh 1, chng ta ni rng mt im c lp c nhn dng ti v tr trung tm ca mt n khi:

-1-1-1

-18-1

-1-1-1

Hnh 1

vi T l mt ngng khng m. Nhn din im trong Matlab s dng hm imfilter, vi mt n nh hnh 1 hoc cc mt n tng t khc. Yu cu quan trng l mt n c kt qu tr v ln nht khi trung tm ca mt n i qua im c lp v kt qu tr v bng 0 ti nhng vng c cng khng i.Nu T c cho trc, lnh sau y s nhn dng im c lp tng ng vi cch m chng ta tho lun:

>> g = abs(imfilter(double(f),w)) >= T;vi f l nh u vo, w l mt mt n nhn din im tng ng (v d l mt n trong hnh 1), v g l nh kt qu. Nh ni n trong phn 3.4.1, hm imfilter i kiu d liu ca kt qu ging nh kiu d liu ca u vo,v vy chng ta s dng double(f) trong ton t lc ngn nga s mt mt d liu (b lm trn) nu d liu u vo l kiu uint8, v bi v ton t abs khng chp nhn kiu d liu integer. nh kt qu g l kiu logical, c gi tr l 0 hoc 1. Nu T khng cho trc, gi tr ca n thng c chn da trn kt qu lc, trong trng hp ny, chui lnh trc c chia thnh 3 bc c bn: (1) tnh ton nh c lc, abs(imfilter(double(f),w)), (2) tm gi tr cho T s dng d liu t nh c lc, (3) so snh kt qu lc vi T. Phng php ny c minh ha bng v d sau:

V d 1: Xc nh im

Hnh 2a hin th mt nh vi im trng xut hin phn t pha trn bn phi. t f k hiu cho hnh, chng ta c th tm c im c lp nh sau:

ab

Hnh 2:

(a)nh xm vi mt im c lp nm mt phn t pha trn bn phi.

(b) nh biu din im c lp tm c.

>> w = [-1 -1 -1;-1 8 -1;-1 -1 -1];>> g = abs (imfilter(double(f), w));

>> T = max(g(:));

>> g = g >= T;

>> imshow(g)

Bng cch chn T l gi tr cc i trong nh lc g, sau tm tt c nhng im trong g sao cho g >= T, chng ta s xc nh c nhng im cho p ng ln nht. Gi s rng tt c nhng im l nhng im c lp nm trong mt nn khng i hoc gn nh khng i. Ch rng kim tra i vi T s dng ton t >= nht qun v k hiu. V T c chn trong trng hp l gi tr cc i ca g, r rng khng c gi tr no trong g c gi tr ln hn T. Nh hnh 2b, chng ta ch thy mt im c lp tha iu kin g >= T vi T c t l max(g(:)).

Mt phng php khc xc nh mt im l tm nhng im trong tt c cc lng ging kch thc m(n m s sai khc v gi tr ln nht v nh nht vt qu mt gi tr c bit T. Phng php ny c th c thc hin bng cch s dng hm ordfilt2 c gii thiu trong phn 3.5.2:

>> g = imsubtract(ordfilt2(f, m*n, ones(m,n)), ordfilt2(f, 1, ones(m, n)));

>> g = g >= TD dng xc nh c rng chn T = max(g(:)) cho ra cng kt qu vi hnh 2b. Cng thc trn phc tp hn l s dng mt n hnh 1. V d, nu ta mun tnh ton s sai khc gia gi tr pixel cao nht v pixel k cao nht trong mt ln cn, chng ta phi thay th 1 tn cng bn phi ca biu thc trc bng m(n 1. Nhng chnh lnh khc ca ch c bn ny c tnh ton theo cch tng t.1.2. Nhn dng ng

Kh khn k tip l xc nh ng. Xt cc mt n trong hnh 3. Nu mt n u tin c di chuyn qua mt nh, n s c p ng mnh ti nhng ng ( dy 1 pixel) c hng nm ngang. Vi mt nn l hng s, p ng cc i s c tr v khi ng i qua dng chnh gia ca mt n. Tng t nh vy, mt n th hai trong hnh 3 p ng tt nht vi nhng ng c hng +450; mt n th 3 i vi cc ng thng ng; mt n th 4 i vi cc ng c hng -450. Ch rng hng ph hp hn vi mi mt n chu tc ng ca mt h s ln hn (ngha l 2) cc hng c th khc. H s ca mi mt n c tng l 0, cho nhng p ng bng 0 ti nhng vng c cng khng i.

-1-1-1-1-12-12-12-1-1

222-12-1-12-1-12-1

-1-1-12-1-1-12-1-1-12

Ngang+450Dc-450

Hnh 3: Cc mt n xc nh ng

t R1, R2, R3, R4 k hiu cho cc mt n p ng trong hnh 3 t tri sang phi vi Ri c cho bi phng trnh trong phn trc. Gi s rng 4 mt n ny chy ring l qua mt nh. Nu ti mt im no trong nh, |Ri| > |Rj|, vi mi i j, im c ni l c kh nng lin kt hn vi ng ca mt n i. V d, ti mt im trong nh, |R1| > |Rj| vi j = 2, 3, 4, im c bit c ni l c kh nng lin kt hn vi mt ng nm ngang. Chng ta c th mun xc nh mt ng vi mt hng xc nh. Trong trng hp ny, chng ta s s dng mt mt n lin kt vi hng v phn ngng kt qu ca n, nh trong phng trnh ca phn trc. Ni cch khc, nu chng ta quan tm vic xc nh tt c cc ng trong mt nh vi mt hng c xc nh trc bng mt mt n cho trc, chng ta ch cn chy mt n qua nh v phn ngng gi tr tuyt i ca kt qu. Nhng im cn li l nhng im c p ng mnh nht vi nhng ng c dy 1 pixel, p ng gn nht vi hng c xc nh bi mt n. V d sau minh ha cho th tc ny. V d 2: Xc nh nhng ng nm trong cc hng c bitHnh 4a biu din mt phn s ha (nh phn) ca mt mi dy dn i din cho mt mch in t. Kch thc nh l 486 ( 486 pixel. Gi s rng chng ta mun tm tt c cc ng c dy 1 pixel, c hng l -450. thc hin iu ny, chng ta s dng mt n cui cng trong hnh 3. Hnh 4b n hnh 4f c to ra s dng cc lnh sau, vi f l nh ca hnh 4a.>> w = [2 -1 -1; -1 2 -1; -1 -1 2];

>> g = imfilter(double(f),w);

>> imshow(g, [ ] ) %hinh 4b

>> gtop = g(1:120, 1:120);

>> gtop = pixeldup (gtop, 4);

>> figure, imshow(gtop, [ ] ) %hinh 4c>> gbot = g(end-119:end, end-119:end);

>> gbot = pixeldup(gbot, 4);

>> figure, imshow(gbot, [ ] ) %hinh 4d

>> g = abs(g);

>> figure, imshow(g, [ ] ) %hinh 4e

>> T = max(g(:));>> g = g >= T;>> figure, imshow(g); %hinh 4f

Phn m mu hn nn xm trong hnh 4b tng ng vi gi tr m. C 2 phn chnh c nh hng -450, mt pha trn bn tri v mt pha di bn phi (hnh 4c v 4d hin th nh phng ln ca 2 khu vc ny). Ch mc sng hn ca ng thng c phn on trong hnh 4d so vi trong hnh 4c. Nguyn nhn l thnh phn pha di bn phi ca hnh 4a c dy 1 pixel, trong khi pha trn bn tri th khng phi vy. Mt n s p ng mnh hn i vi nhng thnh phn c dy 1 pixel.

Hnh 4e hin th gi tr tuyt i ca hnh 4b. V chng ta quan tm n p ng mnh nht, chng ta t T l gi tr ln nht trong hnh ny. Phn mu trng ca hnh 4f s hin th nhng im m c gi tr tha mn iu kin g >= T, vi g l nh trong hnh 4e. Cc im c lp trong hnh l nhng im c p ng tng t nhau i vi mt n. Trong nh gc, nhng im ny v cc lng ging trc tip c nh hng theo cch m mt n to ra p ng cc i ti nhng vng c lp. Nhng im c lp ny c th c xc nh s dng mt n trong hnh 1 v sau c xa, hoc n c th c xa s dng ton t hnh thi hc, nh c tho lun chng trc.

ab

cd

ef

Hnh 4:

(a) nh ca mt mi dy dn

(b) Kt qu ca x l vi mt n hng -450 trong hnh 3

(c) nh phng ln ca vng pha trn bn tri ca nh (b)(d) nh phng ln ca vng pha di bn phi ca nh (b)

(e) Tr tuyt i ca (b)

(f) Tt c cc im (mu trng) c gi tr tha mn iu kin g >= T, vi g l nh (e)

1.3. Xc nh cnh s dng hm edgeMc d xc nh im v ng quan trng trong bt k cuc tho lun no v phn on nh, xc nh cnh sau l cch tip cn thng dng nht xc nh s khng lin tc ca gi tr cng . S khng lin tc c xc nh bng cch s dng o hm bc 1 v bc 2. o hm bc 1 trong x l nh l gradient, c nh ngha trong phn 6.6.1. thun tin, chng ta nhc li cc phng trnh thch hp. Gradient ca hm 2-D, f(x,y), c nh ngha nh l vector

ln ca vector ny l

tnh ton n gin, i lng ny i khi c xp x bng cch lm trn ton t cn bc 2

hoc bng cch s dng gi tr tuyt i

Nhng xp x ny cng tng t nh o hm, ngha l, chng bng 0 ti nhng vng c cng khng i v gi tr ca chng t l vi mc thay i cng trong vng c nhng gi tr pixel bin thin. Thng thng, ngi ta khi ni n ln ca gradient hoc cc xp x ca n, ngi ta ch n gin ni l gradient.

Mt thuc tnh c bn ca vector gradient l n ch ra hng ca tc ln nht ca s thay i ca f ti ta (x,y). Gc ca tc ln nht ca s thay i ny l

Mt vn quan trng l lm cch no c lng o hm Gx v Gy. Cc phng php khc nhau s dng hm edge c tho lun sau phn ny.

o hm bc 2 trong x l nh thng c tnh ton s dng Laplace c gii thiu trong phn 3.5.1. Laplace ca hm 2-D f(x,y) c xy dng t cc o hm bc 2 nh sau:

Laplace him khi c s dng xc nh cnh bi v, nh l mt o hm bc 2, Laplace nhy vi nhiu, gi tr ca n to ra cnh i, v n khng th xc nh hng ca cnh. Tuy nhin, nh phn s tho lun sau , Laplace c th l mt thnh phn mnh m khi s dng trong vic kt hp vi cc k thut xc nh cnh khc. V d, mc d vic to ra cnh i ca Laplace lm cho n khng ph hp xc nh cnh mt cch trc tip, tnh cht ny c th c s dng nh v cnh.

Vi phn tho lun trc lm nn tng, tng c bn pha sau xc nh cnh l tm nhng v tr trong nh m c cng thay i nhanh, s dng mt trong hai tiu chun sau:

1. Tm tt c nhng v tr c o hm bc 1 ca cng xm c ln ln hn mt ngng c bit.

2. Tm nhng v tr m o hm bc hai ca cng i qua 0.

Hm edge cung cp vi c lng o hm da trn cc iu kin va tho lun. i vi nhng c lng ny, n c th ch nh mt n nhy vi cnh ng, cnh ngang hoc c hai. C php chung ca hm ny l

[g, t] = edge (f, method, parameters)vi f l nh u vo, method mt trong nhng phng php c lit k bng 10.1, v parameters l cc tham s b sung c gii thch phn pha sau. Trong phn xut ra, g l mt mng logic vi 1 ti nhng vng im cnh c xc nh trong f v 0 nhng v tr cn li. Tham s t l ty chn; n a ra mt ngng c s dng bi edge xc nh gi tr gradient no mnh gi cc im cnh.Php d cnhThuc tnh c bn

SobelTm cc cnh s dng xp x Sobel ly o hm, minh ha bng hnh 5b

PrewittTm cc cnh s dng xp x Prewitt ly o hm, minh ha bng hnh 5c

RobertsTm cc cnh s dng xp x Roberts ly o hm, minh ha bng hnh 5d

Laplacian of a Gaussian (LoG)Tm cc cnh bng cch tm kim nhng v tr qua 0 sau khi lc f(x, y) vi php lc Gauss

Zero crossingsTm cc cnh bng cch tm kim nhng v tr qua 0 sau khi lc f(x, y) vi php lc do ngi dng ch nh.

CannyTm cc cnh bng cch tm kim cc i a phng php tnh gradient ca f(x, y). Gradient c tnh ton s dng o hm ca php lc Gauss. Phng php s dng 2 ngng xc nh mnh v yu ca cnh, v bao gm c cnh yu trong kt qu nu chng lin thng vi cc cnh mnh. V vy, phng php ny rt thch hp xc nh cc cnh yu.

Bng 1

Cc php d cnh c th s dng c trong hm edge

Php d SobelPhp d cnh Sobel s dng mt n trong hnh 5b xp x theo s o hm bc nht Gx v Gy. Ni cch khc, gradient ti mt im trung tm trong mt ln cn c tnh ton nh sau bng php d cnh Sobel:

Sau , chng ta ni rng mt pixel ti v tr (x, y) l mt pixel cnh nu g T ti v tr , vi T l mt ngng xc nh.

T tho lun trong phn 3.5.1, chng ta bit rng xc nh cnh Sobel c th c s dng lc mt nh, f, (s dng imfilter) vi mt n bn tri trong hnh 5b, lc f ln na vi mt n khc, bnh phng gi tr pixel ca mi nh c lc, cng 2 kt qu li vi nhau, sau tnh cn bc hai ca chng. p dng tng t cho phn th 2 v th 3 trong bng 1. Hm edge cha cc php ton trn v c b sung cc tnh nng khc, nh l chp nhn mt gi tr phn ngng hoc xc nh ngng mt cch t ng. Thm vo , edge cha cc k thut xc nh cnh khc m khng th ci t trc tip bng hm imfilter c.C php chung gi php d Sobel l

[g, t] = edge (f, sobel, T, dir)

vi f l nh u vo, T l mt ngng xc nh, dir cho bit hng ca vic xc nh cnh: horizontal, vertical, hoc both (mc nh). Nh phn trc, g l mt nh logic cha 1 ti nhng v tr m cnh c xc nh v 0 nhng ni cn li. Tham s t kt qu tr v l mt ty chn. N l gi tr ngng c s dng bi edge. Nu T c xc nh, th t = T. Ngc li, nu T cha c xc nh, (hoc l trng, []), edge thit lp t bng vi mt ngng c xc nh t ng v sau c dng xc nh cnh. Mt trong nhng nguyn nhn chnh ca vic cha t trong phn kt qu l to mt gi tr khi u cho phn ngng. Hm edge s dng php d Sobel c thit lp mc nh nu dng c php g = edge(f), hoc [g, t] = edge(f).z1z2z3

z4z5z6

z7z8z9

-1-2-1-101

000-202

121-101

Gx = (z7+2z8+z9) (z1+2z2+z3)Gy = (z3+2z6+z9) (z1+2z4+z7)

-1-1-1-101

000-101

111-101

Gx = (z7+z8+z9) (z1+z2+z3)Gy = (z3+z6+z9) (z1+z4+z7)

-100-1

0110

Gx=z9 z5Gy=z8 z6

anh lng ging

bSobel

cPrewitt

dRoberts

Hnh 5Mt vi mt n xc nh cnh v o hm bc nht ca chng

Php d Prewitt

Php d cnh Prewitt s dng mt n trong hnh 5c xp x bng s o hm bc 1 ca Gx v Gy. C php chung gi php d Prewitt l

[g, t] = edge(f, prewitt, T, dir)Tham s ca hm ny ging vi tham s ca Sobel. Php d Prewitt n gin hn trong tnh ton so vi Sobel, nhng n dn n vic to ra nhiu nhiu hn. (N c th dng h s 2 nh trong ton t Sobel c kt qu mt hn).

Php d Roberts

Php d cnh Roberts s dng mt n trong hnh 5d xp x bng s o hm bc 1 ca Gx v Gy. C php chung gi php d Roberts l

[g, t] = edge(f, roberts, T, dir)Tham s ca hm ny ging vi tham s ca Sobel. Php d Roberts l mt trong nhng php d lu i nht trong x l nh s, nh hnh 5d, chng ta thy php d Roberts l n gin nht. Php d ny c s dng t hn so vi nhng loi khc trong hnh 5 bi v s gii hn v chc nng ca n (v d, n khng i xng v khng th c dng xc nh cc cnh l bi ca 450). Tuy nhin, n vn c s dng thng xuyn trong thnh phn phn cng khi yu cu v tc v s n gin l quan trng nht.

Php d Laplacian of a Gaussian (LoG)

Xt hm Gauss

vi r2 = x2 + y2 v ( l lch chun. y l mt hm lm trn, n s xon vi mt nh, v lm m n. Mc m c xc nh bi gi tr (. Laplace ca hm ny (o hm bc 2 vi r) l

Hm ny c gi l hm Laplacian of a Gaussian (LoG). Bi v o hm bc 2 l mt ton t tuyn tnh, xon (lc) mt nh vi tng ng vi xon mt nh vi mt hm lm trn trc v sau tnh Laplace kt qu. y l mt khi nim quan trng c bn ca LoG. Chng ta xon mt nh vi , bit rng n c 2 hiu ng: N lm trn nh (ngha l gim nhiu), v n tnh Laplace, iu ny dn n mt nh c cnh i. nh v tr cnh sau gom chng li bng cch tm nhng v tr qua 0 gia cc cnh i.

C php chung gi php d LoG l[g, t] = edge(f, log, T, sigma)vi sigma l lch chun v cc tham s khc ging nh phn gii thch trc y. Gi tr mc nh ca sigma l 2. Trc , edge b qua bt k cnh no khng mnh hn T. Nu T khng c cho trc, hoc trng, [], edge chn gi tr mt cch t ng. t T bng 0 to ra cnh c cc ng vin kn, mt c trng quen thuc ca phng php LoG.

Php d Zero-Crossing

Php d ny da trn khi nim tng t nh phng php LoG, nhng hm xon s dng mt hm lc xc nh gi l hm H. C php chung gi

[g, t] = edge(f, zerocross, T, H)cc thng s c gii thch nh php d LoG.

Php d Canny

Php d Canny (Canny [1986]) l php d cnh mnh m nht c cung cp bi hm edge. Phng php c th c tm tt nh sau:1. nh c lm trn s dng php lc Gauss vi lch chun xc nh, (, gim nhiu.

2. Gradient cc b, , v hng ca cnh, , c tnh ton ti mi im. Bt k k thut no trong 3 k thut u tin ca bng 1 u c th c s dng tnh Gx v Gy. Mt im cnh c nh ngha l mt cnh c mnh l cc i a phng trong hng ca gradient.3. Cc im cnh c xc nh trong (2) c n ln thnh chp trong nh ln gradient. Thut ton sau theo du dc theo nh ca nhng chp ny v thit lp bng 0 ti tt c nhng pixel m n khng tht s nm trn nh ca chp, v th n s a ra mt ng mnh kt qu xut ra, qu trnh ny c gi l loi b khng cc i (nonmaximal suppression). Cc pixel chp sau c phn ngng s dng 2 ngng, T1 v T2, vi T1 < T2. Nhng pixel chp vi gi tr ln hn T2 c gi l cc pixel cnh mnh. Nhng pixel chp vi gi tr t T1 n T2 c gi l cc pixel cnh yu.4. Cui cng, thut ton biu din lin kt cnh bng cch kt hp nhng pixel yu vi nhng pixel mnh trong ln cn 8.C php chung gi php d cnh Canny

[g, t] = edge(f, canny, T, sigma)vi T l mt vector, T = [T1, T2], cha 2 ngng c gii thch bc 3 ca th tc trn, v sigma l lch chun ca hm lm trn. Nu s dng t kt qu nhn c, n s l mt vector vi hai thnh phn cha gi tr ca 2 ngng c s dng bi thut ton. Gi tr mc nh ca sigma l 1. V d 3: Trch xut cnh vi php d SobelChng ta c th trch xut v hin th cc cnh ng trong mt nh, f, ca hnh 6a, s dng lnh sau:>> [gv, t] = edge (f, sobel, vertical);

>> imshow (gv);

>> tNh hnh 6b cho thy, cc cnh ni bt trong kt qu l cnh dc (cc cnh nghing cng c cc thnh phn ng v ngang, do n cng c xc nh kh tt). Chng ta c th xa cc cnh yu bng cch xc nh mt gi tr ngng cao hn. V d, hnh 6c c to ra s dng lnh>> gv = edge (f, sobel, 0.15, vertical);

S dng cng gi tr T trong cu lnh

>> gboth = edge (f, sobel, 0.15);Kt qu trong hnh 6d, hin ln ch yu l cc cnh dc v ngang. Hm edge khng tnh c cc cnh Sobel 450. tnh ton cc cnh nh vy chng ta cn mt mt n c bit s dng hm imfilter. V d, hnh 6e c to ra s dng cc lnh sau:

>> w45 = [-2 -1 0; -1 0 1; 0 1 2];

>> g45 = imfilter (double(f), w45, replicate);

>> T = 0.3*max (abs(g45(:)));>> g45 = g45 >= T;>> figure, imshow(g45);

Cnh mnh nht trong hnh 6e l cnh c hng 450. Tng t, s dng mt n wm45 = [0 1 2; -1 0 1; -2 -1 0] vi cng chui lnh trn th kt qu s to ra cc cnh mnh vi gc -450 c biu din hnh 6f.

S dng ty chn prewitt v roberts trong hm edge vi th tc tng t nh minh ha vi php d Sobel.

ab

cd

ef

Hnh 6(a) nh gc

(b) Kt qu ca hm edge s dng mt n Sobel ng vi ngng c xc nh t ng

(c) Kt qu khi s dng mt ngng xc nh

(d) Kt qu ca vic xc nh c cnh dc v ngang s dng mt ngng xc nh

(e) Kt qu ca vic tnh ton cnh 450 dng hm imfilter s dng mt mt n v mt ngng xc nh

(f) Kt qu ca vic tnh ton cnh -450 dng hm imfilter s dng mt mt n v mt ngng xc nh

V d 4: So snh php d Sobel, LoG v Canny

Trong v d ny, chng ta so snh kh nng thc thi ca cc php d Sobel, LoG, Canny. i tng to ra mt nh x cnh r rng bng cch trch xut cc c trng cnh chnh ca nh ngi nh, f, trong hnh 6a, trong khi lm gim cc chi tit khng thch hp, nh l cc kt cu gch trn tng, cc mi ngi. Cnh chnh m chng ta quan tm trong phn tho lun ny l gc ngi nh, cc ca s, phn mi nh.

ab

cd

ef

Hnh 7:

Ct bn tri: Cc kt qu mc nh cho cc php d cnh Sobel, LoG, Canny.

Ct bn phi: Cc kt qu mang li c trng chnh ca nh 6a khi gim cc chi tit d tha. Php d Canny to ra kt qu tt nht.

Ct bn tri trong hnh 7 cho thy cc nh cha cc cnh s dng c php mc nh cho cc ty chn sobel, log, canny:

>> [g_sobel_default, ts] = edge (f, sobel); %Hinh 7a

>> [g_log_default, tlog] = edge (f, log); %Hinh 7c>> [g_canny_default, tc] = edge (f, canny); %Hinh 7e

Gi tr mc nh ca sigma cho cc ty chn log v canny ln lt l 2.0 v 1.0. Ngoi tr nh Sobel, cc kt qu mc nh khc xa so vi i tng to ra cc nh x cnh r rng.

Bt u vi cc gi tr mc nh, tham s ca mi ty chn khc nhau i vi tng i tng a ra cc c trng chnh c cp trn ng thi gim cc chi tit khng ph hp. Kt qu ca cc ct bn phi c to bi cc lnh sau:

>> g_sobel_best = edge (f, sobel, 0.1); %Hinh 7b

>> g_log_best = edge (f, log,0.003, 2.54); %Hinh 7d

>> g_canny_best = edge (f, canny, [0.1 0.2], 1.5); %Hinh 7f

Ta thy php d Sobel lm mt mt phn mi nh bn tri ca nh. Php d LoG th tt hn php d Sobel v tt hn php d LoG mc nh rt nhiu. Php d Canny gi li c cnh mi nh bn tri v c nh r hn hai php d trn. Ch rng xc nh nhng c trng mong mun, php d Canny to ra mt nh x cnh r nt hn.2. Xc nh cnh s dng bin i HoughCc phng php tho lun phn trc s a ra cc pixel da trn ch cc cnh. Trong thc t, cc pixel kt qu him khi m t c im ca cnh mt cch hon ton do nhiu, cc on gy trong cnh do nh sng khng u, v cc hiu ng khc to ra s khng lin tc cng gi to. V vy, thut ton xc nh cnh c cho php s dng cc th tc lin kt gom nhm cc pixel cnh thnh cc cnh c ngha. Mt phng php c th c s dng tm v lin kt cc phn on ng trong mt nh l bin i Hough (Hough [1962]).

ab

Hnh 8

(a) Mt phng xy

(b) Khng gian tham s

Cho mt tp cc im trong mt nh (thng l nh nh phn), gi s rng chng ta mun tm mt tp con ca nhng im ny m chng nm trn mt ng thng. Mt gii php c th l trc tin, tm tt c cc ng xc nh bng mi cp im v sau tm tp con cc im m n gn vi nhng ng ring bit. Vn i vi th tc ny l n bao gm vic tm kim n(n-1)/2 ~ n2 ng v sau thc hin n(n(n-1))/2 ~ n3 php so snh mi im vi cc ng ny. Phng php ny phi tnh ton nhiu v l phng php tm thng nht.Vi bin i Hough, ni mt cch khc, chng ta xt mt im (xi, yi) v tt c nhng ng i qua n. Rt nhiu ng i qua (xi, yi), tt cc ng u tha mn phng trnh vi gi tr a v b no . Vit phng trnh ny li thnh v xt mt phng ab (cn gi l khng gian tham s) ta c biu thc ca mt ng thng cho mt cp (xi, yi). Hn na, mt im th 2 (xj, yj) cng c mt ng thng trong khng gian tham s tng ng vi n, v ng thng ny ct ng thng tng ng vi (xi, yi) ti (a, b), vi a l h s gc v b l h s t do ca ng cha (xi, yi) v (xj, yj) trong mt phng xy. Trong thc t, tt c cc im c cha trn ng thng ny c cc ng trong khng gian tham s giao nhau ti (a, b). Hnh 8 minh ha khi nim ny.

Cc ng trong khng gian tham s tng ng vi tt c cc im (xi, yi) c th c chia thnh cc phn nh, v sau cc ng ca nh c th c xc nh ti nhng ni c s lng ln cc ng trong khng gian tham s giao nhau. Mt kh khn khi thc hin trong phng php ny l a (h s gc ca ng thng) tin ra v cc khi ng thng tin v phng thng ng. Mt cch khc phc kh khn ny l s dng mt cch biu din khc ca ng:

Hnh 9a minh ha biu din hnh hc ca cc tham s ( v (. Mt ng nm ngang c , vi ( bng vi gi tr honh dng ca ng. Tng t, mt ng thng ng c , vi ( bng vi gi tr tung dng ca ng, hoc , vi ( bng vi gi tr tung m ca ng. Mi ng cong hnh sin trong hnh 9b biu din mt h cc ng i qua mt im xc nh (xi, yi). im giao nhau ((, () tng ng vi ng i qua c (xi, yi) v (xj, yj).

abc

Hnh 9(a) Biu din di dng tham s ((, () ca ng trong mt phng xy

(b) ng cong hnh sin trong mt phng ((; im giao nhau ((, () tng ng vi ng ni (xi, yi) v (xj, yj)(c) Mt phng (( c chia thnh cc tch lyS th v trong tnh ton ca bin i Hough bt u bng vic chia nh khng gian tham s (( c gi l tch ly, nh minh ha trong hnh 9c, vi v l khong mong i ca cc gi tr tham s. Thng thng, khong gi tr l -90 ( 90 v D ( D, vi D l khong cch gia cc gc trong nh. ti ta (i, j) vi gi tr tch ly A(i, j), tng ng vi hnh vung trong khng gian tham s c ta ((i, (j). Bt u, nhng ny c thit lp bng 0. Sau , i vi mi im (xk, yk) khng phi l nn trong mt phng nh, chng ta t ( bng vi cc phn gi tr c th trn trc ( v gii tm ( tng ng t phng trnh . Cc gi tr kt qu ( sau c lm trn thnh gi tr gn nht i vi trc (. tch ly tng ng sau s tng ln. Kt thc th tc, gi tr Q ti A(i, j), ngha l c Q im trong mt phng xy nm trn ng . S phn chia nh trong mt phng (( xc nh chnh xc ca nhng im trn cng ng thng.Mt hm tnh ton bin i Hough c cho sau y. Hm ny thc hin s dng ma trn tha, l ma trn ch c mt s t v tr khc 0. c im ny to ra nhng u im khi lu tr ma trn hay khi tnh ton. Cho mt ma trn A, chng ta chuyn n thnh ma trn tha bng cch s dng hm sparse, vi c php c bn sau

S = sparse(A)

V d

>> A = [ 0 0 0 5;0 2 0 0; 1 3 0 0; 0 0 4 0];

>> S = sparse (A)

S =

(3, 1)1

(2, 2)2

(3, 2)3

(4, 3)4

(1, 4)5

Danh sch xut ra l nhng phn t khc 0 ca S cng vi ch s dng v ct. Cc phn t c sp xp theo ct.

Mt c php thng xuyn c s dng vi hm sparse bao gm 5 tham s

S = sparse(r, c, s, m, n)

y, r v c l cc ch s vector dng v ct l lt l cc thnh phn khng m ca ma trn m chng ta mun chuyn i sang ma trn tha. Tham s s l mt vector cha cc gi tr tng ng vi cp ch s (r, c), m v n l kch thc dng v ct ca ma trn kt qu. V d, mt ma trn S trong v d trc c th c to trc tip s dng lnh sau>> S = sparse( [ 3 2 3 4 1], [1 2 2 3 4], [1 2 3 4 5], 4, 4);Chng ta c th xem thm mt s c php ca hm sparse trong phn help ca hm ny.

Cho mt ma trn tha S c to bi bt k dng c php no, chng ta c th chuyn v dng ma trn y vi c php sau

A = full(S)

hiu thm v xc nh ng da trn bin i Hough trong Matlab, trc tin chng ta phi vit mt hm, hough.m, tnh ton bin i Hough:

function [h, theta, rho] = hough (f, dtheta, drho)

%HOUGH bin i Hough

%[H, THETA, RHO] = HOUGH (F, DTHETA, DRHO) tnh ton bin i Hough ca mt nh %F. DTHETA xc nh rng (tnh theo ) ca mt trong bin i Hough dc theo trc %theta. DRHO xc nh rng ca mt trong bin i Hough dc theo trc rho. H l ma %trn bin i Hough. N c kch thc NRHOxNTHETA, vi NRHO = %2*ceil(norm(size(F))/DRHO)-1, v NTHETA = 2*ceil(90/DTHETA). Ch rng nu %90/DTHETA khng phi l mt s nguyn, rng tht s s l 90/ceil(90/DTHETA).%THETA l mt vector phn t NTHETA cha gc (tnh theo ) tng ng vi mi ct ca %H. RHO l mt vector phn t NRHO cha gi tr ca rho tng ng vi mi dng ca H.

%[H, THETA, RHO] = HOUGH(F) tnh ton bin i Hough bng cch s dng DTHETA = 1 %v DRHO = 1.

if nargin < 3

drho = 1;

end

if nargin < 2

dtheta = 1;

end

f = double (f);

[M, N] = size(f);

theta = linspace (-90, 0, ceil(90/dtheta) +1);

theta = [theta fliblr(theta(2:end 1))];ntheta = length(theta);

D = sqrt((M 1)^2 + (N 1)^2);

g = ceil (D/drho);

nrho = 2*q 1;

rho = linspace(-q*drho, q*drho, nrho);

[x, y, val] = find(f);

x = x 1;

y = y 1;

%Khi to kt qu

h = zeros(nrho, lenth(theta));

% trnh trn b nh, x l 1000 pixel khc 0 mt ln

for k=1:ceil(lenth(val)/1000)

first = (k 1)*1000 + 1;

last = min(first+999, length(x));

x_matrix = repmat(x(first:last), 1, ntheta);

y_matrix = repmat(y(first:last), 1, ntheta);

val_matrix = remat(val(first:last), 1, ntheta);

theta_matrix = remat(theta, size(x_matrix, 1), 1)*pi/180;

rho_matrix = x_matrix*cos(theta_matrix)+y_matrix*sin(theta_matrix);

slope = (nrho 1)/(rho(end) rho(1)) ;

rho_bin_index = round(slope*(rho_matrix rho(1)) + 1);

theta_bin_index = repmat(1:ntheta, size(x_matrix, 1), 1);%u im ca hm sparse, dng to ma trn tha, l tch ly cc gi tr khi ch s d %liu nhp c lp li. l thao tc m chng ta mun cho bin i Hough. Chng ta %mun kt qu l mt ma trn y , tuy nhin, chng ta c th gi hm FULL kt qu %ca hm SPARSE

h = h + full(sparse(rho_bin_index(:), theta_bin_index(:),val_matrix(:), nrho, ntheta));

end V d 5Trong v d ny chng ta minh ha cch s dng ca bin i Hough trn mt nh nh phn n gin. u tin chng ta dng mt nh cha cc pixel c lp mt vi v tr.

>> f = zeros(101, 101);

>> f(1, 1) = 1; f(101, 1) = 1; f(1, 101) = 1;

>> f(101, 101) = 1; f(51, 51) = 1;Hnh 10a hin th nh kim tra. K , chng ta tnh ton v hin th bin i Hough.

>> H = hough(f);

>> imshow(H, []);Hnh 10b cho bit kt qu, hin th vi lnh imshow quen thuc. Tuy nhin, n s c tc dng hn xem bin i Hough trong mt biu ln hn, vi trc c nh nhn. on code k tip chng ta s gi hm hough vi 3 tham s; hai tham s th hai cha gi tr ( v ( tng ng vi mi ct v dng ca ma trn bin i Hough. Nhng vector ny, theta v rho, sau c th c chuyn tip thnh tham s b sung cho hm imshow iu khin nhn trc tung v trc honh. Chng ta cng chuyn tip ty chn notruesize vo imshow. Hm axis c s dng bt nhn trc v lm cho phn hin th che kn hnh ch nht ca nh. Cui cng, hm xlabel v ylabel (xem phn 3.3.1) c s dng nh nhn cc trc dng ghi ch kiu LaTeX cho cc k t Hy Lp.

>> [H, theta, rho] = hough(f);

>> imshow(theta, rho, H, [], notruesize)

>> axis on, axis normal

>> xlabel(\theta), ylabel(\rho)

Hnh 10c hin th kt qu c nh nhn. Cc giao im ca 3 ng cong hnh sin ti 450 cho bit c 2 tp cc im cng tuyn trong f. Giao im ca hai ng cong hnh sin ti ((,()=(-90,0),(-90,-100),(0,0) v (0,100) cho bit rng c 4 tp cc im cng tuyn nm trn mt ng nm ngang hoc nm dc.

ab

c

Hnh 10

(a) nh nh phn vi 5 chm (4 chm 4 gc)

(b) Biu din ca bin i Hough s dng hm imshow(c) Biu din bin i Hough vi cc trc c nh nhn (cc im trong a c phng ln hn d thy2.1. Xc nh nh da vo bin i HoughBc u tin trong vic s dng bin i Hough cho vic xc nh v lin kt cnh l xc nh nh. Tm mt tp cc nh ring bit trong bin i Hough c th tin hnh kim tra. Bi v s lng t ha trong khng gian ca nh s, lng t ha trong khng gian tham s ca bin i Hough, cc cnh trong cc nh in hnh khng hon ton thng, cc nh bin i Hough c khuynh hng nm trn nhiu hn mt trong bin i Hough. Mt cch khc phc vn ny l1. Tm bin i Hough cha gi tr ln nht ghi li v tr ca n.

2. Nn cc bin i Hough (t bng 0) i vi cc ln cn ca v tr ln nht tm thy bc 1.

3. Lp li cho n khi s lng nh mong mun c tm thy, hoc cho n khi t n mt ngng xc nh.

function [r, c, hnew] = houghpeaks (h, numpeaks, threshold, nhood)

HOUGHPEAKS Xc nh cnh trong bin i Hough[R, C, HNEW] = HOUGHPEAKS (H, NUMPEAKS, THRESHOLD, NHOOD) xc nh cc nh trong ma trn bin i Hough H. NUMPEAKS xc nh s lng ln nht cc v tr nh tm kim. Gi tr H di THRESHOLD s khng c xt l cc nh. NHOOD l mt vector 2 thnh phn xc nh kch thc ca ln cn b nn. y l cc ln cn xung quanh mi nh c thit lp bng 0 sau khi nh c xc nh. Thnh phn ca NHOOD phi l s nguyn dng, l. R v C l ta dng v ct ca cc nh c xc nh. HNEW l bin i Hough vi cc ln cn nh b nn.Nu NHOOD b b qua, mc nh s ly gi tr l nh nht >= size (H)/50. Nu THRESHOLD b b qua, mc nh s l 0.5*max(H(:)). Nu NUMPEAKS b b qua, mc nh s l 1.

if nargin < 4

nhood = size(h)/50;

Hy chc rng kch thc ln cn l l

nhood = max(2*ceil(nhood/2) + 1, 1);

end

if nargin < 3

threshold = 0.5*max(h(:));

end

done = false;

hnew = h; r = []; c = [];

while ~done

[p, q] = find(hnew == max(hnew(:)));

p = p(1); q = q(1);

if hnew(p, q) >= threshold

r(end + 1) = p; c(end + 1) = q;

Nn cc i ny v cc ln cn ca n

p1 = p (nhood(1) 1)/2; p2 = p + (nhood(1) 1)/2;

q1 = q (nhood(2) 1)/2; q2 = q + (nhood(2) 1)/2;

[pp, qq] = ndgrid(p1:p2, q1:q2);

pp = qq(:); qq = qq(:);

Tr v ta cc ln cn l ra ca bin theo rho

badrho = find ((pp < 1) | (pp > size(h, 1)));

pp(badrho) = []; qq(badrho) = [];

i vi cc ta l ra ca bin theo theta, chng ta mun xt H l phn i xng dc theo trc rho i vi theta = +/- 90 .

theta_too_low = find (qq < 1);

qq(theta_too_low) = size(h, 2) + qq (theta_too_low);

pp(theta_too_low) = size(h, 1) pp (theta_too_low) + 1;

theta_too_high = find (qq > size (h, 2));

qq (theta_too_high) = qq (theta_too_high) size (h, 2);

pp (theta_too_high) = size (h, 1) pp (theta_too_high) + 1;

Chuyn sang ch s tuyn tnh tt c cc gi tr xut ra 0.

hnew (sub2ind(size(hnew), pp, qq)) = 0;

done = length (r) == numpeaks;

else

done = true;

end

end

2.2. Lin kt v xc nh ng bng bin i Hough

Mt khi mt tp cc nh ng c s c xc nh trong bin i Hough, n cn c xc nh nu c mt ng phn on thch hp vi nhng cnh , ni n bt u v kt thc. i vi mi nh, bc u tin l tm v tr ca cc pixel khc 0 trong nh gp phn vo nh. lm iu ny, ta vit hm houghpixelfunction [r, c] = houghpixels (f, theta, rho, rbin, cbin)

HOUGHPIXELS Tnh ton pixel nh thuc v cc bin i Hough.[R, C] = HOUGHPIXELS (F, THETA, RHO, RBIN, CBIN) tnh ton ch s dng-ct (R, C) i vi cc pixel khng m trong nh F nh x vo cc bin i Hough, (RBIN, CBIN). RBIN v CBIN v hng cho bit v tr cc cha dng v ct trong ma trn bin i Hough c tr v bi hm HOUGH. THETA v RHO l i s kt qu th hai v th ba trong hm HOUGH.[x, y, val] = find(f);

x = x 1; y = y 1;

theta_c = theta(cbin) * pi /180;rho_xy = x*cos(theta_c) + y*sin(theta_c);

nrho = length(rho);slope = (nrho 1)/(rho(end) rho(1));

rho_bin_index = round(slope*(rho_xy rho(1)) + 1);

idx = find(rho_bin_index == rbin);

r = x(idx) + 1; c = y(idx) + 1;

Cc pixel tng ng vi nhng v tr c tm thy khi s dng houghpixels s c nhm li thnh cc phn ng. Hm houghlines dng thc hin cc bc sau:1. Xoay v tr pixel mt gc 900 - ( chng nm trn dng theo ng thng ng.2. Xp cc v tr pixel theo gi tr x xoay.

3. S dng hm diff xc nh ch h. B qua nhng khe h nh; iu ny s c hiu qu trong vic hp nhng ng st nhau m chng b tch ra mi nhng khong trng nh.

4. Tr v thng tin cc phn ng m n di hn mt ngng chiu di nh nht.function lines = houghlines (f, theta, rho, rr, cc, fillgap, minlength)HOUGHLINES Trch cc phn ng da trn bin i Hough.

LINE = HOUGHLINES (F, THETA, RHO, RR, CC, FILLGAP, MINLENGTH) trch cc phn ng trong mt nh F tng ng vi cc trong bin i Hough. THETA v RHO l cc vector c tr v bi hm HOUGH. Cc vector RR v CC xc nh cc dng v ct ca bin i Hough s dng trong vic tm kim cc phn ng. Nu HOUGHLINES tm c 2 phn ng tng ng vi trong bin i Hough m b tch ri t hn cc s pixel FILLGAP, HOUGHLINES s hp chng li thnh 1 phn ng. FILLGAP mc nh l 20. Cc phn ng c hp c chiu di nh hn MINLENGTH pixel s b loi b. MINLENGTH mc nh l 40.LINES l mt mng cu trc c chiu di bng vi s lng ng sau khi hp. Mi thnh phn ca mng cu trc ny c 3 trng:

point1

im kt thc ca phn ng; vector 2 thnh phn

point2

im kt thc ca phn ng, vector 2 thnh phn

length

Khong cch gia point1 v point2

theta

Gc (tnh theo ) ca bin i Hough

rho

V tr trc Rho ca bin i Hough

if nargin < 6

fillgap = 20;

end

if nargin < 7

minlength = 40;

end

numlines = 0; lines = struct;

for k = 1:length(rr)

rbin = rr(k); cbin = cc(k);

Ly tt c cc pixel tng ng vi bin i Hough

[r, c] = houghpixels (f, theta, rho, rbin, cbin);

if isempty(r)

continue

end

Xoay v tr pixel (1, 1) chng nm dc trn mt ng thng ng

omega = (90 theta(cbin))*pi/180;

T = [cos(omega) sin(omega); -sin(omega) cos(omega)];

xy = [r 1 c 1]*T;

x = sort (xy (:,1));

Tm cc khong trng ln hn ngng

diff_x = [diff(x); Inf];

idx = [0; find (diff_x > fillgap)];

for p = 1:length (idx) 1

x1 = x (idx (p) + 1); x2 = x (idx (p + 1));

linelength = x2 x1;

if linelength >= minlength

point1 = [x1 rho(rbin)]; point2 = [x2 rho(rbin)]

Xoay v tr im kt thc tr li gc ban u

Tinv = inv(T);

point1 = point1*Tinv; point2 = point2*Tinv;

numlines = numlines + 1;

lines (numlines).point1 = point1 + 1;

lines (numlines).point2 = point2 + 1;

lines (numlines).length = linelength;

lines (numlines).theta = theta (cbin);

lines (numlines).rho = rho (rbin);

end

end

end3. Phn ngng

Bi v tnh trc quan ca phn ngng v s n gin khi thc hin ca phn ngng nh nn n gi v tr trung tm trong cc ng dng ca phn on nh. Phn ngng n gin c gii thiu trc tin trong phn 2.7.2, v chng ta tng s dng n trong cc phn tho lun chng trc. Trong phn ny, chng ta tho lun cc cch la chn gi tr ngng mt cch t ng, v chng ta xt mt phng php phn ngng ty thuc vo thuc tnh ca ln cn nh cc b.Gi s rng histogram cng biu din trong hnh 12 tng ng vi mt nh, f(x,y), bao gm cc i tng sng trn nn ti, v vy pixel i tng v nn chia thnh 2 nhm. Mt phng php hin nhin trch xut cc i tng t nn l chn mt ngng T chia cc khu vc ra. Tip , vi bt k im (x, y) vi f(x, y) T c gi l mt im i tng; ngc li th im c gi l im nn. Ni mt cch khc, nh phn ngng g(x, y) c nh ngha nh sau

Cc pixel c nh du l 1 tng ng vi cc i tng, trong khi cc pixel 0 tng ng vi nn. Khi T l hng s, phng php ny gi l ngng ton cc.

Phng php chn ngng ton cc c tho lun trong phn 3.1. Trong phn 3.2 chng ta tho lun ngng bin thin, c gi l ngng cc b.

Hnh 12

Chn mt ngng bng cch phn tch bng mt thng biu 3.2. Ngng ton cc

Mt cch chn ngng l kim tra bng mt histogram ca nh. Histogram trong hnh 12 c hai phn r rng; v vy chng ta c th d dng chn c ngng T phn chia chng. Mt phng php khc ca vic chn T l th v li, t cc ngng khc nhau cho n khi tm ra c mt v tr ngng to ra kt qu tt m c th nh gi c bng mt thng. Cch ny cng hiu qu trong mt mi trng c tc ng qua li, nh l khi ngi dng c th thay i ngng bng cch s dng widget (iu khin bng giao din) nh l mt con trt v c th xem kt qu ngay lp tc. chn ngng mt cch t ng, Gonzalez v Woods [2002] s dng th tc sau:1. Chn mt c lng khi u cho T. (c lng khi u ngh l im trung bnh gia gi tr cng ln nht v nh nht ca nh)

2. Phn on nh s dng T. Vic ny s to ra 2 nhm pixel: G1, bao gm tt c cc pixel vi gi tr cng T, v G2, cha tt c cc pixel vi gi tr cng < T.

3. Tnh ton gi tr cng trung bnh 1 v 2 cho tt c cc pixel trong vng G1 v G2.

4. Tnh ton gi tr ngng mi:

5. Lp li t bc 2 n bc 4 cho n khi s sai bit ca cc T nh hn mt ngng T0.

Toolbox cung cp mt hm c gi l graythresh tnh ton mt ngng s dng phng php Otsu (Otsu [1979]). kho st cng thc ca phng php da trn histogram ny, chng ta bt u bng cch xem vic chun ha histogram nh l mt hm mt xc sut ri rc:

q = 0, 1, 2, , L 1

Vi n l tng s lng cc pixel trong nh, nq l s lng cc pixel c cng mc xm l rq, v L l tng s lng cng mc xm c th c trong nh. By gi chng ta gi s mt ngng k c chn sao cho C0 l mt tp cc pixel vi cc mc [0, 1, , k 1] v C1 l tp cc pixel vi cc gi tr [k, k + 1, , L 1]. Phng php Otsu chn mt gi tr ngng k l cc i ca cc sai khc gia cc lp (2B, c nh ngha bng

vi

Hm graythresh ly mt nh, tnh ton histogram ca nh , v sau tm gi tr ngng cc i (2B. Ngng c tr v nh gi tr chun gia 0.0 v 1.0. C php gi hm graythresh:T = graythresh(f)vi f l nh nhp v T l ngng kt qu. phn on nh chng ta s dng T trong hm im2bw c gii thiu trong 2.7.2. Bi v ngng c chun ha trong khong [0, 1], n c t l vi khong c th trc khi n c s dng. V d, nu f l kiu uint8, chng ta nhn T vi 255 trc khi s dng n. V d 7:Trong v d ny, chng ta minh ha th tc lp c m t phn trc nh phng php Otsu trn nh xm. Phng php lp c th c thc hin nh sau:

>> T = 0.5*(double(min(f(:))) + double(max(f(:))));>> done = false;

>> while ~done

g = f >= T;

Tnext = 0.5*(mean(f(g)) + mean(f(~g)));

done = abs(T Tnext) < 0.5;

T = Tnext;

endi vi nh ring bit ny, while lp 4 ln v kt thc khi T bng vi 101.47.K tip, chng ta tnh ton mt ngng s dng hm graythresh:

>> T2 = graythresh(f)

>> T2*255Ngng s dng 2 gi tr to ra nh m chng khng th phn bit c vi ci khc. Hnh 13b hin th nh phn ngng s dng T2.

ab

Hnh 13

(a) nh qut vo

(b) ch c phn on s dng hm graythresh

3.2. Phn ngng cc b

Phng php phn ngng ton cc c th tht bi khi nh sng nn thay i, nh minh ha hnh 26a v b. Mt phng php thng dng trong trng hp ny l tin x l nh b li phn nh sng v sau mi p dng ngng ton cc x l nh . Kt qu phn ngng c ci tin biu din trong hnh 26e c tnh ton bng cch p dng mt ton t m hnh thi hc v sau dng graythresh trn kt qu nhn c. Chng ta c th thy rng qu trnh x l ny l chun b cho phn ngng f(x, y) vi hm phn ngng cc b T(x, y):

vi

nh fo(x,y) l dng hnh thi hc m ca f, v hng s T0 l kt qu ca hm graythresh c p dng cho fo.4. Phn on nh da trn vng

i tng ca phn on l phn chia mt nh thnh cc vng. Trong phn 1 v phn 2, chng ta bt u gii quyt vn ny bng cch tm bin gia cc vng da trn s khng lin tc v cng , phn phn on ca 3 c hon thnh thng qua phn ngng da trn vic xy dng cc thuc tnh ca cc pixel, nh l cc gi tr cng . Trong phn ny, chng ta tho lun vic phn on da trn tm trc tip cc vng.4.1. Cng thc c bn

t R biu din cho ton b vng nh. Chng ta c th xem phn on nh nh l mt tin trnh phn chia R thnh nhiu vng n nh, R1, R2,,Rn, sao cho(a) (b) Ri l mt vng lin thng, i = 1, 2,, n

(c) (d) P(Ri) = TRUE vi i = 1, 2, , n

(e) vi bt k vng Ri v Rj.

y, P(Ri) l mt tnh cht cc b c nh ngha trc thng qua cc im trn tp Ri v ( l mt tp rng.

iu kin (a) cho bit rng vic phn on phi hon ton; ngha l mi pixel u phi thuc mt vng no . iu kin th hai i hi cc im trong mt vng phi c lin thng vi nhau theo cc hng c nh ngha trc (lin thng 4 hoc 8). iu kin (c) cho bit rng cc vng khng ln nhau. iu kin (d) m bo rng cc pixel trong cng mt vng phi tha mt s thuc tnh no v d P(Ri) = TRUE nu tt c cc pixel trong Ri c cng mt mc xm. Cui cng, iu kin (e) cho bit rng cc vng k bn nhau Ri v Rj th khc nhau mt s thuc tnh P.4.2. Pht trin vng

Pht trin vng l mt th tc nhm cc pixel hoc cc vng nh thnh cc vng ln hn da trn cc tiu chun c nh ngha trc pht trin. Phng php c bn l bt u vi mt tp cc im ht ging v t pht trin cc vng bng cch ni vo mi ht ging nhng pixel ln cn m n c nhng thuc tnh c nh ngha trc tng t nh ht ging (v d nh mt khong mc xm xc nh, hoc mu sc).

Chn mt tp gm mt hoc nhiu im khi u thng c th da trn vn t nhin, c th xem v d 8. Khi mt thng tin ban u khng c gi tr, mt th tc l tnh ton ti mi pixel cc tp c cng thuc tnh m n s c s dng ch ra cc pixel thuc vng no trong sut qu trnh pht trin vng. Nu cc kt qu ca tnh ton ny biu din thnh cc nhm gi tr, cc pixel c thuc tnh nm gn trung tm ca cc nhm gi tr s c chn lm ht ging.Vic chn cc tiu chun tng t nhau da trn khng ch da trn vic xem xt cc vn m cn da trn tnh kh thi ca loi d liu hnh nh. V d, vic phn tch mt t s dng nh v tinh da trn m nht ca mu sc. Vn ny tr nn kh khn hn, thm ch l khng kh thi, x l m khng cn cc thng tin c sn trong nh mu. Khi mt nh l n sc, vic phn tch vng tr nn r rng hn vi mt tp cc m t da trn cc mc cng v cc thuc tnh khng gian. Chng ta tho lun cc m t hu ch cho c trng vng chng 11.Vic nhn din n thun c th a ra nhng kt qu sai lc nu nh cc thng tin v lin thng (cnh nhau) khng c s dng trong qu trnh pht trin vng. V d, hnh dung mt nhm cc pixel c sp xp ch vi ba gi tr cng khc bit. Nhm cc pixel c cng cng hnh thnh mt vng m khng quan tm n tnh lin thng s dn n kt qu phn on khng c ngha trong phm vi phn tho lun ny.

Mt vn khc trong vic pht trin vng l biu thc ca qui tc dng. Mt cch c bn, vic pht trin mt vng nn dng li khi m khng c pixel no tha mn tiu chun no trong vng . Cc tiu chun nh gi tr cng , kt cu v mu sc l cc b trong t nhin, v l iu quan trng trong lch s pht trin vng. Cc tiu ch b sung lm tng sc mnh ca mt thut ton pht trin vng s dng cc khi nim v kch thc, s ging nhau gia mt pixel ng c v cc pixel c pht trin xa hn ( nh l so snh cng ca mt ng c v mc cng trung bnh ca vng mnh ang pht trin), v hnh dng ca vng c pht trin. Vic s dng cc loi m t ny da trn gi thit rng mt m hnh kt qu mong mun th c hiu qu cc b.Vic minh ha cc nt chnh ca vn lm th no phn on vng c th c thc hin trong MATLAB, chng ta s xy dng mt hm, gi l regiongrow, thc hin vic pht trin vng c bn. C php ca hm ny l[g, NR, SI, TI] = regiongrow(f, S, T)vi f l mt nh s c phn on v tham s S c th l mt mng (cng kch thc vi f) hoc l mt t l. Nu S l mt mng, n bng 1 ti tt c cc ta l im ht ging v bng 0 ti nhng im cn li. Chng hn, mt mng c th c xc nh bng php kim tra, hoc bng mt hm tm ht ging bn ngoi. Nu S l mt t l, n nh ngha mt gi tr cng sao cho tt c cc im trong f c gi tr tr thnh im ht ging. Tng t, T c th l mt mng (cng kch thc vi f) hoc l mt t l. Nu T l mt mng, n cha gi tr ngng cho mi vng ca f. Nu T l mt t l, n xc nh mt ngng ton cc. Gi tr ngng c s dng kim tra nu mt pixel trong nh tng t vi ht ging theo lin thng 8.V d, nu S = a, T = b, v chng ta so snh cng , sau 1 pixel c ni l tng ng vi a (c ngha l vt qua kim tra ngng) nu gi tr tuyt i ca chnh lch gia ca n v a th nh hn hoc bng vi b. Nu mt pixel lin thng 8 vi mt hoc nhiu im ht ging, th pixel c kim tra l thnh vin ca mt hoc nhiu vng. Tng t khi S v T l mt mng, ch khc nhau ch vic so snh c thc hin vi nhng vng thch hp c nh ngha trong S v gi tr tng ng ca T.Kt qu, g l mt nh c phn on, vi cc pixel ca mi vng c nh nhn l mt gi tr nguyn. Tham s NR l s lng vng. Tham s SI l mt nh cha cc im ht ging, v tham s TI l mt nh cha cc pixel vt qua ngng trc khi chng c kim tra tnh lin thng. C SI v TI u c cng kch thc vi f.Sau y l on m ca hm regiongrow. S dng hm bwmorph gim xung 1 s lng cc im ht ging lin thng trong mi vng ca S (khi S l mt mng) v hm imreconstruct tm cc pixel lin thng vi mi ht ging.

function [g, NR, SI, TI] = regiongrow (f, S, T)REGIONGROW thc hin phn on bng cch pht trin vng.

[G, NR, SI, TI] = REGIONGROW (F, SR, T). S c th l mt mng (cng kch thc vi F) c gi tr 1 ti ta ca nhng im ht ging v gi tr 0 ti nhng ta cn li. S cng c th ch l mt gi tr ht ging. Tng t, T cng c th l mt mng (cng kch thc vi F) cha mt gi tr ngng cho mi pixel trong F. T cng c th l mt t l, trong trng hp ny, n tr thnh mt ngng ton cc.

Kt qu, G l kt qu ca pht trin vng, vi mi vng c nh du bng cc s nguyn khc nhau, NR l s lng cc vng, SI l nh ht ging cui cng s dng bi thut ton, v TI l nh gm cc pixel trong F tha mn kim tra ngng.

f = double (f);

Nu S l mt t l, to ra nh ht ging

if numel(S) == 1

SI = f == S;

S1 = S;else

S l mt mng. Loi b s trng lp, ni kt cc vng ht ging gim s ln lp khi thi hnh trong phn m sau.

SI = bwmorph (S, shrink, Inf);

J = find (SI);

S1 = f(J); Mng cc gi tr ht gingend

TI = false (size(f));

for K = 1:length(S1)

seedvalue = S1(K);

S = abs (f seedvalue) 10) & (m > 0) & (m < 125);nh m vi gi tr 0 bo m rng hm qtdecomp s chia cc vng xung cc kch thc 1 x 1.

Q = 2^nextpow2 (max (size(f)));

[M, N] = size (f);

f = padarray (f, [Q M, Q N], post);

Thc hin tch trcS = qtdecomp (f, @split_test, mindim, fun);

By gi hp bng cch tm mi vng t phn v thit lp tt c cc thnh phn l 1 nu nh khi tha mn iu kin.

Ly kch thc ca khi ln nht. S dng full v S l ma trn tha.

Lmax = full (max (S(:)));

Khi to gi tr 0 cho nh kt qu ban u. Mng MARKER c s dng sau to ra s lin thng.

g = zeros (size(f));

Bt u hp

for K = 1:Lmax

[vals, r, c] = qtgetblk (f, S, K);

if ~isempty (vals)

Kim tra iu kin cho mi vng c kch thc K x K vi ta cho bi vector r v c.

for I = 1:length(r)

xlow = r(I);

ylow = c(I);

xhigh = xlow + K 1;

yhigh = ylow + K 1;

region = f (xlow:xhigh, ylow:yhigh);

flag = feval (fun, region);

if flag

g (xlow:xhigh, ylow:yhigh) = 1;

MARKER (xlow, ylow) = 1;

end

end

end

end

Cui cng, mi vng lin thng c nh du bng mt gi tr nguyn khc nhau s dng hm bwlabel

g = bwlabel (imreconstruct (MARKER, g));

Ct v thot

g = g (1:M, 1:N);

function v = split_test (B, mindim, fun)Hm ny l mt phn ca hm split-merge. N xc nh vng t phn no s b phn chia. Hm ny tr v cho v gi tr 1 (TRUE) i vi cc khi cn phn chia v gi tr 0 (FALSE) i vi cc khi khng cn.

Vng t phn B, vt qua kim tra qtdecomp, l phn gii hin thi ca nh thnh k khi c kch thc m x m

k l s lng cc vng trong B ti thi im trong th tc. k = size (B, 3);

Thc hin vic kim tra trn mi khi. Nu hm predicate tr v TRUE, vng c phn chia, v chng ta thit lp vng tng ng vi thnh phn l TRUE. Ngc li, thnh phn tng ng ca v c thit lp l FALSE.v (1:k) = false;

for I = 1:k

quadregion = B (:, :, I);

if size (quadregion, 1) > h = fspecial (sobel);

>> fd = double (f);

>> g = sqrt (imfilter (fd, h, replicate).^2 + imfilter (fd, h, replicate).^2);

>> L = watershed (g);

>> wr = L == 0;

Chng ta c th xem hnh 10.12 (b) m kt qu ca n b phn on qu nhiu, bi v n b chia thnh mt lng ln cc vng nh. Hm imregionmin tnh ton khu vc ca tt c cc vng ti thiu trong mt nh. C php ca hmrm = imregionalmin (f)

vi f l nh xm v rm l nh nh phn c cc pixel ni nh du khu vc ca vng nh nht. Chng ta c th s dng imregionalmin trn nh gradient xem ti sao hm watershed to ra nhiu lu vc nh:

>> rm = imregionalmin (g);

Hu ht cc vng nh nht trong hnh 10.22 (c) u rt nng v c biu din li chi tit m n khng thch hp cho vn phn on. hn ch iu ny chng ta s dng hm imextendedmin, m n s tnh ton tp cc im thp trong nh m n su hn (mt ngng cao no ) hn nhng khu vc xung quanh. (Tham kho Soille [2003] c gii thch chi tit v bin i ti thiu m rng v ton t gin). C php ca hm:

im = imextendedmin (f, h)

vi f l nh xm, h l ngng cao, v im l nh nh phn c cc pixel sng nh du v tr ca nhng vng ti thiu. Chng ta dng hm imextendedmin to ra mt tp cc du hiu bn trong:>> im = imextendedmin (f, 2);

>> fim = f;

>> fim (im) = 175;Hai dng cui thm vo cc vng ti thiu bn ngoi nh cc git nc mu xm trn nh gc, nh trong hnh 10.22(d). Chng ta thy rng cc git nc kt qu thc hin kh tt cng vic nh du cc i tng m chng ta mun phn on.K tip chng ta phi tm cc du hiu bn ngoi, hoc cc pixel m chng ta chc chn n thuc v nn. Phng php sau y nh du cc i tng bng cch tm cc pixel m chng c ng chnh gia ca cc du hiu bn trong. Chng ta thc hin iu ny bng cch gii quyt mt vn watershed khc; chng ta tnh ton bin i watershed ca bin i khong cch ca nh c du hiu bn trong:>> Lim = watershed (bwdist (im));

>> em = Lim == 0;

Hnh 10.22(e) hin th cc ng chia nc kt qu trong nh nh phn em. V nhng ng chia nc ny gia cc git nc mu en c nh du bi im, chng s p ng l cc du hiu bn ngoi.Cho cc du hiu bn trong v bn ngoi, chng ta s dng chng chnh sa nh gradient s dng th tc gi l v tr khun ti thiu (minima imposition). K thut khun ti thiu (tham kho thm Soille [2003]) chnh sa mt nh xm v th vng ti thiu xut hin ch trong cc vng c nh du. Cc gi tr pixel c np khi cn thit loi b tt c cc vng ti thiu khc. Hm imimposemin thc hin k thut ny. C php thc hin hm ny l

mp = imimposemin (f, mask)

vi f l nh xm v mask l mt nh nh phn vi cc pixel ni nh du cc v tr mong mun ca vng ti thiu trong nh kt qu, mp. Chng ta chnh sa nh gradient bng cch ln khun vng ti thiu ti nhng v tr ca c du hiu trong v ngoi:>> g2 = imimposemin (g, im | em);

Hnh 10.22 (f) hin th kt qu. Cui cng chng ta sn sng tnh ton bin i watershed ca nh gradient c cc du hiu chnh sa v nhn vo cc ng thot nc kt qu:

>> L2 = watershed (g2);

>> f2 = f;

>> f2 (L2 == 0) = 255;Hai dng cui b sung cc rnh chia nc trn nh gc. Kt qu, c phn on tt hn, biu din trong hnh 10.22(g).Vic chn cc du hiu c th c sp xp t cc th tc n gin va c m t n cc phng php phc tp hn nhiu bao gm kch thc, hnh dng, v tr, khong cch tng i, hm lng kt cu, v nhiu th khc na (xem thm chng 11). Quan trng l s dng cc du hiu mang n mt s hiu bit nht nh c li khi phn on nh.Tng kt

Phn on nh l mt bc m u trong hu ht cc vn nhn dng mu nh t ng v phn tch cnh. Vic la chn k thut phn on ty thuc vo c im ca vn m chng ta ang xt. Cc phng php tho lun trong chng ny, mc d cha ton din, c s dng thng xuyn trong thc t.