Tôi có một tập hợp lớn các điểm (thứ tự 10k điểm) được hình thành bởi các rãnh hạt (chuyển động trong mặt phẳng xy trong thời gian được quay bằng máy ảnh, do đó, khung hình 3d - 256x256px và ca 3k trong tập mẫu của tôi) và nhiễu. Các hạt này di chuyển trên các đường thẳng xấp xỉ (nhưng chỉ gần như) theo cùng một hướng, và vì vậy để phân tích quỹ đạo của chúng, tôi đang cố gắng điều chỉnh các đường thẳng qua các điểm. Tôi đã cố gắng sử dụng RANSAC tuần tự, nhưng không thể tìm thấy một tiêu chí để xác định một cách đáng tin cậy các mặt tích cực sai, cũng như T- và J-Linkage, quá chậm và cũng không đủ tin cậy.
Dưới đây là hình ảnh của một phần của bộ dữ liệu phù hợp tốt và xấu với Ransac tuần tự: Tôi đang sử dụng tâm của các đốm hạt ở đây, kích thước blob thay đổi trong khoảng từ 1 đến khoảng 20 pixel.
Tôi thấy rằng các mẫu con sử dụng ví dụ chỉ mỗi khung hình thứ 10 cũng hoạt động khá tốt, vì vậy kích thước dữ liệu cần xử lý có thể được giảm theo cách này.
Tôi đã đọc một bài đăng trên blog về tất cả những điều mà mạng lưới thần kinh có thể thực hiện được và muốn hỏi bạn liệu đây có phải là một ứng dụng khả thi cho một trước khi tôi bắt đầu đọc không (tôi đến từ một nền tảng không phải là toán học, vì vậy tôi sẽ phải làm khá một chút đọc)?
Hoặc bạn có thể đề xuất một phương pháp khác?
Cảm ơn!
Phụ lục: Đây là mã cho hàm Matlab để tạo ra đám mây điểm mẫu chứa 30 dòng nhiễu song song mà tôi chưa thể phân biệt được:
function coords = generateSampleData()
coords = [];
for i = 1:30
randOffset = i*2;
coords = vertcat(coords, makeLine([100+randOffset 100 100], [200+randOffset 200 200], 150, 0.2));
end
figure
scatter3(coords(:,1),coords(:,2),coords(:,3),'.')
function linepts = makeLine(startpt, endpt, numpts, noiseOffset)
dirvec = endpt - startpt;
linepts = bsxfun( @plus, startpt, rand(numpts,1)*dirvec); % random points on line
linepts = linepts + noiseOffset*randn(numpts,3); % add random offsets to points
end
end