Các thao tác tô lấ p( Flood Fill)

Một phần của tài liệu Matlab Cho Xử Lý Ảnh (Trang 147 - 150)

- Hình sau đây minh hoạ quá trình xửlý này tron g1 chiều Mỗi xự giãn nở liên tiếp được

c- Các thao tác tô lấ p( Flood Fill)

- Hàm imfill thực hiện một thao tác tô lấp trên ảnh nhị phân và ảnh đen trắng . Với ảnh nhị phân , hàm imfill thay đổi các pixel nền được kết nối ( có giá trị 0 ) thành các pixel

foreground ( có giá trị 1 ) . Quá trình thay đổi này dừng lại khi chúng đạt đến biên của các đối tượng . Với các ảnh đen trắng , hàm imfill thay các giá trị cường độ của vùng đen ( được bao quanh bởi các vùng trắng hơn ) thành cùng mức cường độ với các pixel xung quanh . Thao tác này sẽ có ích khi loại bỏ các artifact không thích hợp khỏi ảnh

Chỉ định kiểu kết nối trong các thao tác tô lấp

- Với ảnh nhị phân và ảnh đen trắng , biên của thao tác tô lấp được quyết định bởi kiểu kết nối mà ta đã chỉ định

- Mối ảnh hưởng của kiểu kết nối có thể được minh hoạ với ma trận sau : BW = [ 0 0 0 0 0 0 0 0; 0 1 1 1 1 1 0 0; 0 1 0 0 0 1 0 0; 0 1 0 0 0 1 0 0; 0 1 0 0 0 1 0 0; 0 1 1 1 1 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0];

- Nếu nền là kiểu 4 kết nối , ảnh nhị phân này chứa hai phần tử background riêng biệt ( phần trong vòng và ngoài vòng ) . Nếu nền là kiểu 8 kết nối , các pixel kết nối chéo và chỉ có một phần tử background .

Chỉ định điểm bắt đầu

- Với các ảnh nhị phân , ta có thể chỉ ra điểm bắt đầu của thao tác tô lấp bằng cách sử dụng hàm imfill theo kiểu tương tác , lựa chọn các pixel khởi đầu với con trỏ chuột . Chẳng hạn , nếu ta gọi hàm imfill , chỉ ra pixel BW(4,3) là pixel khởi đầu , hàm imfill chỉ tô bên trong vòng bởi vì , theo mặc định nền là kiểu 4 kết nối ( 4 connected )

imfill(BW,[4 3]) ans = 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 0

0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

- Nếu ta chỉ ra cùng một điểm bắt đầu nhưng sử dụng nền kiểu 8 kết nối , hàm imfill sẽ tô đầy toàn bộ ảnh imfill(BW,[4 3],8) ans = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Tô lấp các lỗ hổng trong ảnh

- Một thao tác tô lấp hay được sử dụng là tô lấp các lỗ hổng ( holes )trong ảnh. Chẳng hạn , giả sử ta có một ảnh nhị phân hoặc đen trắng trong đó các đối tượng foreground đại diện cho các hình cầu . Trong ảnh , những đối tượng này xuất hiện như những đĩa . Trước khi thực hiện bất kì một thao tác xử lý nào , ta muốn đầu tiên tô đầy các lỗ hổng ( xem ảnh ) sử dụng hàm imfill

-Do thao tác tô lấp được sử dụng rất thường xuyên để tô lấp các lỗ , hàm imfill bao gồm các cú pháp đặc biệt để trợ giúp tác thao tác này trên cả ảnh nhị phân và ảnh đen trắng . Trong cú pháp này , ta chỉ cần chỉ ra tham số “ holes “ , ta không phải chỉ ra vị trí bắt đầu trong mỗi lỗ hổng . Để minh hoạ , ví dụ sau đây sẽ tô lấp các lỗ trong một ảnh đen trắng : [X,map] = imread('spine.tif');

I = ind2gray(X,map); Ifill = imfill(I,'holes');

imshow(I);figure, imshow(Ifill)

Một phần của tài liệu Matlab Cho Xử Lý Ảnh (Trang 147 - 150)

Tải bản đầy đủ (DOC)

(152 trang)
w