1 Mesh Smoothing
We consider the problem of smoothing a mesh with vertices ${\prosedeflabel{MeshSmoothing}{{V}}}$ and edges $S$. We can express the smoothed vertex positions ${\prosedeflabel{MeshSmoothing}{{U}}}$ as a least squares problem with a data term and a smoothness term:
where $\DeclareMathOperator*{\argmax}{arg\,max} \DeclareMathOperator*{\argmin}{arg\,min} \begin{align*} \idlabel{ {"onclick":"event.stopPropagation(); onClickSymbol(this, 'E_\\\\text{data}', 'MeshSmoothing', 'def', false, 'E_\\\\text{smoothness}')", "id":"MeshSmoothing-E_\\\\text{data}", "sym":"E_\\\\text{data}", "func":"MeshSmoothing", "localFunc":"E_\\\\text{smoothness}", "type":"def", "case":"equation"} }{ {E_\text{data}} }\left( \idlabel{ {"onclick":"event.stopPropagation(); onClickSymbol(this, 'U', 'MeshSmoothing', 'use', true, 'E_\\\\text{data}')", "id":"MeshSmoothing-U", "sym":"U", "func":"MeshSmoothing", "localFunc":"E_\\\\text{data}", "type":"use", "case":"equation"} }{ {\mathit{U}} } \right) & = \left\|\idlabel{ {"onclick":"event.stopPropagation(); onClickSymbol(this, 'U', 'MeshSmoothing', 'use', true, 'E_\\\\text{data}')", "id":"MeshSmoothing-U", "sym":"U", "func":"MeshSmoothing", "localFunc":"E_\\\\text{data}", "type":"use", "case":"equation"} }{ {\mathit{U}} } - \idlabel{ {"onclick":"event.stopPropagation(); onClickSymbol(this, 'V', 'MeshSmoothing', 'use', false, 'E_\\\\text{data}')", "id":"MeshSmoothing-V", "sym":"V", "func":"MeshSmoothing", "localFunc":"E_\\\\text{data}", "type":"use", "case":"equation"} }{ {\mathit{V}} }\right\|^{2}\\\eqlabel{ {"onclick":"event.stopPropagation(); onClickEq(this, 'MeshSmoothing', ['U', 'V', 'E_\\\\text{data}'], true, 'E_\\\\text{data}', ['U'], 'YEVfXHRleHR7ZGF0YX1gKFUpID0g4oCWIFUgLSBWIOKAlsKyIHdoZXJlIFUg4oiIIOKEnV4obsOXMyk=');"} }{} \end{align*} $ measures the change in vertex values, $\DeclareMathOperator*{\argmax}{arg\,max} \DeclareMathOperator*{\argmin}{arg\,min} \begin{align*} \idlabel{ {"onclick":"event.stopPropagation(); onClickSymbol(this, 'E_\\\\text{smoothness}', 'MeshSmoothing', 'def', false, 'E_\\\\text{data}')", "id":"MeshSmoothing-E_\\\\text{smoothness}", "sym":"E_\\\\text{smoothness}", "func":"MeshSmoothing", "localFunc":"E_\\\\text{data}", "type":"def", "case":"equation"} }{ {E_\text{smoothness}} }\left( \idlabel{ {"onclick":"event.stopPropagation(); onClickSymbol(this, 'U', 'MeshSmoothing', 'use', true, 'E_\\\\text{smoothness}')", "id":"MeshSmoothing-U", "sym":"U", "func":"MeshSmoothing", "localFunc":"E_\\\\text{smoothness}", "type":"use", "case":"equation"} }{ {\mathit{U}} } \right) & = trace\left( {\idlabel{ {"onclick":"event.stopPropagation(); onClickSymbol(this, 'U', 'MeshSmoothing', 'use', true, 'E_\\\\text{smoothness}')", "id":"MeshSmoothing-U", "sym":"U", "func":"MeshSmoothing", "localFunc":"E_\\\\text{smoothness}", "type":"use", "case":"equation"} }{ {\mathit{U}} }}^T\idlabel{ {"onclick":"event.stopPropagation(); onClickSymbol(this, 'L', 'MeshSmoothing', 'use', false, 'E_\\\\text{smoothness}')", "id":"MeshSmoothing-L", "sym":"L", "func":"MeshSmoothing", "localFunc":"E_\\\\text{smoothness}", "type":"use", "case":"equation"} }{ {\mathit{L}} }\idlabel{ {"onclick":"event.stopPropagation(); onClickSymbol(this, 'U', 'MeshSmoothing', 'use', true, 'E_\\\\text{smoothness}')", "id":"MeshSmoothing-U", "sym":"U", "func":"MeshSmoothing", "localFunc":"E_\\\\text{smoothness}", "type":"use", "case":"equation"} }{ {\mathit{U}} } \right)\\\eqlabel{ {"onclick":"event.stopPropagation(); onClickEq(this, 'MeshSmoothing', ['L', 'U', 'E_\\\\text{smoothness}'], true, 'E_\\\\text{smoothness}', ['U'], 'YEVfXHRleHR7c21vb3RobmVzc31gKFUpID0gdHJhY2UoIFXhtYAgTCBVICkgd2hlcmUgVSDiiIgg4oSdXihuw5czKQ==');"} }{} \end{align*} $ measures the Laplacian smoothness, and the scalar ${\prosedeflabel{MeshSmoothing}{{λ}}}$ balances the two terms. Here, ${\prosedeflabel{MeshSmoothing}{{L}}}$ is the cotangent Laplacian matrix, which is different from the $\proselabel{ImageTools}{L}$ in Section 2.