- Hình sau đây minh họa 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 họa 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 họa, 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)