Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DIPlib wishlist #28

Open
crisluengo opened this issue Feb 14, 2019 · 7 comments
Open

DIPlib wishlist #28

crisluengo opened this issue Feb 14, 2019 · 7 comments
Labels
component:DIPlib About the DIPlib library (C++ code) enhancement help wanted

Comments

@crisluengo
Copy link
Member

crisluengo commented Feb 14, 2019

Here I'll keep a list of functionality I'd like to add to DIPlib at some point:

  • Filtering:
    • A specialization of dip::PercentileFilter for 8-bit and 16-bit images could use the moving histogram technique.
    • Bilateral filters:
      • Implement Paris and Durand (2006): http://people.csail.mit.edu/sparis/bf/ (PDF)
      • Implement cross-bilateral filter
      • Implement bilateral filters correctly for tensor images (how to define distance? Simple answer: weigh all tensor elements equally. Is there a reason to do it differently?)
    • Tuan Pham's arch filter, and the various functions that use it.
    • 3D orientation filter bank (Frank Faas).
    • Higher order normalized convolution (we have 1st order derivatives).
    • Additional steerable diffusion filters (we have dip::PeronaMalikDiffusion, dip::GaussianAnisotropicDiffusion, dip::RobustAnisotropicDiffusion, dip::CoherenceEnhancingDiffusion).
  • Segmentation:
    • 2D snakes (we have M-file code in DIPimage).
    • Level-set segmentation.
    • Graph-cut segmentation.
  • Analysis:
    • Radon transform for lines, Hough transform for lines.
    • Scale-space analysis.
    • Estimating locally affine transformations in 2D, 3D and nD.
  • Other:
    • 3D rotation: Implement using 4 skews as described by Chen and Kaufman (Graphical Models 62:308-322, 2000) -- it currently uses 9 skews. This method uses either 4 "2D slice shears" (what dip::Skew does), or 4 "2D beam shears" (which is more efficient in our case because each step only requires interpolation in 1D, not in 2D as dip::Skew does). Note that it is also possible to rotate in 3D using dip::AffineTransform.
    • GPU support:
      • Infrastructure to move and keep image data on the GPU.
      • Implementing several functions as CUDA kernels.
    • MPI support.
    • PNG file reading & writing.
@crisluengo crisluengo changed the title Wishlist DIPlib wishlist Feb 14, 2019
@crisluengo crisluengo added enhancement component:DIPlib About the DIPlib library (C++ code) help wanted labels Feb 14, 2019
@ronligt
Copy link
Member

ronligt commented Mar 11, 2020

Some additional functionality we would like to see implemented:

  • GPU support: implementing several functions as CUDA kernels
  • MPI support
  • deconvolution
  • implementing in C++ the DIPimage functions (Matlab) created by Tuan Pham
  • fast marching
  • 3d-orientation filters
  • higher order normalize convolution
  • affine transformation in 2d, 3d and nd

We would also love to receive feedback on our contribution and implementation scheme. See: CONTRIBUTING.md and styleguide.

@berndrieger
Copy link
Contributor

some additional things we discussed:

  • Level sets
  • Snakes
  • Graph Cuts
  • Faster Bilateral filtering
  • Steerable diffusion filters

@crisluengo
Copy link
Member Author

Thanks! I've updated the list at the top of the page.

@fb39ca4
Copy link

fb39ca4 commented Mar 12, 2020

Can I suggest loading PNG images here?

@crisluengo
Copy link
Member Author

crisluengo commented Mar 12, 2020

@fb39ca4 Yes, you can suggest it. Thanks!
And if you can write the code it's even better! :)

@crisluengo
Copy link
Member Author

@fb39ca4 if you enable Bio-Formats then you can read PNGs and over 100 other file formats. It is relatively trivial, just download the relevant JAR file.

Let me know if we need to provide some documentation on how to accomplish this.

@crisluengo
Copy link
Member Author

PNG reading and writing implementation completed in 120c3c0 and available since version 3.4.2.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component:DIPlib About the DIPlib library (C++ code) enhancement help wanted
Projects
None yet
Development

No branches or pull requests

4 participants