Matlab cho xử lý ảnh
Mục lục
1 . Các kiểu ảnh , các thao tác ảnh cơ bản trong Toolbox¬ ------------- Trang 1
2. Phép xử lý trên vùng chọn ------------------------------------------------- Trang 16
3. Xử lý ảnh mờ ------------------------------------------------------------------Trang 23
4. Màu sắc------------------------------------------------------------------------- Trang 38
5. Biến đổi ảnh ------------------------------------------------------------------- Trang 52
6. Biến đổi không gian ảnh ---------------------------------------------------- Trang 78
7. Phân tích và làm giàu ảnh -------------------------------------------------- Trang 98
8. Các biến đổi hình thái ảnh ------------------------------------------------- Trang 129
cơ sở về tái tạo hình thái và mô tả cách sử dụng hàm imreconstruct như thế nào + Mô tả tính kết nối các pixel ( pixel connectivity ) ảnh hưởng ra sao lên tái tạo hình thái + Mô tả cách sử dụng hàm imfill - dựa trên cơ sở của tái tạo hình thái + Mô tả một nhóm các hàm khác dựa trên cơ sở của tái tạo hình thái . a- Ảnh ghi và mặt nạ ( Marker and Mask ) - Xử lý tái tạo hình thái trên một ảnh , ảnh đó được gọi là ảnh ghi ( marker ) . Quá trình xử lý dựa trên cơ sở các đặc tính của một ảnh khác , ảnh đó được gọi là mặt nạ ( mask ) . Điểm cao nhất hay đỉnh trong ảnh ghi chỉ ra vị trí bắt đầu quá trình xử lý . Quá trình xử lý sẽ tiếp tục cho đến khi giá trị ảnh ổn định . - Để minh hoạ tái tạo hình thái , xem xét ví dụ sau đây . Nó chứa hai vùng chính , các khối pixel bao gồm các giá trị 14 và 18 . Nền chủ yếu được thiết lập giá trị bằng 10 với một số pixel được thiết lập giá trị 11 . - Để tái tạo hình thái ảnh này , thực hiện những bước sau : 1. Tạo một ảnh ghi . Với cùng phần tử cấu trúc trong giãn nở và xói mòn , các đặc tính của ảnh ghi quyết định quá trình xử lý đã được thực hiện trong tái tạo ảnh . Các đỉnh trong ảnh ghi sẽ phân biệt vị trí của các đối tượng trong ảnh mặt nạ mà ta muốn làm nổi bật . Một cách để tạo một ảnh ghi là trừ một hằng số từ ảnh mặt nạ sử dụng hàm số học ảnh imsubtract marker = imsubtract(A,2) marker = 8 8 8 8 8 8 8 8 8 8 8 12 12 12 8 8 9 8 9 8 8 12 12 12 8 8 8 9 8 8 8 12 12 12 8 8 9 8 9 8 8 8 8 8 8 8 8 8 8 8 8 9 8 8 8 16 16 16 8 8 8 8 8 9 8 16 16 16 8 8 8 8 9 8 8 16 16 16 8 8 8 9 8 9 8 8 8 8 8 8 8 8 8 8 8 8 9 8 8 8 2. Gọi hàm imreconstruct để tái tạo hình thái ảnh . Trong ảnh ra , chú ý rằng tất cả những sự dao động về cường độ ngoại trừ giá trị đỉnh đã bị loại bỏ recon = imreconstruct(marker, mask) Tái tạo hình thái ảnh là gì ? - Tái tạo hình thái có thể được xem như một quá trình giãn nở lặp lại trên ảnh ghi cho đến khi các đường viền của ảnh ghi vừa khít ở dưới ảnh mặt nạ . Theo cách này , các đỉnh trong ảnh ghi trải rộng ra hay giãn nở - Hình sau đây minh hoạ quá trình xử lý này trong 1 chiều . Mỗi xự giãn nở liên tiếp được ràng buộc để nằm dưới mặt nạ . Khi các giãn nở tiếp sau đó không thay đổi ảnh , quá trình xử lý chấm dứt . Giãn nở cuối cùng là ảnh đã được tái tạo . b- Tính liên kết các pixel - Quá trình xử lý hình thái bắt đầu tại đỉnh của ảnh ghi và trải rộng ra các phần còn lại của ảnh trên cơ sở tính liên kết của các pixel . Tính liên kết định nghĩa các pixel được liên kết như thế nào với các pixel khác . Chẳng hạn , ảnh nhị phân này chứa một đối tượng foreground - tất cả các pixel có giá trị 1. Nếu foreground là 4 kết nối , ảnh có một đối tượng background và tất cả các pixel sẽ có giá trị 0 . Tuy nhiên , nếu foreground là 8 kết nối , foreground tạo một vòng đóng và ảnh có hai đối tượng background riêng rẽ : các pixel ở trong vòng và các pixel ở ngoài vòng 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 Định nghĩa tính kết nối trong một ảnh -Sau đây ta sẽ liệt kê tất các tính kết nối 2 và 3 chiều chuẩn được trợ giúp bởi toolbox . Các kết nối hai chiều + 4 kết nối ( 4 connected ) : Các pixel được kết nối với các pixel ở các cạnh của nó . Điều này có nghĩa rằng một gặp pixel liền nhau là một phần của cùng một đối tượng chỉ nếu chúng đều có giá trị 1 và được kết nối dọc theo chiều nằm ngang và chiều thẳng đứng . + 8 kết nối ( 8 connected ) : Các pixel được kết nối nếu các cạnh hoặc các góc của chúng chạm nhau . Điều này có nghĩa rằng nếu hai pixel liền nhau có giá trị 1 ( on ) , chúng sẽ là một phần của cùng một đối tượng bất kể chúng có được kết nối theo chiều ngang ,dọc hay chéo hay không . Các kết nối 3 chiều + 6 kết nối : Các pixel được kết nối nếu các mặt của chúng tiếp xúc nhau + 18 kết nối : Các pixel được kết nối nếu các mặt hoặc các cạnh của chúng tiếp xúc nhau + 26 kết nối : Các pixel được kết nối nếu các mặt , cạnh hoặc góc của chúng chạm nhau Chọn lựa một kết nối - Kiểu của vùng lân cận mà ta chọn sẽ ảnh hưởng đến số lượng đối tượng được tìm thấy trong một ảnh và các vùng biên của chúng . Vì lý do này , kết quả của nhiều thao tác biến đổi hình thái thường khác nhau phụ thuộc vào kiểu kết nối mà ta đã chọn - Chẳng hạn , nếu ta chọn kiểu 4 kết nối thì ảnh nhị phân này sẽ chứa hai đối tượng , nếu ta chọn kiểu 8 kết nối , ảnh chỉ có một đối tượng . 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 Chỉ định các kết nối tuỳ chọn - Ta có thể định nghĩa các vùng lân cận bằng cách chỉ ra một mảng 3x3x3…x3 của các giá trị 0 ,1 . Các phần tử có giá trị 1 định nghĩa kết nối của lân cận trong quan hệ với tâm của phần tử . Chẳng hạn , mảng sau đây định nghĩa một kết nối “Bắc/Nam” có tác dụng ngắt một ảnh ra nhiều cột độc lập . CONN = [ 0 1 0; 0 1 0; 0 1 0 ] CONN = 0 1 0 0 1 0 0 1 0 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 - 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) d- Tìm các đỉnh và đáy ( Peak and Valley ) - Các ảnh đen trắng có thể được xem như trong không gian 3 chiều : trục x, y đại diện cho vị trí các pixel và trục z đại điện cho cường độ của mỗi pixel . Theo cách hiểu này , các giá trị cường độ đại diện cho độ cao giống như trong một bản đồ đo đạc địa hình . Những vùng có cường độ cao và thấp trong - ảnh tương ứng với đỉnh và đáy ( thung lũng ) , có thể là những đặc điểm hình thái quan trọng bởi vì chúng thường đánh dấu các đối tượng ảnh thích hợp - Chẳng hạn , trong một ảnh với vài đối tượng có dạng hình cầu , các điểm có cường độ cao có thể đại diện cho đỉnh của các đối tượng . Sử dụng phép xử lý hình thái , các giá trị đỉnh này có thể được sử dụng để phân biệt các đối tượng trong một ảnh . Các hàm cực đại và cực tiểu - Một ảnh có thể có nhiều vùng lớn hoặc nhỏ nhưng chỉ một vùng cực đại và cực tiểu . Việc tính toán các đỉnh và đáy của ảnh có thể được sử dụng để tạo ra các ảnh ghi ( marker images ) - được sử dụng trong tái tạo hình thái . - Hình sau đây minh hoạ khái niệm trong 1 chiều : Tìm các vùng có cường độ cao hoặc thấp của ảnh - Toolbox cung cấp các hàm mà ta có thể sử dụng để tìm các vùng có cường độ cao hoặc thấp trong một ảnh : + Hàm imregionalmax và imregionalmin phân biệt tất cả các cực tiểu hoặc cực đại vùng + Hàm imextendedmax và imextendedmin phân biệt tất cả các cực tiểu hoặc cực đại vùng mà lớn hơn hoặc nhỏ hơn một ngưỡng xác định - Những hàm này chấp nhận một ảnh đen trắng như là tham số và trả về một ảnh nhị phân làm ảnh ra . Trong ảnh ra , cực tiểu hoặc cực đại vùng được thiết lập tới 1 , tất cả các pixel khác được thiết lập giá trị 0 . Chẳng hạn , ảnh đơn giản sau đây chứa hai cực đại vùng chính , các khối pixel chứa giá trị 13 và 18 và một vài cực đại nhỏ hơn được thiết lập giá trị 11 - Ảnh nhị phân được trả về từ hàm imregionalmax xác định tất cả các cực đại vùng - Có thể ta chỉ muốn phân biệt các vùng của ảnh mà sự thay đổi cường độ là lớn nhất - ở đó sự chênh lệch giữa các pixel và các pixel lân cận của chúng ớn hơn một giá trị ngưỡng nào đó . Chẳng hạn , để tìm chỉ những cực đại vùng trong ảnh mẫu A mà lớn hơn ít nhất hai đơn vị so với các lân cận của chúng , sử dụng hàm imextendedmax B = imextendedmax(A,2)
File đính kèm:
- Matlab cho xử lý ảnh.doc