Phân vùng ảnh theo đường biên dựa trên các đường biên tìm thấy trong ảnh bằng các toán tử phát hiện đường biên.
Ảnh thu được sau khi phát hiện đường biên thể sử dụng trực tiếp để phân vùng ảnh được.
Toán tử đường biên Bám theo đường biên Đánh dấu vùng Xử lý sau Ảnh vào Ảnh ra
Phát hiện đường biên
- Sử dụng các toán tử phát hiện đường biên như toán tử Gradient, Laplace, Sobel, Prewitt, la bàn, LoG… để xác định độ lớn và hướng của đường biên tại từng pixel.
Bám theo đường biên
- Mục đích của việc bám theo đường biên này là nhằm ghép, nối các đường biên thành các vùng kín. - Tìm kiếm theo từng pixel để xét sự liên kết giữa các đoạn đường biên. Có thể sử dụng tiêu chuẩn giống nhau giữa các pixel đường biên để định nghĩa sự liên kết này.
- Ngoài ra, dùng các tính chất hay xấp xỉ hình học để tăng cường đối với các pixel bị ảnh hưởng bởi nhiễu, artifact hay lồi hình học.
- Giả thiết độ lớn và hướng của đường biên thu được qua toán tử phát hiện đường biên lần lượt là e(x,y) và (x,y).
Tìm kiếm vùng lân cận
- Giả thiết pixel đường biên đầu tiên là bj. Pixel tiếp theo bj+1 (lân cận 4 hoặc 8 của pixel đầu tiên) là pixel đường biên nếu nó thỏa mãn
b T1
e j e bj1 T1
b e b 1 T2
- Nếu nhiều hơn 1 pixel lân cận thỏa mãn các điều kiện thì pixel có sai khác nhỏ nhất sẽ được chọn là pixel đường biên tiếp theo.
- Nếu không có pixel lân cận nào thỏa mãn thì dừng lại, 1 pixel khác được chọn làm đường biên. - Nhiều pixel đường biên và đường biên không được liên kết với nhauthường cần các thông tin biết trước về đường bào của đối tượng để tạo thành vùng kín.
Tìm kiếm dựa vào đồ thị
- Tìm kiếm các đường giữa node bắt đầu và các node kết thúc tối thiểu hàm chi phí được lập dựa trên khoảng cách và xác suất chuyển trạng thái.
- Node bắt đầu có thể chọn là pixel đường biên đầu tiên trong ảnh còn các node kết thúc có thể là tất cả các pixel đường biên còn lại hoặc 1 phần của ảnh. - Thuật toán A* được sử dụng rộng rãi nhất. Nó gồm 7 bước:
- Chọn 1 pixel đường biên là node bắt đầu. Các pixel còn lại cho vào danh sách OPEN.
- Nếu không có node nào trong danh sách OPEN thì ngừng, không thì tiếp tục.
- Với tất cả các node có trong OPEN, tính hàm chi phí t() và chọn node z có t(z) là min. Loại nó ra khỏi OPEN và gán cho nó là CLOSED.
z c z h zt t k j j k i i i z d z z s k c 1 2 1,
s(z,zi), d(zi) là chi phí chuyển trạng thái và cục bộ còn h(z) là giới hạn ước lượng dưới của hàm chi phí.
- Nếu z là node cuối cùng, kết thúc. Nếu không thì tiếp tục.
- Tìm tất cả các node lân cận của z. Nếu không có node lân cận, quay lại bước 2 còn không thì tiếp tục.
- Nếu 1 node lân cận zi chưa có trong danh sách nào thì đặt nó vào danh sách OPEN với chi phi
cập nhật là c(zi)=c(z)+s(z,zi)+d(zi) và con trỏ trỏ
tới node z trước đó.
- Nếu zi đã có trong danh sách OPEN hay
CLOSED, cập nhật giá trị của nó với
c’(zi)=min[c(zi),c(z)+s(z,zi)]. Đưa các CLOSED
zi có c’(zi) giảm đi vào danh sách OPEN và trỏ
Một thuật toán khác
1.Tìm một pixel có độ lớn đường biên lớn hơn mức ngưỡng TS. Nếu pixel đó chưa được xác định là pixel đường biên, đặt trạng thái độ dày là ON và bắt đầu bám theo đường biên từ pixel này.
2.Pixel hiện thời có thể được xét là pixel đường biên nếu thỏa mãn 3 điều kiện
- Không là hoặc chưa được xét là pixel đường biên.- Độ lớn đường biên lớn hơn TN < TS