JuliaImages / ImageFiltering.jl

Julia implementations of multidimensional array convolution and nonlinear stencil operations
Other
99 stars 49 forks source link

TODOs #142

Open timholy opened 4 years ago

timholy commented 4 years ago

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:

Tokazama commented 4 years ago

~The last one seems really difficult and could lead to a lot of fruitless effort. For it to be successful I think we'd need active participation from the wider non JuliaImages community.~ Nevermind, I didn't think about who I was talking to. JuliaArrays sounds like the perfect place for this.

timholy commented 4 years ago

It's probably not that hard. Aside from function renaming (imfilter->??), it's probably just a question of splitting anything that is T<:Colorant out from everything else. ImageFiltering might become less than 50 lines of code, while @reexporting ArrayFiltering. I also have authority to transfer to JuliaArrays, assuming that's a more natural place for it.

GunnarFarneback commented 4 years ago

There might be low-hanging fruit in using LoopVectorization.jl to speed up image filtering. Or it might hang high, but I know there's fruit out there.

timholy commented 4 years ago

Yes, I have my eye on LoopVectorization, it's an awesome package. Pretty brittle at the moment, but I expect that to change (and perhaps whoever digs into this can help it mature).

goretkin commented 3 years ago
* Look into whether the boundary conditions can be implemented more generally as views, perhaps moving more functionality to [PaddedViews](https://github.com/JuliaArrays/PaddedViews.jl).

A quick clarification, is the idea to replace BorderArray?

https://github.com/JuliaImages/ImageFiltering.jl/blob/11726578463e0f0190eab7aabe96d6a6d8c7d948/src/borderarray.jl#L57-L69

johnnychen94 commented 3 years ago

Yes, the idea is to break ImageFiltering into multiple generic standalone small packages(for bordering, scheduling, mapwindow, filter, etc), and evolve it to a glue package.

People are sometimes confused about the image prefix because it works out pretty well for common arrays, see also https://github.com/JuliaImages/ImageFiltering.jl/issues/42 for some discussion about this.

timholy commented 3 years ago

Though I would point out that to split into multiple packages we don't necessarily need to split it into multiple repositories. I am using a single repository for SnoopCompileCore & SnoopCompile (two packages that can be separately installed but really designed to work together), and after a few hiccups that's working reasonably well.