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

TODOs #142

Open
1 of 9 tasks
timholy opened this issue Jan 13, 2020 · 7 comments
Open
1 of 9 tasks

TODOs #142

timholy opened this issue Jan 13, 2020 · 7 comments

Comments

@timholy
Copy link
Member

timholy commented Jan 13, 2020

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
Copy link

Tokazama commented Jan 13, 2020

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
Copy link
Member Author

timholy commented Jan 13, 2020

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
Copy link

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
Copy link
Member Author

timholy commented Jan 13, 2020

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
Copy link
Contributor

* 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?

struct BorderArray{T,N,A,B} <: AbstractArray{T,N}
inner::A
border::B
function BorderArray(inner::AbstractArray{T,N}, border::AbstractBorder) where {T,N}
if !compatible_dimensions(inner, border)
throw(error_bad_padding_size(inner, border))
end
border = convert_border_eltype(inner, border)
A = typeof(inner)
B = typeof(border)
new{T,N,A,B}(inner, border)
end
end

@johnnychen94
Copy link
Member

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 #42 for some discussion about this.

@timholy
Copy link
Member Author

timholy commented Sep 10, 2020

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants