I would like to solve $$ f^{#}=\underset{g \in \mathbb{C}^{NxN}}{\operatorname{argmin}} |g|{\textrm{TV}}\ \ \ \textrm{such that}\ \ \ |\rho\circ(\mathcal{F}\Omega g-y)|_2 \leq \xi$$ where f would be our initial Image, y = \mathcal{F}_\Omega f + \xi is our partial Fourier Measurement and \rho denotes a weight vector (but if I implement it without that \rho I would already be happy).
I played around with cvx and got it working for smaller images(~64x64), but it didn’t work for bigger problems so I looked for other solvers, namely TFOCS.
Can anyone help me with the implementation, or point me in the right direction (or even towards another solver)?
I did indeed try MOSEK with cvx and it did work fine (as did SDPT3 and SeDuMi). But my memory limits me severely (up to 64x64 it’s fine) and I thought that comes from the fact that I’m using a naive fourier transformation and not the fft (as it does not work with cvx).
Do you have any suggestion on how I could solve this or in which directions I could search for an appropriate solver?
CVX is simply not designed for large-scale problems. It is designed to make it easy to build models; and interior-point methods in general don’t scale as well as first-order methods. (Of course, they hit higher accuracy levels, so there’s a tradeoff…)
First order method scales better for sure. If you for instance call MOSEK directly from C, then you will of course save some overhead. Whether that is a lot is hard to say.
Yes that’s what I understood from reading other comments from you, and therefore I started looking into other solvers to find something more appropriate for my problem (and I think you did a great job with cvx as it is really accessible for people without prior experience).
So TFOCS is still a interior-point method, would I face the same problem?
Do you by chance have an idea of how to solve my problem appropriately?