gil icon indicating copy to clipboard operation
gil copied to clipboard

Bicubic sampler in GIL

Open Scramjet911 opened this issue 3 years ago • 10 comments

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 :

  • [ ] (maybe?) Clean up sampler.hpp comments
  • [x] Add tests
  • [ ] Ensure all tests pass

Scramjet911 avatar Mar 13 '21 05:03 Scramjet911

Has anyone resolved this issue?

Sayan-Chaudhuri avatar Mar 29 '21 03:03 Sayan-Chaudhuri

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

mloskot avatar Mar 29 '21 08:03 mloskot

Has anyone resolved this issue?

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

Scramjet911 avatar Mar 29 '21 08:03 Scramjet911

Ok,I got it.

Sayan-Chaudhuri avatar Mar 29 '21 08:03 Sayan-Chaudhuri

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

mloskot avatar Mar 29 '21 08:03 mloskot

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

Scramjet911 avatar Apr 15 '21 14:04 Scramjet911

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

mloskot avatar Apr 15 '21 14:04 mloskot

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.

Scramjet911 avatar Apr 15 '21 14:04 Scramjet911

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.

mloskot avatar Apr 15 '21 15:04 mloskot

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.

Scramjet911 avatar Apr 15 '21 16:04 Scramjet911