boostorg / gil

Boost.GIL - Generic Image Library | Requires C++14 since Boost 1.80
https://boostorg.github.io/gil
Boost Software License 1.0
178 stars 163 forks source link

Bicubic sampler in GIL #576

Open Scramjet911 opened 3 years ago

Scramjet911 commented 3 years ago

Is your feature request related to a problem? Please describe.

In the current image resizing algorithms in GIL, there is nearest neighbour and bilinear sampler. But bicubic sampler is not available. Bicubic interpolation is also a very popular algorithm which might be needed useful for resizing.

Describe the solution you'd like

Implementing a bicubic sampler in sampler.hpp

C++ Example

So the way I have currently implemented it is using this as a reference, here

But there are issues with my implementation, I cannot figure out why image artifacts are being generated in the output image.

Can someone help me with what I am missing?

Describe alternatives you've considered

Another method for bicubic interpolation is using convolution like this

Additional context

Bicubic interpolation is a very popular technique for image interpolation because it is smoother than bilinear interpolation and nearest neighbour interpolation, though it requires higher computational power.

PR #588

Future milestones :

Sayan-Chaudhuri commented 3 years ago

Has anyone resolved this issue?

mloskot commented 3 years ago

@Sayan-Chaudhuri If you don't see any related PR or commits or code then the answer is No.

Scramjet911 commented 3 years ago

Has anyone resolved this issue?

I was working on the testcases, haven't updated it here. will put in a pr soon

Sayan-Chaudhuri commented 3 years ago

Ok,I got it.

mloskot commented 3 years ago

@Scramjet911 Please, add the PR #NNNN reference to the description of this issue, so it is clear what to follow.

Scramjet911 commented 3 years ago

@Scramjet911 Please, add the PR #NNNN reference to the description of this issue, so it is clear what to follow.

I have added a PR for this issue. Can someone look into it?

mloskot commented 3 years ago

You've marked it as WIP, means you are still working on it aka not ready for review.

Scramjet911 commented 3 years ago

You've marked it as WIP, means you are still working on it aka not ready for review.

Oh sorry, I thought WIP meant that it hasn't been reviewed yet, changed it.

mloskot commented 3 years ago

See https://github.com/boostorg/gil/blob/develop/CONTRIBUTING.md#pull-requests The WIP is an equivalent of marking a PR as Draft:

The issue with Draft is that

Any user with write access to the repository can convert a pull request to a draft pull request.

Similarly, marking with status/work-in-progress label requires such higher permissions.

So, ad-hoc contributors can just stick WIP: in the PR title.

Scramjet911 commented 3 years ago

See https://github.com/boostorg/gil/blob/develop/CONTRIBUTING.md#pull-requests The WIP is an equivalent of marking a PR as Draft:

* https://github.blog/2019-02-14-introducing-draft-pull-requests/

* https://github.blog/changelog/2020-04-08-convert-pull-request-to-draft/

The issue with Draft is that

Any user with write access to the repository can convert a pull request to a draft pull request.

Similarly, marking with status/work-in-progress label requires such higher permissions.

So, ad-hoc contributors can just stick WIP: in the PR title.

Oh, I see. I added 'WIP:' because I wanted input on how I implemented it and if I should change the way I implemented it.