kỹ thuật contour tracing
TRANSCRIPT
Kỹ thuật Contour Tracing
Khái niệm ContourContour là dùng để nói đến đường viền của một đối
tượng, một tập hợp các điểm ảnh tách đối tượng khỏi
nền. Có 1 điểm chú ý là contour không chỉ dùng để xác
định các pixel biên của đối tượng và tách chúng khỏi
nền. Cái chúng ta cần là một chuỗi các pixel biên để
tách ra lấy hình dạng của mẫu.
Kỹ thuật tách Contour là một trong nhiều kỹ thuật
tiền xử lý được thực hiện trên ảnh số nhằm tách riêng
các thông tin về hình dạng chung của ảnh. Một contour
khi đã được tách, những đặc điểm khác nhau sẽ được sử
dụng như những nét đặc trưng và sẽ được sử dụng để phân
loại mẫu sau này. Vì vậy, khi tách được contour chính
xác, từ đó ta sẽ nhận được những mẫu có các đặc tính
chính xác giúp cơ hội nhận dạng, phân loại một mẫu sẽ
được tăng lên đáng kể.
Nhưng bạn có thể tự hỏi rằng: Tại sao lại lãng phí
thời gian để lấy các contour của một mô hình và sau đó
thu thập các đặc điểm riêng của nó? Tại sao không thu
thập nó ngay từ đầu?
Điều này được lý giải là: các điểm ảnh của đường
viền nói chung là một tập hợp của tổng số các điểm ảnh
đại diện cho một mô hình. Vì vậy khối lượng công việc
phải tính toán sẽ được giảm đi nhiều khi sử dụng thuật
toán tách trên đường viền thay cho việc trên toàn bộ mô
hình.Từ đó, contour sẽ có nhiều đặc tính mới hơn được
nhận ra so với toàn bộ mô hình ban đầu.quá trình xử lý
sẽ dễ dàng hơn là thực hiện với mô hình ban đầu.
Quá trình thực hiện dò contour đóng vai trò quan
trọng trong lĩnh vực nhận dạng mẫu.
Các thuật toán Contour Tracing
Chúng ta có 4 thuật toán Contour Tracing chung
nhất. 2 trong số đó có tên là: Square Tracing algorithm
và Moore – Neighbor Tracing là dễ để thực hiện và
thường xuyên được dùng để dò tìm contour của một mẫu.
Thật không may, cả 2 thuật toán trên đều có những điểm
yếu, là nguyên nhân chính dẫn đến việc dò tìm sai
contour của một lớp các mẫu nếu các mẫu đó có chứa các
kiểu “connectivity” phức tạp.
Một vài thuật toán Contour Tracing:
Square Tracing Algorithm
1)Ý tưởng:
Ý tưởng đằng sau thuật toán Square Tracing là rất đơn
giản; điều này có thể là do các thuật toán là một
trong những cố gắng đầu tiên để trích xuất các đường
viền của một mô hình nhị phân.
Với một mô hình kỹ thuật số có nghĩa là một nhóm các
điểm ảnh đen trên nền của các điểm ảnh màu trắng, tức
là một mạng lưới; xác định vị trí một điểm ảnh màu đen
và tuyên bố nó như là "điểm ảnh bắt đầu" . (Định vị một
"điểm ảnh bắt đầu" điểm ảnh có thể được thực hiện trong
một số cách, chúng ta sẽ bắt đầu từ góc dưới bên trái
của lưới điện, quét từng cột điểm ảnh từ phía dưới đi
lên -starting từ cột ngoài cùng bên trái và tiến tới
bên phải -. cho đến khi chúng ta gặp phải một điểm ảnh
màu đen. Chúng ta sẽ đặt điểm ảnh đó là "điểm ảnh bắt
đầu" ).
Bây giờ, hãy tưởng tượng rằng bạn là một con bọ (bọ
rùa) đứng trên bắt đầu điểm ảnh như trong hình 1 dưới
đây. Để giải nén các đường viền của các mô hình, bạn
phải làm như sau:
Mỗi khi bạn thấy mình đang đứng trên một điểm ảnh màu
đen, rẽ trái, và
Mỗi khi bạn thấy mình đang đứng trên một điểm ảnh màu
trắng, rẽ phải,
cho đến khi bạn gặp phải khi bắt đầu điểm ảnh một lần
nữa.
Các điểm ảnh màu đen bạn đi ngang qua sẽ là đường viền
của mô hình.
Điều quan trọng trong thuật toán Square Tracing là
"phương hướng". Bên trái và bên phải biến bạn thực hiện
được đối với vị trí hiện tại của bạn, mà phụ thuộc vào
cách bạn cho vào các điểm ảnh bạn đang đứng trên với.
Vì vậy, điều quan trọng là để theo dõi các định hướng
hiện tại của bạn để thực hiện những bước đi đúng.
2) Thuật toán:
Input: Một hình lát T, chứa các thành phần P của điểm
ảnh đen
Output: Một chuỗi B (b1,b2,…) của các điểm ảnh biên
(đường viền)
Bắt đầu:
- Đặt chuỗi B trống.
- Từ dưới lên trên và từ trái sang phải quét hình
lát T cho đến khi một điểm ảnh đen (s) trong P
được tìm thấy.
- Chèn s vào B.
- Thiết lập các điểm ảnh hiện tại,(p), các điểm ảnh
bắt đầu (s).
- Rẽ trái - truy cập vào các điểm ảnh liền kề bên
trái của p.
- Cập nhật p - đặt nó vào được các điểm ảnh hiện
tại.
- Trong khi p không thấy thì sẽ đặt vào s.
- Nếu hiện tại điểm ảnh p là màu đen, chèn p trong B
và rẽ trái (truy cập vào các điểm ảnh liền kề bên
trái của trang). Nếu không thì rẽ phải (truy caoaj
các điểm ảnh liền kề bên phải của trang).
- Cập nhật p nghĩa là đặt nó vào được các điểm ảnh
hiện tại.
3) Minh họa:
Mỗi khi bạn thấy mình đang đứng trên một điểm ảnh màu
đen, rẽ trái, và trên điểm ảnh màu trắng thì rẽ phải,
cho đến khi bạn gặp phải khi bắt đầu điểm ảnh một lần
nữa.
Các điểm ảnh màu đen bạn đi ngang qua sẽ là đường viền
của mô hình.
4) Phân tích :
Có thể chỉ ra rằng các thuật toán Square Tracing là
rất hạn chế trong việc thực hiện. Nói cách khác, nó lỗi
không thể trích xuất các đường viền của hình ảnh lớn mà
mô hình đó thường xuyên xảy ra trong các ứng dụng thực
tế đời sống.
Điều này phần lớn là do khi quét trái và phải có xu
hướng bỏ qua các điểm ảnh nằm "theo đường chéo" đối với
một điểm ảnh được đưa ra với.
Chúng tôi sẽ xem xét mô hình khác nhau của kết nối khác
nhau và xem lý do tại sao quảng trường truy tìm thuật
toán không thành công. Ngoài ra, chúng tôi sẽ xem xét
cách thức mà chúng ta có thể cải thiện hiệu suất của
thuật toán và làm cho nó ít nhất là làm việc cho mô
hình với một loại đặc biệt của kết nối.
Các tiêu chí dừng:
Một điểm yếu của thuật toán Square Tracing nằm trong sự
lựa chọn của điều kiện dừng. nói cách khác, khi nào các
thuật toán chấm dứt?
Trong mô tả ban đầu của hình vuông truy tìm thuật toán,
các tiêu chí dừng lại đến thăm các điểm ảnh bắt đầu cho
một lần thứ hai. Nó chỉ ra rằng các thuật toán sẽ không
đường viền theo dõi một hình ảnh lớn của mô hình thể nó
là phụ thuộc vào tiêu chí đó.
Một cuộc biểu tình giải thích cách hoạt hình thuật toán
truy tìm vuông không để trích xuất các đường viền của
một mô hình do sự lựa chọn xấu của điều kiện dừng
Như bạn có thể thấy, việc cải thiện tiêu chí dừng lại
sẽ là một khởi đầu tốt để cải thiện hiệu suất tổng thể
của thuật toán truy tìm vuông. Có 2 lựa chọn thay thế
hiệu quả để ngăn chặn các tiêu chí hiện tại:
a) Dừng lại sau khi đi thăm các điểm ảnh đầu n lần,
trong đó n là ít nhất 2
b) Dừng sau khi vào bắt đầu điểm ảnh lần thứ hai trong
cùng một cách bạn đã làm đúng ban đầu. Tiêu chuẩn này
được đề xuất bởi Jacob Eliosoff và do đó chúng tôi sẽ
gọi nó là tiêu chí dừng Jacob.
Thay đổi tiêu chí dừng lại nói chung sẽ cải thiện hiệu
suất của thuật toán truy tìm vuông nhưng sẽ không cho
phép nó để khắc phục điểm yếu khác, nó có hướng mô hình
các loại đặc biệt của kết nối.
Sau đây là một minh chứng sinh động về cách thức thuật
toán vuông (với điều kiện dừng của Jacob) truy tìm
không để trích xuất các đường viền của một mô hình 8-
kết nối đó không phải là 4 kết nối:
Thuật toán Square Tracing hoàn toàn vô dụng?
Nếu bạn đã đọc những phân tích trên bạn phải suy nghĩ
rằng các thuật toán truy tìm vuông không để trích xuất
các đường viền của hầu hết các mô hình. Nó chỉ ra rằng
có tồn tại một gia đình đặc biệt của mô hình đó là hoàn
toàn chính xác và đường viền cứu sự hình vuông truy tìm
thuật toán.
Hãy để P là một tập hợp các kết nối 4 điểm ảnh màu đen
trên lưới điện. Hãy để các điểm ảnh màu trắng của lưới
điện tức là các điểm ảnh nền, W, cũng là 4-kết nối. Nó
chỉ ra rằng tạo điều kiện như vậy của các mô hình và
nền tảng của nó, chúng ta có thể chứng minh rằng vuông
truy tìm thuật toán (sử dụng tiêu chí dừng Jacob) sẽ
luôn luôn thành công trong việc chiết xuất các đường
viền của mô hình.
Bằng chứng
Đưa ra: Một mô hình, P, sao cho cả hai mô hình các điểm
ảnh, tức là các điểm ảnh màu đen và các điểm ảnh nền,
tức là các điểm ảnh màu trắng, W, 4-kết nối.
Quan sát đầu tiên
Kể từ khi tập hợp các điểm ảnh màu trắng, W, được giả
định là 4 kết nối, điều này có nghĩa là mô hình không
thể có "lỗ hổng" trong đó.
(không chính thức, "lỗ" là nhóm các điểm ảnh màu trắng
được bao phủ hoàn toàn bởi các điểm ảnh màu đen trong
các mô hình cho).
Sự hiện diện của bất kỳ "lỗ hổng" trong mô hình sẽ cho
kết quả ngắt kết nối một nhóm các điểm ảnh màu trắng
với phần còn lại của các điểm ảnh màu trắng và do đó
làm cho tập hợp các điểm ảnh màu trắng không 4 kết nối.
Hình 2 và Hình 3 dưới đây cho thấy 2 loại "lỗ" có thể
xảy ra trong một mô hình 4-kết nối:
Quan sát thứ hai
Bất kỳ hai điểm ảnh màu đen của mẫu phải chia sẻ một
bên.
Nói rằng 2 điểm ảnh đen chỉ chia sẻ một đỉnh, sau đó,
để đáp ứng các khách sạn 4 sự kết nối của các mô hình,
cần có một con đường nối những 2 điểm ảnh như vậy mà
mỗi 2 điểm ảnh liền kề trong con đường đó là 4-kết nối.
Nhưng điều này sẽ cho chúng ta một mô hình tương tự như
trong hình 3 ở trên. Nói cách khác, điều này sẽ gây ra
các điểm ảnh màu trắng để trở thành ngắt kết nối.
Hình 4 dưới đây cho thấy một mô hình điển hình đáp ứng
giả định rằng cả hai nền và mô hình điểm ảnh được 4 kết
nối tức là không có "lỗ" và mỗi 2 điểm ảnh đen chia sẻ
một bên:
Một cách hữu hiệu để hình dung mô hình này là:
Đầu tiên, hãy xem xét các ảnh điểm biên tức là các
đường viền, các mô hình. Sau đó, nếu chúng ta xem xét
mỗi pixel ranh giới là có 4 cạnh mỗi đơn vị chiều dài,
chúng ta sẽ thấy rằng một số các cạnh được chia sẻ với
các điểm ảnh màu trắng liền kề. Chúng tôi sẽ gọi các
cạnh tức là những người chia sẻ với các điểm ảnh màu
trắng, mép ranh giới.
Các cạnh ranh giới có thể được xem như là các cạnh của
một đa giác. Hình 5 dưới đây giải thích ý tưởng này
bằng cách hiển thị cho bạn các đa giác tương ứng với mô
hình trong hình 4 ở trên:
Nếu chúng ta nhìn vào tất cả có thể "cấu hình"
của các điểm ảnh ranh giới có thể phát sinh trong mô
hình như vậy, chúng ta sẽ thấy rằng có 2 trường hợp cơ
bản hiển thị trong Hình 6 và Hình 7 dưới đây.
Pixel biên có thể là bội số của những trường
hợp này hoặc positionings khác nhau, tức là quay của 2
trường hợp.
Các cạnh ranh giới được đánh dấu màu xanh là
E1, E2, E3 và E4.
Quan sát thứ ba
Đối với cả 2 trường hợp trên, không có vấn đề điểm ảnh
bạn chọn như bắt đầu điểm của các bạn và không có vấn
đề gì hướng vào thành, các thuật toán truy tìm vuông sẽ
không bao giờ "quay lại", sẽ không bao giờ "đi qua" một
lợi thế cạnh ranh giới hai lần (trừ khi đó là truy tìm
ranh giới lần thứ hai) và sẽ không bao giờ bỏ lỡ một
lợi thế cạnh ranh giới ... thử nó!
2 khái niệm cần làm rõ ở đây:
a) các thuật toán "backtracks" khi nó đi ngược trở lại
để thăm một điểm ảnh đã viếng thăm trước khi truy tìm
toàn bộ ranh giới, và
b) đối với mỗi cạnh ranh giới có 2 cách để "đi qua" nó,
cụ thể là "trong" hay "ngoài" (trong đó "trong" có
nghĩa là đối với các bên trong của đa giác tương ứng và
"ngoài" có nghĩa là đối với bên ngoài của đa giác) .
Ngoài ra, khi các thuật toán vuông đi "trong" thông qua
một trong các cạnh ranh giới, nó sẽ đi "ra" thông qua
các cạnh ranh giới tiếp theo có nghĩa là nó có thể
không được có thể cho hình vuông thuật toán truy tìm đi
qua 2 cạnh ranh giới liên tiếp trong cùng một cách.
Quan sát cuối cùng
Có một số thậm chí của các cạnh biên cho bất kỳ mô hình
nào.
Nếu bạn có một cái nhìn tại các đa giác của hình 5 ở
trên, bạn sẽ thấy rằng:
nếu bạn muốn bắt đầu từ đỉnh S, được đánh dấu trên sơ
đồ, và làm theo các cạnh ranh giới cho đến khi bạn đạt
đến S một lần nữa; bạn sẽ thấy rằng bạn sẽ vượt qua bởi
một số chẵn các cạnh biên giới trong quá trình này. Hãy
xem xét mỗi cạnh ranh giới như là một "bước" theo một
hướng nhất định. Sau đó, cứ mỗi "bước" bên phải, có
phải là một "bước" tương ứng với bên trái nếu bạn muốn
quay trở lại vị trí ban đầu của bạn. Điều này cũng áp
dụng cho "bước" theo chiều dọc. Kết quả là, các "bước"
nên phù hợp với cặp và điều này giải thích lý do tại
sao sẽ có một số thậm chí cạnh ranh giới trong bất kỳ
mô hình như vậy.
Kết quả là, khi vuông thuật toán truy tìm vào mép ranh
giới bắt đầu (khi bắt đầu pixel) cho một lần thứ hai,
nó sẽ làm như vậy trong cùng một hướng nó đã làm khi nó
lần đầu tiên vào nó.
Lý do cho điều đó là vì có 2 cách để đi qua một cạnh
ranh giới, và kể từ khi dự khuyết thuật toán giữa
"trong" và "ra" của các cạnh ranh giới liên tiếp, và kể
từ khi có một số thậm chí cạnh ranh giới, thuật toán sẽ
đi qua ranh giới bắt đầu cạnh một lần thứ hai trong
cùng một cách nó đã làm lần đầu tiên.
Kết luận
Với một mô hình 4-kết nối và nền, hình vuông truy tìm
thuật toán sẽ theo dõi toàn bộ ranh giới tức là đường
viền, các mô hình và sẽ dừng lại sau khi truy tìm các
ranh giới một lần tức là nó sẽ không theo dõi nó một
lần nữa kể từ khi nó đạt đến mép ranh giới bắt đầu cho
một thứ hai thời gian, nó sẽ nhập vào nó trong cùng một
cách nó đã làm lần đầu tiên.
Do đó, thuật toán Square Tracing, sử dụng các tiêu chí
dừng Jacob, một cách chính xác sẽ trích xuất các đường
viền của bất kỳ mô hình cung cấp cả hai mô hình và nền
tảng của nó là 4-kết nối.
Moore-Neighbor Tracing
1)Ý tưởng:
Ý tưởng đằng sau Moore-Neighbor truy tìm rất đơn giản;
nhưng trước khi chúng tôi giải thích nó, chúng ta cần
phải xác định một khái niệm quan trọng: Moore
neighborhood của một điểm ảnh.
Moore neighborhood
Các Moore neighborhood của một pixel, P, là tập hợp của
8 điểm ảnh chia sẻ cùng một đỉnh hoặc cạnh với pixel.
Những điểm ảnh pixel cụ thể là P1, P2, P3, P4, P5, P6,
P7 và P8 thể hiện trong hình 1 dưới đây.
Các Moore neighborhood (còn được gọi là 8-láng giềng
hàng xóm gián tiếp) là một khái niệm quan trọng là
thường xuyên xuất hiện trong các tài liệu.
Bây giờ chúng ta đã sẵn sàng để giới thiệu ý tưởng đằng
sau Moore-Neighbor truy tìm ...
Với một mô hình kỹ thuật số có nghĩa là một nhóm các
pixel đen trên nền của các điểm ảnh màu trắng, tức là
một mạng lưới; xác định vị trí một điểm ảnh màu đen và
tuyên bố nó như là "bắt đầu" của mình pixel. (Định vị
một "bắt đầu" điểm ảnh có thể được thực hiện trong một
số cách, chúng ta sẽ bắt đầu từ góc dưới bên trái của
lưới điện, quét từng cột điểm ảnh từ phía dưới đi lên -
starting từ cột ngoài cùng bên trái và tiến tới bên
phải -. cho đến khi chúng ta gặp phải một điểm ảnh màu
đen chúng tôi sẽ tuyên bố rằng điểm ảnh của chúng tôi
"bắt đầu" pixel).
Bây giờ, hãy tưởng tượng rằng bạn là một con bọ ( bọ
rùa) đứng trên bắt đầu điểm ảnh như trong hình 2 bên
dưới. Không mất tính tổng quát, chúng tôi sẽ trích xuất
các đường viền bằng cách đi quanh mô hình trong một
chiều kim đồng hồ. (Nó không quan trọng mà hướng bạn
chọn miễn là bạn gắn bó với sự lựa chọn của bạn trong
suốt thuật toán).
Ý tưởng chung là: mỗi khi bạn nhấn một điểm ảnh màu
đen, P, trở về nhà tức là quay trở lại các điểm ảnh màu
trắng trước đó bạn đang đứng trên, sau đó, đi xung
quanh điểm ảnh P trong một chiều kim đồng hồ, quý khách
đến thăm mỗi điểm ảnh trong khu phố Moore của nó, cho
đến khi bạn nhấn một điểm ảnh màu đen. Các thuật toán
chấm dứt khi bắt đầu điểm ảnh được truy cập trong một
thời gian thứ hai.
Các điểm ảnh màu đen bạn đi ngang qua sẽ là đường viền
của mô hình.
2) Thuật toán:
Input: Một hình lát T, chứa các thành phần P của điểm
ảnh đen
Output: Một chuỗi B (b1,b2,…) của các điểm ảnh biên
(đường viền)
Xác định M (a) là khu phố Moore của điểm ảnh một.
Cho p biểu thị ranh giới điểm ảnh hiện tại.
Hãy c biểu thị các điểm ảnh hiện đang được xem xét ví
dụ c là M (p).
Bắt đầu
- Đặt B để trống.
-Từ dưới lên trên và từ trái sang phải quét T cho đến
khi một điểm ảnh màu đen, s, P được tìm thấy.
- Chèn s vào B.
-Thiết lập các điểm ranh giới hiện tại p để s nghĩa là
p = s
- Quay lại tức là di chuyển đến các điểm ảnh mà s đã
được nhập.
- Đặt c là chiều kim đồng hồ điểm ảnh tiếp theo trong M
(p).
- Trong khi c không bằng s làm
-Nếu c là màu đen chèn c trong B
thiết lập p = c
quay lại (di chuyển các điểm ảnh hiện tại c để các điểm
ảnh từ đó p đã được nhập) nếu không thúc đẩy các điểm
ảnh hiện tại c để chiều kim đồng hồ điểm ảnh tiếp theo
trong M (p)
Kết thúc
3) Minh họa
Mỗi khi bạn nhấn một điểm ảnh màu đen, P, trở về nhà
tức là quay trở lại các điểm ảnh màu trắng trước đó bạn
đang đứng trên, sau đó, đi xung quanh điểm ảnh P trong
một chiều kim đồng hồ, khi đến mỗi điểm ảnh trong khu
phố Moore của nó, cho đến khi bạn nhấn một điểm ảnh màu
đen. Các thuật toán chấm dứt khi bắt đầu điểm ảnh được
truy cập trong một thời gian thứ hai.
4) Phân tích
Điểm yếu chính của Moore-Neighbor truy tìm nằm trong sự
lựa chọn của điều kiện dừng, nói cách khác, khi nào các
thuật toán chấm dứt?
Trong mô tả ban đầu của thuật toán được sử dụng trong
Moore-Neigbor truy tìm, tiêu chí dừng lại đến thăm các
điểm ảnh bắt đầu cho một lần thứ hai. Giống như trong
trường hợp của Square Tracing thuật toán, nó chỉ ra
rằng Moore-Neighbor truy tìm sẽ không đường viền theo
dõi một gia đình lớn của mô hình thể nó là phụ thuộc
vào tiêu chí đó.
Một cuộc biểu tình giải thích cách hoạt hình Moore-
Neighbor truy tìm không để trích xuất các đường viền
của một mô hình do sự lựa chọn xấu của điều kiện dừng .
Như bạn có thể thấy, việc cải thiện tiêu chí dừng lại
sẽ là một khởi đầu tốt để cải thiện hiệu suất tổng thể
của Moore-Neighbor truy tìm. Có 2 lựa chọn thay thế
hiệu quả để ngăn chặn các tiêu chí hiện tại:
a) Dừng lại sau khi đi thăm các điểm ảnh đầu n
lần, trong đó n là ít nhất 2.
b) Dừng sau khi vào bắt đầu điểm ảnh lần thứ
hai trong cùng một cách bạn đã làm đúng ban
đầu. Tiêu chuẩn này được đề xuất bởi Jacob
Eliosoff và do đó chúng tôi sẽ gọi nó là tiêu
chí dừng Jacob.
Sử dụng điều kiện dừng của Jacob sẽ cải thiện hiệu suất
của Moore-Neighbor truy tìm làm cho nó các thuật toán
tốt nhất để chiết xuất đường viền của bất kỳ mô hình
không có vấn đề gì kết nối của nó.
Lý do chủ yếu là do thực tế rằng các thuật toán sẽ kiểm
tra toàn bộ khu vực Moore của một pixel ranh giới để
tìm ra ranh giới pixel tiếp theo. Không giống như các
thuật toán Quảng trường Tracing, mà làm cho một trong
hai lượt và bỏ lỡ "chéo" điểm ảnh bên trái hoặc bên
phải; Moore-Neighbor truy tìm sẽ luôn luôn có thể trích
xuất các ranh giới ngoài của bất cứ thành phần kết nối.
Lý do cho điều đó là: đối với bất kỳ 8-kết nối (hoặc
chỉ đơn giản là kết nối) mô hình, ranh giới pixel tiếp
theo nằm trong khu phố Moore của ranh giới điểm ảnh
hiện tại. Từ Moore-Neighbor truy tìm tiền để kiểm tra
tất cả các điểm ảnh trong khu vực Moore của ranh giới
điểm ảnh hiện tại, nó là ràng buộc để phát hiện các
điểm ảnh ranh giới tiếp theo.
Khi Moore-Neighbor truy tìm thăm các điểm ảnh bắt đầu
cho một lần thứ hai trong cùng một cách nó đã lần đầu
tiên, điều này có nghĩa rằng nó đã lần theo đường viền
bên ngoài hoàn toàn của mô hình và nếu không chấm dứt,
nó sẽ theo dõi các đường viền cùng một lần nữa. Kết quả
này vẫn chưa được chứng minh
Radial Sweep
1) Ý tưởng
Các thuật toán quét Radial là một đường viền truy tìm
thuật toán đã được giải thích trong một số văn học.
Không giống như tên lạ mắt của mình, ý tưởng đằng sau
nó là rất đơn giản. Như một vấn đề của thực tế, nó
chỉ ra rằng các thuật toán quét Radial giống hệt với
Moore-Tracing Neighbor. Vì vậy, bạn phải hỏi: "Tại
sao chúng ta bận tâm để đề cập đến nó ở đây?".
Moore-Neighbor truy tìm tìm kiếm các khu vực lân cận
Moore của ranh giới điểm ảnh hiện tại trong một hướng
nhất định (chúng tôi đã chọn chiều kim đồng hồ), cho
đến khi nó tìm thấy một điểm ảnh màu đen. Sau đó
tuyên bố rằng điểm ảnh như là ranh giới điểm ảnh hiện
tại và tiến hành như trước.
Các thuật toán quét xuyên làm điều chính xác. Mặt
khác, nó cung cấp một phương pháp thú vị cho việc tìm
kiếm các điểm ảnh màu đen bên cạnh trong khu phố
Moore của một pixel ranh giới nhất định.
Ý tưởng đằng sau phương pháp đó như sau:
Mỗi khi bạn xác định vị trí một điểm ảnh ranh
giới mới, làm cho nó điểm ảnh hiện tại của
bạn, P, và vẽ một đường thẳng tưởng tượng
tham gia P để các điểm ảnh ranh giới trước
đó. Sau đó, xoay các phân khúc về P trong một
chiều kim đồng hồ cho đến khi nó chạm một
điểm ảnh màu đen trong khu phố Moore P. Xoay
phân khúc này là giống hệt nhau để kiểm tra
mỗi điểm ảnh trong khu vực Moore của P.
Chúng tôi đã cung cấp các trình diễn hoạt hình sau
đây để giải thích cách hoạt động của thuật toán quét
Radial và cách tương tự đó là để Moore-Neighbor truy
tìm.
Khi nào các thuật toán quét Radial chấm dứt?
Hãy kiểm tra hành vi của các thuật toán khi các tiêu
chí dừng sau được sử dụng ...
Tiêu chí dừng 1
Hãy để cho thuật toán quét Radial chấm dứt khi nó
thăm đầu pixel cho một lần thứ hai.
Sau đây là một cuộc biểu tình hoạt hình giải thích lý
do tại sao nó sẽ là một ý tưởng tốt để thay đổi điều
đó tiêu chí dừng lại.
Một điểm đáng nhắc đến là việc thực hiện các thuật
toán quét Radial là giống như của Moore-Neighbor truy
tìm khi tiêu chí dừng này được sử dụng trong cả hai.
Trong Truy tìm thuật toán Square và Moore-Neighbor
truy tìm, chúng tôi thấy rằng việc sử dụng dừng lại
tiêu chí của Jacob (Jacob Eliosoff đề xuất) cải thiện
đáng kể hiệu suất cả hai thuật toán.
Tiêu chí dừng Jacob đòi hỏi rằng các thuật toán chấm
dứt khi thăm đầu pixel cho một lần thứ hai trong cùng
một hướng nó đã lần đầu tiên.
Thật không may, chúng tôi sẽ không thể sử dụng điều
kiện dừng của Jacob trong thuật toán quét Radial. Lý
do cho điều này là một thực tế rằng các thuật toán
quét xuyên không định nghĩa khái niệm "hướng", trong
đó nó đi vào một điểm ảnh ranh giới. Nói cách khác,
nó không rõ ràng (cũng không phải là tầm thường để
xác định) "hướng", trong đó một điểm ảnh ranh giới
được nhập vào các thuật toán.
Vì vậy, chúng tôi sẽ đề xuất một tiêu chí dừng lại mà
không phụ thuộc vào hướng mà bạn nhập vào một điểm
ảnh nhất định và sẽ cải thiện hiệu suất của thuật
toán quét xuyên ...
Tiêu chí dừng 2
Giả sử rằng mỗi một điểm ảnh ranh giới mới, Pi, được
tìm thấy bởi các thuật toán, nó được đưa vào chuỗi
các ảnh điểm biên như vậy: P1, P2, P3, ..., Pi; và
được khai báo là ranh giới điểm ảnh hiện tại.
(Giả sử P1 là sự bắt đầu pixel).
Điều này có nghĩa rằng chúng ta biết các điểm ảnh
ranh giới trước đó, Pi-1, của mỗi điểm ảnh ranh giới
hiện tại, Pi.
(Đối với các điểm ảnh bắt đầu, chúng ta sẽ cho rằng
P0 là một điểm ảnh tưởng tượng phá hủy không tương
đương với bất kỳ điểm ảnh trên grid- mà đi kèm trước
khi các điểm ảnh đầu trong chuỗi các ảnh điểm biên).
Với những giả định trên trong tâm trí, chúng ta có
thể xác định tiêu chí của chúng tôi dừng lại:
Các thuật toán chấm dứt khi:
a) ranh giới điểm ảnh hiện tại, Pi, đã xuất
hiện trước đây như điểm ảnh Pj (trong đó j
<i) trong chuỗi các ảnh điểm biên,
VÀ
b) Pi-1 = Pj-1.
Nói cách khác, các thuật toán kết thúc khi đến thăm
một điểm ảnh ranh giới, P, lần thứ hai với điều kiện
là các điểm ảnh ranh giới trước khi P (trong chuỗi
các ảnh điểm biên) lần thứ hai xung quanh, là cùng
một điểm ảnh đó là trước khi P khi P lần đầu tiên
được đến thăm.
Nếu tiêu chí dừng lại này là hài lòng và các thuật
toán đã không chấm dứt, các thuật toán quét xuyên sẽ
tiến hành theo dõi các ranh giới tương tự cho một lần
thứ hai.
Việc thực hiện các thuật toán quét xuyên sử dụng tiêu
chí dừng này cũng tương tự như hiệu suất hoạt động
của Moore-Neighbor truy tìm bằng cách sử dụng tiêu
chí dừng Jacob.
Theo Pavlidis' Algorithm
1)Ý tưởng
Thuật toán này là một trong những thuật toán đường viền
truy tìm gần đây và đã được đề xuất bởi Theo Pavlidis.
Ông đã xuất bản nó trong thuật toán cuốn sách của ông
cho đồ họa và xử lý ảnh vào năm 1982, chương 7 (phần
5). Nó không phải là đơn giản như Truy tìm thuật toán
Square hoặc Moore-Neighbor truy tìm, nhưng nó không
phức tạp (một tài sản được chia sẻ bởi hầu hết các
thuật toán truy tìm đường viền).
Chúng tôi sẽ giải thích thuật toán này bằng cách sử
dụng một cách tiếp cận khác với trình bày trong cuốn
sách. Cách tiếp cận này là dễ dàng hơn để hiểu và sẽ
cung cấp cái nhìn sâu sắc vào những ý tưởng chung đằng
sau các thuật toán.
Không mất tính tổng quát, chúng tôi đã chọn để theo dõi
các đường viền trong một chiều kim đồng hồ để phù hợp
với tất cả các thuật toán đường viền truy tìm khác được
thảo luận trên trang web này. Mặt khác, Pavlidis chọn
để làm như vậy theo một hướng ngược chiều kim đồng.
Điều này không nên thực hiện bất kỳ sự khác biệt đối
với việc thực hiện các thuật toán. Tác động duy nhất
này sẽ phải là về định hướng tương đối của chuyển động
bạn có thể thực hiện khi truy tìm các đường viền.
Bây giờ chúng ta hãy tiếp tục với ý tưởng ...
Với một mô hình kỹ thuật số có nghĩa là một nhóm
các pixel đen trên nền của các điểm ảnh màu trắng, tức
là một mạng lưới; xác định vị trí một điểm ảnh màu đen
và tuyên bố nó như là "bắt đầu" của điểm ảnh. Nằm một
"bắt đầu" điểm ảnh có thể được thực hiện trong một số
cách khác nhau; một trong số đó được thực hiện bằng
cách bắt đầu ở góc dưới bên trái của lưới điện, quét
mỗi cột điểm ảnh từ phía dưới đi lên -starting từ cột
ngoài cùng bên trái và tiến tới các tên bên phải cho
đến khi một điểm ảnh màu đen là gặp phải. Khẳng rằng
điểm ảnh là các điểm ảnh "bắt đầu".
Chúng tôi sẽ không nhất thiết phải thực hiện theo các
phương pháp trên trong việc định vị một điểm ảnh bắt
đầu. Thay vào đó, chúng tôi sẽ chọn một điểm ảnh bắt
đầu đáp ứng các hạn chế sau đây đối với việc lựa chọn
một điểm ảnh bắt đầu cho thuật toán Pavlidis ':
Hạn chế quan trọng về hướng mà bạn nhập vào các điểm
ảnh đầu
Bạn thực sự có thể chọn bất kỳ ranh giới điểm ảnh màu
đen được bắt đầu điểm ảnh của bạn miễn là khi bạn đang
đứng đầu tiên trên đó, điểm ảnh liền kề bên trái của
bạn là không đen. Nói cách khác, bạn nên chắc chắn rằng
bạn nhập khởi điểm ảnh theo một hướng mà đảm bảo rằng
các điểm ảnh liền kề bên trái nó sẽ có màu trắng
("trái" ở đây được thực hiện đối với hướng mà bạn nhập
vào đầu pixel).
Bây giờ, hãy tưởng tượng rằng bạn là một lỗi (rùa) đứng
trên bắt đầu điểm ảnh như trong hình 1 dưới đây.
Trong suốt các thuật toán, các điểm ảnh mà bạn quan tâm
đến bất cứ lúc nào là 3 điểm ảnh ở phía trước của bạn
tức là P1, P2 và P3 thể hiện trong hình 1.
(Chúng tôi sẽ xác định P2 là các điểm ảnh
ngay trước mặt bạn, P1 là các điểm ảnh liền kề với P2
từ bên trái và P3 là các điểm ảnh lân cận quyền P2).
Giống như ở Squace Tracing thuật toán, điều quan trọng
nhất trong thuật toán Pavlidis 'là "ý thức hướng" của
bạn. Bên trái và bên phải biến bạn thực hiện được đối
với vị trí hiện tại của bạn, mà phụ thuộc vào cách bạn
cho vào các điểm ảnh bạn đang đứng trên với. Vì vậy,
điều quan trọng là để theo dõi các định hướng hiện tại
của bạn để thực hiện những bước đi đúng.
Nhưng không có vấn đề gì vị trí bạn đang đứng, điểm ảnh
P1, P2 và P3 sẽ được xác định như trên.
Với thông tin này, chúng tôi đã sẵn sàng để giải thích
các thuật toán ...
Mỗi khi bạn đang đứng trên ranh giới điểm ảnh hiện tại
(đó là các điểm ảnh bắt đầu lúc đầu) thực hiện như sau:
Đầu tiên, hãy kiểm tra điểm ảnh P1. Nếu P1 là màu đen,
sau đó khai báo P1 được giới hạn điểm ảnh hiện tại của
bạn và di chuyển một bước về phía trước theo sau là một
bước để hiện tại của bạn lại với đất trên P1.
(thứ tự mà bạn thực hiện di chuyển của bạn là rất quan
trọng)
Hình 2 dưới đây giải thích trường hợp này. Con đường
bạn nên làm theo để đất trên P1 được vẽ màu xanh lam.
Chỉ khi P1 là màu trắng tiến hành kiểm tra P2 ...
Nếu P2 là màu đen, sau đó tuyên bố P2 là ranh giới điểm
ảnh hiện tại của bạn và di chuyển một bước về phía
trước với đất trên P2.
Hình 3 dưới đây giải thích trường hợp này. Con đường
bạn nên làm theo để đất trong P2 được vẽ màu xanh lam.
Chỉ khi cả P1 và P2 có màu trắng tiến hành kiểm tra
P3 ...
Nếu P3 là màu đen, sau đó tuyên bố P3 là ranh giới điểm
ảnh hiện tại của bạn và di chuyển một bước bên phải của
bạn theo sau là một bước sang trái hiện tại của bạn như
thể hiện trong hình 4 bên dưới.
3 nguyên tắc đơn giản cho 3 trường hợp đơn giản. Như
bạn đã thấy, điều quan trọng để theo dõi chỉ đạo của
bạn khi bạn chuyển từ tất cả các động thái này liên
quan đến định hướng hiện tại của bạn với.
Điều gì nếu tất cả 3 điểm ảnh ở phía trước của bạn có
màu trắng?
Sau đó, bạn xoay (trong khi đứng trên ranh giới điểm
ảnh hiện tại) 90 độ chiều kim đồng hồ để đối mặt với
một tập mới của 3 điểm ảnh ở phía trước của bạn. Sau đó
bạn làm việc kiểm tra tương tự trên các điểm ảnh mới
như bạn đã làm trước đó.
Bạn vẫn có thể đặt câu hỏi: nếu tất cả các 3 điểm ảnh
có màu trắng ?!
Vâng, sau đó xoay một lần nữa thông qua 90 độ chiều kim
đồng hồ trong khi đứng trên cùng một điểm ảnh.
Bạn có thể xoay 3 lần (mỗi 90 độ chiều kim đồng hồ)
trước khi kiểm tra ra các khu vực lân cận toàn bộ Moore
của các điểm ảnh. Nếu bạn xoay 3 lần mà không tìm thấy
bất kỳ điểm ảnh đen, điều này có nghĩa là bạn đang đứng
trên một điểm ảnh có nghĩa là cô lập không kết nối với
bất kỳ điểm ảnh màu đen khác. Đó là lý do tại sao các
thuật toán sẽ cho phép bạn xoay 3 lần trước khi nó chấm
dứt.
Một điều: Khi nào các thuật toán chấm dứt?
Các thuật toán chấm dứt trong 2 trường hợp:
a) như đã đề cập ở trên, các thuật toán sẽ cho phép bạn
xoay 3 lần (mỗi 90 độ chiều kim đồng hồ) sau đó nó sẽ
chấm dứt và công bố các điểm ảnh là một cô lập,
b) khi ranh giới điểm ảnh hiện nay là bắt đầu điểm của
các bạn, các thuật toán chấm dứt "tuyên bố" rằng nó đã
bắt nguồn từ các đường viền của mô hình.
2) Thuật toán
Input: Một hình lát T, chứa các thành phần P của điểm
ảnh đen
Output: Một chuỗi B (b1,b2,…) của các điểm ảnh biên
(đường viền)
Định nghĩa:
Xác định p là các điểm ảnh ranh giới hiện tại tức là
các điểm ảnh bạn đang đứng trên.
Xác định điểm ảnh P1, P2 và P3 như sau: (xem hình 1 ở
trên)
P2 là các điểm ảnh ở phía trước của bạn tiếp giáp với
một trong những bạn đang đứng trên tức là điểm ảnh p.
P1 là các điểm ảnh liền kề bên trái để P2.
P3 là các điểm ảnh lân cận quyền P2.
Xác định một "bước" trong một hướng nhất định như di
chuyển một khoảng cách một điểm ảnh theo hướng đó.
Lưu ý: Tại mọi thời điểm, hãy tưởng tượng rằng bạn là
một con bọ di chuyển từ điểm ảnh để điểm ảnh theo các
hướng dẫn cụ thể. "chuyển tiếp", "trái" và "đúng" là
liên quan đến vị trí hiện tại của bạn trên pixel.
Bắt đầu
- Đặt B để trống
- Từ dưới lên trên và từ trái sang phải quét các tế bào
T cho đến khi bắt đầu điểm ảnh màu đen, s, P được tìm
thấy (xem quan trọng hạn chế liên quan đến hướng bạn
bắt đầu nhập điểm ảnh trên)
- Chèn s vàoB.
Thiết lập các điểm ảnh hiện tại, p, được các điểm ảnh
bắt đầu, s.
Lặp lại sau
Nếu điểm ảnh P1 là màu đen
- Chèn P1 trong B
- Cập nhật p = P1
- Di chuyển một bước về phía trước theo sau là một bước
sang trái hiện tại của bạn
khác nếu P2 là màu đen
- Chèn P2 trong B
- Cập nhật p = P2
- Di chuyển một bước về phía trước (xem hình 3 ở trên)
khác nếu P3 là màu đen
- Chèn P3 B
- Cập nhật p = P3
- Di chuyển một bước về phía bên phải, cập nhật vị trí
của bạn và di chuyển một bước sang trái hiện tại của
bạn (xem hình 4 ở trên) khác nếu bạn đã xoay 90 độ
chiều kim đồng hồ 3 lần trong khi trên cùng một điểm
ảnh p chấm dứt chương trình và tuyên bố p là một điểm
ảnh riêng biệt nếu không xoay 90 độ chiều kim đồng hồ
trong khi đứng trên dòng điểm ảnh p
-Cho đến khi p = s (End Lặp lại)
Kết thúc
3)Minh họa
4)Phân tích
Nếu bạn đang nghĩ rằng thuật toán Pavlidis 'là hoàn hảo
cho giải nén các đường viền của mẫu, suy nghĩ lại ...
Đó là sự thật rằng thuật toán này là một chút phức tạp
hơn nói, truy tìm Moore-Neighbor mà không có trường hợp
đặc biệt để chăm sóc, nhưng nó không để trích xuất các
đường viền của một gia đình lớn của mô hình có một loại
kết nối.
Thuật toán hoạt động rất tốt trên các mẫu 4-kết nối.
vấn đề của nó nằm trong việc truy tìm một số mô hình 8-
kết nối mà không phải là 4 kết nối.
Sau đây là một minh chứng sinh động về cách thức thuật
toán Pavlidis 'không để trích xuất các đường viền của
một mô hình 8-kết nối (không phải là 4 kết nối) bởi
thiếu một phần lớn của ranh giới.
Có 2 cách đơn giản thay đổi thuật toán nhằm nâng cao
hiệu quả của nó một cách đáng kể.
a) Thay đổi tiêu chí dừng
Thay vì chấm dứt các thuật toán khi thăm đầu
pixel cho lần thứ hai, thực hiện các thuật toán
chấm dứt sau khi đi thăm các điểm ảnh bắt đầu
một phần ba hoặc thậm chí một thời gian thứ tư.
Điều này sẽ cải thiện hiệu suất chung của các
thuật toán.
b) Chuyển đến nguồn gốc của vấn đề; cụ thể là,
sự lựa chọn của các điểm ảnh đầu
Có một hạn chế quan trọng liên quan đến hướng
mà bạn nhập vào đầu pixel. Về cơ bản, bạn phải
nhập các điểm ảnh bắt đầu đó là khi bạn đang đứng
trên đó, các điểm ảnh liền kề với bạn từ bên trái
là màu trắng. Lý do cho việc áp đặt một hạn chế
đó là:
kể từ khi bạn luôn luôn xem xét 3 điểm ảnh ở phía
trước của bạn theo một thứ tự nhất định, bạn sẽ có
xu hướng bỏ lỡ một điểm ảnh ranh giới nằm trực
tiếp bên trái của các điểm ảnh đầu trong mô hình
nhất định.
Không chỉ các điểm ảnh liền kề bên trái của điểm ảnh là
bắt đầu có nguy cơ bị bỏ qua, nhưng cũng có những điểm
ảnh trực tiếp dưới pixel phải đối mặt với một mối đe
dọa như vậy (như thể hiện trong phản ví ở trên). Ngoài
ra, các điểm ảnh tương ứng với điểm ảnh R trong hình 5
dưới đây sẽ được bỏ qua trong một số mẫu. Vì vậy, chúng
tôi đề nghị một điểm ảnh bắt đầu nên được nhập vào theo
một hướng như vậy mà các điểm ảnh tương ứng với pixel
L, W và R thể hiện trong hình 5 dưới đây, có màu trắng.
Bằng cách này, mô hình giống như trong các cuộc biểu
tình trên sẽ được bắt nguồn từ một cách chính xác và
hiệu suất của thuật toán Pavlidis 'sẽ cải thiện.
Mặt khác, việc tìm kiếm một điểm ảnh bắt đầu đáp ứng
các hạn chế trên có thể là khó khăn và trong nhiều
trường hợp một điểm ảnh như vậy sẽ không được tìm thấy.
Trong trường hợp đó, các phương pháp thay thế để cải
thiện thuật toán Pavlidis 'nên được sử dụng, đó là: