Skip to content

Support for RGB colors #67

Open
Open
@timholy

Description

@timholy

Aside from #66, I think one of the last obstacles to using this in ImageFiltering is the handling of color array elements, for example RGB(0.8f0, 0.3f0, 0.5f0) (which is just a struct of 3 Float32s). Through TiledIteration it's possible to convert the data into a suitable format, for example RGB{N0f8} can be converted to RGB{Float32} because TileBuffer takes an element type as an argument. (I note that's really old syntax, with modern Julia I should change it to TileBuffer{T}(undef, tileaxs).) Consequently it will be converted before it is used; because convolution/correlation uses each element multiple times, this conversion is well worth doing if it gets us better performance and allows us to use this package. (Another benefit of copying is that we can guarantee stridedness.)

So the question is, what kind of format should I convert it to? Should we define explict support for RGB, or would it be better to convert to an SVector{3} or similar? I kind of favor the latter since it would presumably be more generic.

I suspect this will alter the loop unrolling/SIMD packing, once I understand what representation you'd like here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions