Ý tưởng tổng quát cho việc phân đoàn và tách đường viền đều xuất phát từ những ứng dụng thực tế. Chẳng hạn như trong truyền hình hay công nghệ mắt nhìn nhân tạo. Việc xử lý và truyền dẫn một lượng rất lơn các dữ liệu hình ảnh từ nhiều kênh, nhiều chiều là rất phức tạp. Để đáp ứng thực tế đó, cần phải giảm bớt dữ liệu trong từng hình ảnh. Chỉ dữ lại những thông tin quan trọng đáp ứng nhu cầu mà người sử dụng quan tâm nhưng không làm sai lệch hay thay đổi thông tin. Mục đích của việc phân đoạn và tách đường bao là trích ra những vùng ở trong ảnh, tức là chia ảnh thành những vùng được biểu thị bằng giá trị của các pixel chung nhất. Chẳng hạn như chúng có cùng độ sang, cùng màu sắc.
Một trong những phương pháp đơn giản nhất để thực hiện phân đoạn và tách đường viền là kỹ thuật lập hoành đồ (histogramming) và đặt ngưỡng (thresholding). Vì hoành đồ của một ảnh đặc trưng cho mật độ xác suất xuất hiện của giá trị mức xám xác định. Các ảnh thì được tạo thành bởi các đối tượng sáng trên một nền tối, vì tách ảnh tức là trích các đối tượng sáng ra. Với một ảnh như vậy thì hoành đồ của nó luôn có hai đỉnh cực đại và một chỗ lõm giữa hai cực đại đó. Sau khi vẽ được hoành đồ của ảnh, thì bước tiếp theo là chọn giá trị ngưỡng để trích ra giá trị đỉnh và các giá trị mức xám của nền. Với cách làm này thì giá trị ngưỡng ít nhất cũng bằng giá trị các mức xám của vùng lõm giữa các đỉnh
26 của hoành đồ của ảnh gốc. Bước tiếp theo là đánh dấu chỉ số cho các pixels có giá trị mức xám lớn hơn giá trị ngưỡng như là các pixels của đối tượng, còn các pixels có giá trị nhỏ hơn ngưỡng là các pixel của ảnh nền.
Phương pháp phân đoạn ảnh và tách các đường viền được tập hợp thành hai loại chính. Đó là phương pháp dựa trên sự lấy ngưỡng các pixels và phương pháp dựa trên sự biến đổi, trong đó có hai phép biến đổi quan trong là biến đổi Hough và biến đổi Watershed. [13]
Trong Matlab, để tính ngưỡng toàn cục (Th) cho một ảnh, dụng hàm graythresh. Hàm này có cú pháp: Th = graythresh(f)
Đầu tiên graythresh tính hoành đồ của ảnh f, sau đó mới tính giá trị ngưỡng Th. Giá trị ngưỡng Th được chuẩn hoá trong vùng từ 0 đến 1.
Và việc tách đường viền được thực hiện nhờ hàm edge với cú pháp: [BW,th] = edge(f, ‘mask’, parameters)
Trong đó BW là ảnh nhị phân lối ra, th là tham số chức năng, nó cho biết ngưỡng được sử dụng để xác định sự sai khác về cường độ đủ mạnh để phát hiện đường viền. BW là một mảng logic có giá trị 1 tại những nơi có đường viền và giá trị 0 tại các nơi khác. f là ảnh cường độ lối vào, còn ‘mask’ là bộ lọc, ở đây có các bộ lọc như: ‘Sobel’, ‘Prewitt’, ‘Roberts’, ‘Laplacian of Gausian (LoG)’, ‘Zero Crossings’ và ‘Canny’. Trong đó phương pháp ‘Canny’ là phương pháp khá hiệu quả. [13]
Ví dụ:
>> I = imread('C:\Users\HO VAN THU\Desktop\spkt.jpg'); >> BW = im2bw(I);
>> BW1 = edge(BW,'canny'); >> imshow(BW1)
27
Kết quả :
Hình 3. 6 Ảnh tách biên