Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Second order total variation [feature request] #59

Open
aizvorski opened this issue May 28, 2020 · 2 comments
Open

Second order total variation [feature request] #59

aizvorski opened this issue May 28, 2020 · 2 comments

Comments

@aizvorski
Copy link

aizvorski commented May 28, 2020

I'd like to use second-order total variation, as described in for example these couple of papers:
https://www.ipol.im/pub/art/2013/40/article.pdf
http://www.franklenzen.de/pdf/lenzen_et_al_ssvm2013.pdf

In other words, instead of trying to minimize sum of first derivative |x_i - x_i-1|, this would be minimizing second derivative |x_i - 2*x_i-1 + x_i-2| (in the simple 1d case)

This has really important applications to image inpainting and filtering; the second-order TV denoising tends to produce better results for natural gradients by not introducing steps into them as first-order TV does.

Is it possible to add this? Where to start? I like this library a lot but I'm not familiar enough with the implementation to know what needs to be modified to add this.

@albarji
Copy link
Owner

albarji commented Jun 11, 2020

Hi Alex! Thanks for your interest in proxTV. I must admit I have not been giving maintenance to this library for more than a year now. Since then I have moved on from Total Variation to other research topics. I did some research into second-order TV some years ago, but did not come down to write an implementation for proxTV.

I'm afraid I won't have time to add this feature, but if you want to try developing it yourself I would suggest to start by looking at the C implementations of the other methods, which you can find in the src folder. I must admit the code is not easy to follow, as efficiency is a priority over clarity.

If you are able to implement a C function for second order taut-string, the following steps should be adding a Python interface (here) and some tests to make sure the implementation works (here). If you prefer Matlab instead, the interface functions can be found in the matlab folder.

@Vldchlms
Copy link

Hi Alex,

I would recommend you the check a recent paper

Multivariate Trend Filtering for Lattice Data

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants