Git Product home page Git Product logo

particletracking.jl's Issues

Non-spherical LoG filtering

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.

Generalize blob detection to N dimensions

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

Trajectory length should be the total effective length

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

Cost evaluation in linking needs better implementation

Currently, evaluate_costs! imposes the limit distance for creation / annihilation by assuming the cost function to be quadratic in the distance.
This means that:

  • the current implementation of PCost is wrong
  • any other cost function must be implemented to return a cost that is quadratic in the distance

Assuming 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:

  • generate two dummy blobs a distance maxdist apart
  • evaluate their linking cost according to the provided cost function and store it as maxcost
  • use maxcost instead of (dt*maxdist)^2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.