Eu tenho um grande conjunto de pontos (ordem de 10k pontos) formados por trilhas de partículas (movimento no plano xy no tempo filmado por uma câmera, de modo que quadros 3d - 256x256px e ca 3k no meu exemplo) e ruído. Essas partículas viajam aproximadamente em linhas retas aproximadamente (mas apenas aproximadamente) na mesma direção e, portanto, para a análise de suas trajetórias, estou tentando ajustar as linhas através dos pontos. Tentei usar o RANSAC sequencial, mas não consigo encontrar um critério para identificar falsos positivos de maneira confiável, bem como o T e J-Linkage, que eram muito lentos e também não eram confiáveis o suficiente.
Aqui está uma imagem de uma parte do conjunto de dados com ajustes bons e ruins que obtive com o Ransac sequencial: estou usando os centróides dos blobs de partículas aqui, os tamanhos dos blob variam entre 1 e 20 pixels.
Descobri que as subamostras, que usam, por exemplo, apenas a cada 10 quadros, também funcionavam muito bem; portanto, o tamanho dos dados a serem processados pode ser reduzido dessa maneira.
Eu li um post de blog sobre tudo o que as redes neurais podem realizar e gostaria de perguntar se esse seria um aplicativo viável para um antes de começar a ler (eu sou de um fundo que não é de matemática, então eu teria que fazer bastante um pouco de leitura)?
Ou você poderia sugerir um método diferente?
Obrigado!
Adendo: Aqui está o código para uma função Matlab para gerar uma nuvem de pontos de amostra contendo 30 linhas ruidosas paralelas, que ainda não consigo distinguir:
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