Làm cách nào để áp dụng lưu vực cho hình ảnh phân đoạn bằng matlab?


7

nhập mô tả hình ảnh ở đây

Làm cách nào để phân đoạn hình ảnh này bằng cách sử dụng lưu vực để chỉ lấy những người trong ảnh?

Tôi đã làm như sau cho đến nay:

  1. Tính một độ dốc

nhập mô tả hình ảnh ở đây

  1. Tính toán biến đổi lưu vực sông

nhập mô tả hình ảnh ở đây

Mã của tôi:

  clear;
I=imread('inpaint.jpg');
I=rgb2gray(I);

hy = fspecial('sobel');
hx = hy';
Iy = imfilter(double(I), hy, 'replicate');
Ix = imfilter(double(I), hx, 'replicate');
gradmag = sqrt(Ix.^2 + Iy.^2);


figure, imshow(gradmag,[]), title('Gradient magnitude (gradmag)')
L = watershed(gradmag);
% Lrgb = label2rgb(L);
 figure, imshow(L), title('Watershed transform of gradient magnitude (Lrgb)')

Tôi đã thành công trong việc áp dụng đầu nguồn

nhập mô tả hình ảnh ở đây

Muốn biết tôi có thể phác thảo các đối tượng của mình trong ảnh gốc để nó xuất hiện được phân đoạn không?


Hơi tiếp tuyến, nhưng bạn có đang sử dụng giấy phép xử lý hình ảnh của MATLAB từ trường đại học hoặc công ty không? Tôi đã xem xét nó và nó có vẻ khá đắt: - /
Spacey

Vâng, trường đại học của tôi có giấy phép ...
vini

1
@Mohammad Octave có gần như tất cả các chức năng trong hộp công cụ Xử lý hình ảnh của MATLAB và trong nhiều trường hợp, mã này tương thích.

@reve_etrange Ah cảm ơn bạn vì điều đó !! Tôi sẽ phải xem xét nó - ông chủ cũ của tôi luôn nói những điều tồi tệ về quãng tám như nó không thể tổ chức các ma trận lớn, GUI không đẹp như matlab, v.v., vì vậy tôi chưa bao giờ thực sự nhìn vào nó ...
Spacey

@Mohammad Ngoài ra, hộp công cụ xử lý ảnh của Scilab đang phát triển và thịnh vượng. Không chắc chắn nếu nó chưa cung cấp những gì bạn đang tìm kiếm.
Phonon

Câu trả lời:


8

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;

Tất cả các hình ảnh của tôi đều có cùng điều kiện như được mô tả bởi hình ảnh này..Không được coi là một phương tiện phân chia tồi tệ và vâng tôi muốn hiển thị chúng như các đối tượng khác nhau
vini

Ngưỡng có thể tạo ra kết quả kỳ lạ trong hình ảnh với biểu đồ lẻ và ngưỡng cho trước thường chỉ hữu ích cho một hình ảnh, nhưng không có gì là "xấu" về chúng. Phương pháp của Otsu nên có trong bất kỳ hộp công cụ mã hóa thị giác máy tính nào - đừng áp dụng nó một cách mù quáng.

Có nó hiện tại tuy nhiên kết quả không khả quan khi tôi áp dụng nó
vini

Kiểm tra kết quả phân khúc của tôi là nó đủ tốt? =)
vini

@vini: Bất kỳ phân đoạn hình ảnh nào cũng yêu cầu một số ngưỡng ở một số điểm, vì bạn sẽ cần đưa ra quyết định liệu một đối tượng là một phần của tiền cảnh hay hậu cảnh.
Jonas

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.