JuliaImages / JuliaImages/ImageFiltering.jl

TODOs

Open
#142 7 comments 6 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

help wanted
Dominant language
Julia
Stars
104
Forks
52
PR merge metrics
No merged PRs in 30d

Description

There seem to be a number of people who are interested in making improvements in this package. To facilitate their explorations, I thought I'd list some things I know need fixing:

  • Write more benchmarks (see #152#158)
  • Reorganize the documentation (see #153)
  • (PR in #154) Update usage of OffsetArrays: this package was developed before OffsetArrays was particularly efficient, and it contains ugly workarounds to strip off the OffsetArray wrapper before performing the operation. Get rid of these workarounds, and document/fix any resulting performance changes. (There might be performance improvements as well as a risk of regressions.) Be aware of https://github.com/JuliaArrays/OffsetArrays.jl/pull/90 which should arrive fairly soon.
  • Fix inefficiencies of TiledIteration. That package is potentially a huge performance booster, but https://stackoverflow.com/questions/47590839/unexpected-memory-allocation-when-using-array-views-julia/47607539#47607539 gets in the way. If the wrapper creation and usage can be inlined into a single caller, then the compiler will elide the wrapper creation. Also be aware of false sharing and the potential performance problems it can cause (good thread: https://discourse.julialang.org/t/parallel-reductions/30180)
  • Look into whether the boundary conditions can be implemented more generally as views, perhaps moving more functionality to PaddedViews.
  • Check whether the threading implementation should be updated for Julia 1.3's new threading model
  • Implement threading for non-separable FIR filtering. Currently it's implemented only for separable kernels, because that's what I use most.
  • GPUs...
  • Consider splitting the package into ArrayFiltering, keeping anything color-related in ImageFiltering (which would become a thin wrapper around ArrayFiltering). Lots of people who don't do image processing are turned off by the "Image" in the name; it's not rational, but it's been brought up again and again, so it's time to stop wishing others would change and just change ourselves.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Review the linked issues #153 and #154 first, then choose one scoped item from the TODO list, such as TiledIteration, PaddedViews, Julia 1.3 threading, or non-separable FIR filtering. Read the relevant package code and existing benchmarks or tests; the work is done when the selected improvement is implemented, documented where needed, and its performance or behavior is checked.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia
Domain
data, documentation, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.