Nhớ lại rằng biến đổi đầu nguồn coi đầu vào của nó là bản đồ địa hình và mô phỏng ngập địa hình đó bằng nước. Các "lưu vực lưu vực" hoặc "các khu vực đầu nguồn" sau đó là các phần của bản đồ "giữ nước" mà không tràn vào các khu vực khác.
Độ lớn độ dốc là một chức năng phân đoạn kém như hiện trạng; nhiễu và các đường viền mở dẫn đến sự phát hiện quá mức của hình ảnh. Chúng ta có thể thử một loạt các hoạt động hình thái với mục đích tạo ra các dấu nền trước và nền gần đúng và sử dụng chúng để loại bỏ các phần giả của gradient.
%# Normalize.
g = gradmag - min(gradmag(:));
g = g / max(g(:));
th = graythresh(g); %# Otsu's method.
a = imhmax(g,th/2); %# Conservatively remove local maxima.
th = graythresh(a);
b = a > th/4; %# Conservative global threshold.
c = imclose(b,ones(6)); %# Try to close contours.
d = imfill(c,'holes'); %# Not a bad segmentation by itself.
%# Use the rough segmentation to define markers.
g2 = imimposemin(g, ~ imdilate( bwperim(a), ones(3) );
L = watershed(g2);
Điều này hoạt động tốt. Bạn nhận được cả hai nhóm người và bóng của họ là các vùng, với một chút tiếng ồn.
Bạn có thể giải thích các mục tiêu của bạn? Đó là, bạn sẽ phân đoạn nhiều hình ảnh khác nhau hay chỉ là hình ảnh rất giống với ví dụ này? Bạn có cần bỏ qua các bóng và tách hai người chồng chéo?
Tôi sẽ cố gắng cập nhật câu trả lời nếu bạn trả lời những câu hỏi này.
Lớp phủ phân đoạn
Bạn hỏi làm thế nào để phủ lên một phân khúc. Một cách là sử dụng các dòng đầu nguồn để chỉ định pixel trong bản gốc và đặt chúng thành một màu sáng.
boundaries = L == 0;
I(boundaries) = 255;