Skip to content

API Overhaul #87

@ljubobratovicrelja

Description

@ljubobratovicrelja

We have talked before how this project bears a lot of design mistakes in the API. Now that we've joined it with libmir, I'd strongly suggest we join forces and redesign the API, before going into development of new features.

Some of examples we have talked about before:

  • remove dcv.core.image Remove dcv.core.image.Image #64
  • solid design of high level algorithm API (optical flow, rht, stereo matching etc.)
  • talk about separating low level API from high level. This also mixes with the story of nothrow @nogc library without druntime - I believe we have agreed that ideally low level API should not use druntime?
  • @9il's hint on global function design error : DCV API has similar issues: a function should not change params or it should be a procedure and return void. I assume you we're referring to the idea of pre-allocated buffers as input? If you are, I totally agree and think this is bad and hybrid design that has to be changed.
  • latest talk on separated filters Filters should be separated #85, and on filters of fixed size Filters with fixed size #86. Currently there's no filtering specialization in API - e.g. there's no function for sobel edges, which would be good for performance reason, instead we rely on general purpose convolution function which is slower.
  • what else...?

@9il if you're interested, I'd be willing to do the heavy lifting on this task, but I'd really like you to follow through each change, and not let me repeat some of those mistakes. What do you think? Of course, anyone else willing to join revision board is more than welcome!

And of course, everyone interested in project is welcome to share his/her opinion on the matter.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions