Skip to content
New issue

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

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

Already on GitHub? # 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.

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

No branches or pull requests

5 participants