y x 67,50 22,50 -22,50 -67,50 122,50 157,50 -157,50 -122,50 (x,y-1) (x+1,y-1) (x+1,y) (x+1,y+1) (x,y+1) (x-1,y+1) (x-1,y) (x-1,y-1) (x,y)
Tại điểm biên đó ta tiến hành tính giá trị góc của hƣớng đƣờng biên .
Nếu hƣớng của đƣờng biên ≤ 22.50 hoặc > 157.50 thì đặt giá trị của = 00
và khi đó hai điểm biên lân cận điểm biên này tại vị trí (x-1,y) và (x+1,y) Tƣơng tự ta có kết quả hai điểm biên lân cận theo các hƣớng biên khác nhau nhƣ bảng dƣới đây:
Giá trị Phƣơng hƣớng Điểm ảnh
≤ 22.50 hoặc > 157.50 = 00 (x-1,y) (x+1,y) 22.50 < ≤ 67.50 = 450 (x-1,y-1) (x+1,y+1) 67.50 < ≤ 112.50 = 900 (x-1,y-1) (x+1,y-1) 112.50 < ≤ 157.50 = 1350 (x,y+1) (x,y+1) Ta tiến hành thực hiện:
- Tại mỗi điểm ảnh ta tiến hành tính tốn hƣớng của đƣờng biên, sau đó so sánh kết quả đó tìm ra hai điểm biên lân cận
- So sánh giá trị điểm ảnh đang xét với hai điểm biên trên:
Nếu điểm ảnh này là lớn nhất thì giữ lại điểm biên này (đánh dấu điểm biên này), ngƣợc lại nếu nó nhỏ hơn một trong hai điểm biên lân cận thì điểm biên này bị loại đi (cho giá trị điểm biên này bằng 0)
Ta đƣợc kết quả ảnh sau khi đã loại đi một số điểm biên không phù hợp. Lúc này số lƣợng biên trên ảnh nhìn thấy sẽ ít đi. Điều này đặc biệt có giá trị tốt để loại bỏ một số biên dƣ thừa đặc biệt với ảnh có nhiều nhiễu.
Bƣớc thứ 4: Tiến hành áp dụng ngƣỡng:
Sau khi tiến hành bƣớc 3 ta tiến hành áp dụng ngƣỡng: sử dụng hai ngƣỡng cao Th và ngƣỡng thấp Tl.
Những điểm biên đƣợc đánh dấu (không bị loại) ta tiếp tục tiến hành áp dụng ngƣỡng cao và ngƣỡng thấp:
- Xét điểm ảnh I tại vị trí (x,y)
- So sánh I(x,y) với hai ngƣỡng Th và Tl
Nếu I(x,y) Th: đánh dấu và giữ lại điểm biên này (đặt giá trị bằng 1)
Nếu I(x,y) < Tl: Loại bỏ điểm biên này (đặt giá trị bằng 0)
Nếu Tl ≤ I(x,y) < Th: ta tiến hành so sánh giá trị I(x,y) với giá trị của 8 điểm lân cận:
o Nếu một trong 8 điểm lân cận có giá trị > Th: Tiến hành đánh dấu và giữ lại điểm biên này.
o Ngƣợc lại: Loại bỏ điểm biên này (đặt giá trị bằng 0) Sau đây là kết quả sau khi thực hiện phƣơng pháp phát hiện biên Canny:
a) Ảnh góc b) Ảnh biên
2.2.3.3. Phƣơng pháp phát hiện biên gián tiếp a. Một số khái niệm cơ bản a. Một số khái niệm cơ bản
Ảnh và điểm ảnh
Ảnh là một mảng số thực 2 chiều (Iij) có kích thƣớc (MxN), trong đó mỗi phần tử Iij(i = 1..M, j = 1..N) biểu thị mức xám của ảnh tại (i,j) tƣơng ứng.
Ảnh đƣợc gọi là ảnh nhị phân nếu các giá trị Iij chỉ nhận giá trị 0 hoặc 1. Ở đây ta chỉ xét tới ảnh nhị phân vì ảnh bất kỳ có thể đƣa về dạng nhị phân bằng kỹ thuật phân ngƣỡng. Ta ký hiệu là tập các điểm vùng (điểm
đen) và là tập các điểm nền (điểm trắng).
Các điểm 4 và 8-láng giềng
Giả sử (i,j) là một điểm ảnh, các điểm 4-láng giềng là các điểm kề trên, dƣới, trái, phải của (i,j):
N4(i,j) = {(i‟,j‟) : |i-i‟| + |j-j‟| = 1}, và những điểm 8-láng giềng gồm
N8(i,j) = {(i‟,j‟) : max(|i-i‟| + |j-j‟|) = 1}
Trong hình 3.1 biểu diễn ma trận 8 láng giềng kề nhau, các điểm P0, P1, P2, P3, P4, P5, P6, P7 là các 8-láng giềng của P
P3 P2 P1
P4 P P0
P5 P6 P7
Đối tƣợng ảnh
Hai điểm Ps, Pe E, E hoặc đƣợc gọi là 8-liên thông (hoặc 4-
liên thông) trong E nếu tồn tại tập các điểm đƣợc gọi là đƣờng đi (i0,j0) sao cho (i0,j0)=Ps, (in,jn) = Pe, (ir,jr) E và (ir,jr) là 8-láng giềng (hoặc 4-láng giềng tƣơng ứng) của (ir-1,jr-1) với r = 1,2, ..,n
Nhận xét: Quan hệ k-liên thông trong E (k=4,8) là một quan hệ phản
xạ, đối xứng và bắc cầu. Bởi vậy, đó là một quan hệ tƣơng đƣơng. Mỗi lớp tƣơng đƣơng đƣợc gọi là mộ thành phần k-liên thông của ảnh. Về sau ta sẽ gọi mỗi thành phần k-liên thông của ảnh là một đối tƣợng ảnh.
b. Chu tuyến của một đối tƣợng ảnh Định nghĩa 1: [Chu tuyến]
Chu tuyến của một đối tƣợng ảnh là dãy các điểm của đối tƣợng ảnh P1…Pn sao cho Pi và Pi+1 là các 8-láng giềng của nhau (i=1,….,n-1) và P1 là 8- láng giềng của Pn, i Q không thuộc đối tƣợng ảnh và Q là 4-láng giềng của Pi (hay nói cách khác i thì Pi là biên 4). Kí hiệu <P1P2..Pn>
Tổng các khoảng cách giữa hai điểm kế tiếp của chu tuyến là độ dài của chu tuyến và kí hiệu Len(C) và hƣớng PiPi+1 là hƣớng chẵn nếu Pi và Pi+1 là các 4-láng giềng (trƣờng hợp cịn lại thì PiPi+1 là hƣớng lẻ).
Hình 2.6. dƣới đây biểu diễn chu tuyến của ảnh, trong đó, P là điểm khởi đầu chu tuyến.
P
Định nghĩa 2: [Chu tuyến ngoài]
Chu tuyến C đƣợc gọi là chu tuyến ngồi (hình 2.7a) nếu và chỉ nếu (i) Chu tuyến đối ngẫu C
là chu tuyến của các điểm nền (ii) Độ dài của C nhỏ hơn độ dài của C
Định nghĩa 3: [Chu tuyến trong]
Chu tuyến C đƣợc gọi là chu tuyến trong (hình 2.7b) nếu và chỉ nếu (i) Chu tuyến đỗi ngẫu C
là chu tuyến của các điểm nền (ii) Độ dài của C lớn hơn độ dài của C
a. Chu tuyến ngồi b. Chu tuyến trong
Hình 2.7. Chu tuyến trong, chu tuyến ngồi
c. Thuật tốn dị biên tổng quát
Biểu diễn đối tƣợng ảnh theo chu tuyến thƣờng dựa trên các kỹ thuật dị biên. Có hai kỹ thuật dò biên cơ bản. Kỹ thuật thứ nhất xét ảnh biên thu đƣợc từ ảnh vùng sau một lần duyệt nhƣ một đồ thị, sau đó áp dụng các thuật toán duyệt cạnh đồ thị. Kỹ thuật thứ hai dựa trên ảnh vùng, kết hợp đồng thời q trình dị biên và tách biên. Ở đây ta quan tâm cách tiếp cận thứ hai.
Trƣớc hết, giả sử ảnh đƣợc xét chỉ bao gồm một vùng ảnh 8-liên thông
, đƣợc bao bọc bởi một vành đai các điểm nền. Dễ thấy là một vùng 4-liên
thông chỉ là một trƣờng riêng của trƣờng hợp trên.
Chu tuyến C
Chu tuyến C Chu tuyến C
Về cơ bản, các thuật tốn dị biên trên một vùng đều bao gồm các bƣớc sau:
Xác định điểm biên xuất phát
Dự báo và xác định điểm biên tiếp theo
Lặp bƣớc 2 cho đến khi gặp điểm xuất phát
Do xuất phát từ những tiêu chuẩn và định nghĩa khác nhau về điểm biên, và quan hệ liên thơng, các thuậ tốn dị biên cho ta các đƣờng biên mang các sắc thái rất khác nhau.
Kết quả tác động của tốn tử dị biên lên một điểm biên r là điểm biên ri+1 (8-láng giềng của r). Thông thƣờng các toán tử này đƣợc xây dựng nhƣ một hàm đại số Boolean trên các 8-láng giềng của r. Mỗi cách xây dựng các toán tử đều phụ thuộc vào định nghĩa quan hệ liên thơng và điểm biên. Do đó sẽ gây khó khăn cho việc khảo sát các tính chất của đƣờng biên. Ngồi ra, vì mỗi bƣớc dị biên đều phải kiểm tra tất cả các 8-láng giềng của mỗi điểm nên thuậ toán thƣờng kém hiệu quả. Để khắc phục các hạn chế trên, thay vì sử dụng một điểm biên ta sử dụng cặp điểm biên (một thuộc , một thuộc ),
các cặp điểm này tạo nên tập nền vùng, kí hiệu là NV và phân tích tốn tử dị biên thành hai bƣớc:
Xác định cặp điểm nền vùng tiếp theo
Lựa chọn điểm biên
Trong đó bƣớc thứ nhất thực hiện chức năng của một ánh xạ trên tập NV lên NV và bƣớc thứ hai thực hiện chức năng chọn điểm biên.
Thuật tốn dị biên tổng qt
Bƣớc 2: Xác định cặp nền-vùng tiếp theo Bƣớc 3: Lựa chọn điểm biên vùng
Bƣớc 4: Nếu gặp lại cặp xuất phát thì dừng, nếu không quay lại bƣớc 2
Việc xác định cặp nền-vùng xuất phát đƣợc thực hiện bằng cách duyệt ảnh lần lƣợt từ trên xuống dƣới và từ trái qua phải rồi kiểm tra điều kiện lựa chọn cặp nền-vùng. Do việc chọn điểm biên chỉ mang tính chất quy ƣớc, nên ta gọi ánh xạ xác định cặp nền-vùng tiếp theo là tốn tử dị biên.
Định nghĩa 4: [Tốn tử dị biên]
Giả sử T là một ánh xạ nhƣ sau: T : NV NV (b,r) (b‟,r‟)
Gọi T là một toán tử dị biên cơ sở nếu nó thỏa mãn điều kiện: b‟,r‟ là các 8-láng giềng của r.
Giả sử (b,r) NV; gọi K(b,r) là hàm chọn điểm biên. Biên của một
dạng có thể định nghĩa theo một trong ba cách:
Tập những điểm thuộc có mặt trên NV, tức là K(b,r) = r
Tập những điểm thuộc có trên NV, tức là K(b,r) = b
Tập những điểm ảo nằm giữa cặp nền-vùng, tức là K(b,r) là những điểm nằm giữa hai điểm b và r.
Quá trình chọn điểm biên đƣợc thực hiện nhƣ sau: i:=1; (bi,ri) := (b0,r0)
While K(bi,ri) <> K(bn,rn) and i ≤ 8 do Begin (bi+1,ri+1) = T(bi,ri); i:=i+1; End Điều kiện dừng
Cặp nền-vùng thứ n trùng với cặp nền vùng xuất phát: (bn,rn) = (b0,r0)
Xác định cặp nền - vùng xuất phát
Cặp nền vùng xuất phát đƣợc xác định bằng cách duyệt ảnh lần lƣợt từ trên xuống dƣới và từ trái sang phải điểm đen đầu tiên gặp đƣợc cùng với điểm trắng trƣớc đó (theo hƣớng 4) để tạo nên cặp nền vùng xuất phát.
Xác định cặp nền – vùng tiếp theo
Đầu vào: pt, dir Ví dụ:
Point orient [] = {(1,0); (1,-1); (0,-1); (-1,-1); (-1,0); (-1,1); (0,1); (1,1)};
// Hàm tìm hƣớng có điểm đen gần nhất BYTE GetNextDir(POINT pt, BYTE dir) {
BYTE pdir = (dir + 7) % 8; do{
if(getpixel(pt.x+orient[pdir].x, pt.y+orient[pdir].y))==BLACK) return pdir;
pdir = (pdir + 7) % 8; }while(pdir != dir);
return ERR; // Điểm cô lập }
pdir = GetNextDir(pt, dir);
if(pdir==ERR) // Kiểm tra có là điểm cơ lập không return ERR; // Điểm cô lập
pt.x = pt.x + orient[pdir].x; pt.y = pt.y + orient[pdir].y;
Để tính giá trị cho hƣớng tiếp theo ta lập bảng dựa trên giá trị pdir đã tính đƣợc trƣớc đó theo các khả năng có thể xảy ra:
pdir Điểm trắng trƣớc đó Trắng so với đen mới 0 1 2 3 4 5 6 7 1 2 3 4 5 6 7 0 2 4 4 6 6 0 0 2
Do đó cơng thức để tính hƣớng tiếp theo sẽ là
dir = ((pdir + 3)/2 * 2) % 8;
2.3.3.4. Một số nhận xét và đánh giá các phƣơng pháp phát hiện biên (phƣơng pháp Gadient, phƣơng pháp Laplace, phƣơng pháp Canny) (phƣơng pháp Gadient, phƣơng pháp Laplace, phƣơng pháp Canny)
Đối với ảnh không nhiễu
Cả ba phƣơng pháp đều cho kết quả rất tốt. Song phƣơng pháp phát hiện biên Sobel cho biên rõ nét nhƣng lớn, còn phƣơng pháp Laplace cho kết quả rõ nét, biên mảnh. Riêng phƣơng pháp Canny do quá trình làm trơn ảnh nên từ một ảnh không nhiễu, các biên mờ bớt đi và to ra. Do vậy biên ảnh trong phƣơng pháp Canny lớn nhƣng lại không đầy đủ.
Đối với ảnh có nhiều cạnh
Khi phát hiện biên, các cạnh không quan trọng nên đƣợc loại bỏ. Ở đây, phƣơng pháp Sobel vẫn phát hiện đƣợc biên nhƣng các biên mờ, không đƣợc rõ nét, do trong ảnh có những vùng có mức xám thấp, sự thay đổi giữa các mức xám nhỏ.
Chính vì vậy mà ảnh qua phƣơng pháp Laplace cho kết quả rõ nét hơn (do phƣơng pháp này sử dụng phƣơng pháp đạo hàm bậc hai). Tuy vậy do ảnh có rất nhiều biên nhỏ nên các biên ảnh ở trên qua phƣơng pháp này rất nhiều và rối, chúng ta nên loại bỏ các điểm dƣ thừa.
Còn đối với phƣơng pháp Canny, do quá trình “Non-maximum Suppression” và do quá trình áp dụng ngƣỡng mà các điểm biên phụ bị loại bỏ bớt đi, các biên chính đƣợc giữ lại nên biên rõ nét hơn.
Đối với ảnh có nhiều mức xám nhỏ, sự biến thiên các mức xám là thấp ta nên sử dụng phƣơng pháp Laplace, song nếu ảnh đó có quá nhiều biên thì ta nên sử dụng phƣơng pháp Canny để loại bỏ bớt các cạnh không cần quan tâm đi.
Đối với ảnh có nhiều nhiễu
Phƣơng pháp đạo hàm bậc nhất cho biên ảnh với nhiều điểm biên phụ. Còn phƣơng pháp Laplace thì tạo biên kép nên hồn tồn khơng xác định đƣợc biên. Cịn đối với phƣơng pháp Canny thì do q trình làm trơn ảnh cho bớt nhiễu và quá trình “Non-maximum Suppression” để giảm bớt các biên phụ nên ảnh kết quả của phƣơng pháp Canny rất rõ nét.
Tóm lại : Đối với ảnh có nhiều cạnh hoặc nhiều nhiễu thì ta nên sử
dụng phƣơng pháp Canny để loại bỏ bớt cạnh, bỏ nhiễu và các điểm biên phụ không cần quan tâm, chỉ giữ lại các điểm biên chính theo mục đích sử dụng khác nhau.
2.2.3.5. Biến đổi Hough
a. Biến đổi Hongh cho đường thẳng
Bằng cách nào đó ta thu đƣợc một số điểm vấn đề đặt ra là cần phải kiểm tra xem các điểm có là đƣờng th ng hay khơng.
Bài toán:
Cho n điểm (xi; yi) i = 1..n và ngƣỡng hãy kiểm tra n điểm có tạo
thành đƣờng th ng hay không?
* Ý tƣởng
Giả sử n điểm nằm trên cùng một đƣờng th ng và đƣờng th ng có phƣơng trình
y = ax + b
Vì (xi, yi) i = 1..n thuộc đƣờng th ng nên yi = axi + b, i = 1..n
b = - xia + yi; i = 1..n
Nhƣ vậy, mỗi điểm (xi; yi) trong mặt ph ng sẽ tƣơng ứng với một số đƣờng th ng b = - xia + yi trong mặt ph ng tham số a, b. n điểm (xi; yi) i = 1..n thuộc đƣờng th ng trong mặt ph ng tƣơng ứng với n đƣờng th ng trong mặt ph ng tham số a, b giao nhau tại 1 điểm và điểm giao chính là a, b. Chính là hệ số xác định phƣơng trình của đƣờng th ng mà các điểm nằm vào.
* Phƣơng pháp:
- Xây dựng mảng chỉ số a, b và gán giá trị 0 ban đầu cho tất cả các
phân tử của mảng
- Với mỗi (xi; yi) và a, b là chỉ số của phần tử mảng thoả mãn
- Tìm phần tử mảng có giá trị lớn nhất nếu giá trị lớn nhất tìm đƣợc so với số phân tử lớn hơn hoặc bằng ngƣỡng cho trƣớc thì ta có thể kết luận
các điểm nằm trên cùng 1 đƣờng th ng và đƣờng th ng có phƣơng trình y = ax + b trong đó a, b tƣơng ứng là chỉ số của phần tử mảng có giá trị lớn nhất tìm đƣợc:
Ví dụ:
Cho 5 điểm (0, 1); (1, 3); (2, 5); (3, 5); (4, 9) và = 80%. Hãy kiểm
tra xem 5 điểm đã cho có nằm trên cùng một đƣờng th ng hay không? Hãy cho biết phƣơng trình đƣờng th ng nếu có?
- Lập bảng chỉ số a, b và gán giá trị 0 + (0, 1): b = 1 + (1, 3): b = -a + 3 + (2, 5): b = -2a + 5 + (3, 5): b = -3a + 5 + (4, 9): b = -4a + 9 - Tìm phần tử lớn nhất có giá trị 4 4/5 = 80%
- Kết luận: 5 điểm này nằm trên cùng 1 đƣờng th ng Phƣơng trình: y = 2x + 1
OH.HA = 0
b. Biến đổi Hough cho đường thẳng trong tọa độ cực
Hình 2.8. Đường th ng Hough trong tọa độ cực
Mỗi điểm (x,y) trong mặt ph ng đƣợc biểu diễn bởi cặp (r,) trong tọa độ cực.
Tƣơng tự mỗi đƣờng th ng trong mặt ph ng cũng có thể biểu diễn bởi một cặp (r,) trong tọa độ cực với r là khoảng cách từ gốc tọa độ tới đƣờng th ng đó và là góc tạo bởi trục OX với đƣờng th ng vng góc với nó, hình 2.8 biểu diễn đƣờng th ng hough trong tọa độ Decard.
Ngƣợc lại, mỗi một cặp (r,) trong toạ độ cực cũng tƣơng ứng biểu diễm một đƣờng th ng trong mặt ph ng.
Giả sử M(x,y) là mộ điểm thuộc đƣờng th ng đƣợc biểu diễn bởi (r,), gọi H(X,Y) là hình chiếu của gốc toạ độ O trên đƣờng th ng ta có:
X= r. cos và Y= r.sin Mặt khác, ta có:
Từ đó ta có mối liên hệ giữa (x,y) và (r,) nhƣ sau: x*cos+y*sin= r. x y r H O x.cos + y.sin = r
Xét n điểm th ng hàng trong tọa độ Đề các có phƣơng trình x*cos0+y*sin0= r0. Biến đổi Hough ánh xạ n điểm này thành n đƣờng sin trong tọa độ cực mà các đƣờng này đều đi qua (r0, 0). Giao điểm (r0, 0) của
n đƣờng sin sẽ xác định một đƣờng th ng trong hệ tọa độ đề các. Nhƣ vậy, những đƣờng th ng đi qua điểm (x, y) sẽ cho duy nhất một cặp (r, ) và có
bao nhiêu đƣờng qua (x, y) sẽ có bấy nhiêu cặp giá trị (r, ).
2.3. Một số nhận xét về các kỹ thuật tìm đƣờng đi cho robot 2.3.1. Kỹ thuật điều khiển bằng tay 2.3.1. Kỹ thuật điều khiển bằng tay
Ưu điểm
Robot di chuyển bằng bộ điều khiển tay là một trong loại robot thi công đơn giãn nhất, chi phí đầu tƣ thấp, di chuyển linh hoạt theo sự điều