mastrof / particletracking.jl Goto Github PK
View Code? Open in Web Editor NEWTrack moving particles with Julia, in two and three spatial dimensions
License: MIT License
Track moving particles with Julia, in two and three spatial dimensions
License: MIT License
The blob detection algorithm should support arbitrary dimensions, but due to the current implementation of the subpixel localization (offsets
) it is limited to 2D.
offsets
must be generalized to deal with arbitrary dimensions; should be relatively straightforward to generalize just by using CartesianIndices
for iteration
Currently. length(traj::Trajectory)
returns the number of blobs measured along the trajectory; instead it should return the total effective length, i.e. the time difference between the end and start points.
The current behavior could be reassigned to a different function e.g. length_raw
Current LoG filtering uses the same scale ฯ for all the dimensions.
detect_blobs
should accept a kwarg (e.g. spherical
, defaulting to true
) which allows to test all possible combinations of scales along each axis, this could provide better detection for elongated objects, and maybe even discrimination between objects of different shapes in the same dataset.
E.g.: detect_blobs(video, 2:3; spherical=false)
would test LoG filtering with scales [(2,2), (2,3), (3,2), (3,3)]
instead of only [(2,2), (3,3)]
.
Will need to check what is the proper normalization for the LoG kernel then.
ParticleTracking.jl/src/flow_linking.jl
Line 37 in 0a5fbaa
times
is limited to end-1
because for each t
, the algorithm is then looking at t+1
onwards for the linking; but in practice this removes the last blob from the stored trajectory. Instead everything seems to work if times = eachindex(blobs)
.
Bug somewhere?
Currently, evaluate_costs!
imposes the limit distance for creation / annihilation by assuming the cost function to be quadratic in the distance.
This means that:
PCost
is wrongAssuming that the cost is always quadratic in the distance is convenient, but moves the burden on the definition of the cost functions. For instance, with this approach the correct return from PCost
should be (dx^p + g0*dm0^p + d2*dm2^p)^(2/p)
, where the 2/p exponent makes calculations much slower than they could be.
At the same time though, the cost function should not deal with maxdist
and creation / annihilation itself, these must be managed internally (as done now) to ensure proper behavior of the linking algorithm.
Could this be solved by adding another indirection layer? E.g. instead of hardcoding (dt*maxdist)^2
as the maximum cost, it may be possible to evaluate the maximum cost as follows:
maxdist
apartcost
function and store it as maxcost
maxcost
instead of (dt*maxdist)^2
What we now define as Blob
is only used internally and never touched by the user, which instead only interacts with the BlobRefined
since subpixel localization is applied automatically. Changing the names would make more sense.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.