你的位置:
首页
>
IT圈
>
典的TV变分法图像去噪的C++实现
2024年4月9日发(作者:濮葳)
典的变分法图像去噪的C++实现
由于这学期的图像处理课程的大作业需要写一个图像处理程序,不能使用古典的线性
滤波,或者基于频域(小波)或者基于统计之类的方法。只能用老师讲过的一些方法,诸
如变分,PDE,微分几何等。。感觉上简单的变分法稍微要好实现一些,就打算基于最早的
TV图像去噪模型,做一个VC的实现。但是找遍了网上也没有TV去噪的C++源码,与之
只好自己动手写了。
关于变分法和泛函分析的一些基础原理今天就先不多说了,TV图像去噪经典论文:
《Nonlinear Total Variation based noise removal algorithms》Google上可以搜得到。
关于Matlab的程序实现,有一个经典的主页:
/~gilboa/PDE-filt/tv_
下面是一个Matlab代码实现:复制到记事本用matlab打开就可以运行,要注意图
像的名称和路径要对应。如果只是想学学算法思路或者看看处理效果的话,只需要Matlab
的代码就行了。
function J=tv(I,iter,dt,ep,lam,I0,C)
%% Private function: tv (by Guy Gilboa).
%% Total Variation denoising.
%% Example: J=tv(I,iter,dt,ep,lam,I0)
%% Input: I - image (double array gray level 1-256),
%% iter - num of iterations,
%% dt - time step [0.2],
%% ep - epsilon (of gradient regularization) [1],
%% lam - fidelity term lambda [0],
%% I0 - input (noisy) image [I0=I]
%% (default values are in [])
%% Output: evolved image
clc
clear
I=imread(''); % load image
I = double(I);
2024年4月9日发(作者:濮葳)
典的变分法图像去噪的C++实现
由于这学期的图像处理课程的大作业需要写一个图像处理程序,不能使用古典的线性
滤波,或者基于频域(小波)或者基于统计之类的方法。只能用老师讲过的一些方法,诸
如变分,PDE,微分几何等。。感觉上简单的变分法稍微要好实现一些,就打算基于最早的
TV图像去噪模型,做一个VC的实现。但是找遍了网上也没有TV去噪的C++源码,与之
只好自己动手写了。
关于变分法和泛函分析的一些基础原理今天就先不多说了,TV图像去噪经典论文:
《Nonlinear Total Variation based noise removal algorithms》Google上可以搜得到。
关于Matlab的程序实现,有一个经典的主页:
/~gilboa/PDE-filt/tv_
下面是一个Matlab代码实现:复制到记事本用matlab打开就可以运行,要注意图
像的名称和路径要对应。如果只是想学学算法思路或者看看处理效果的话,只需要Matlab
的代码就行了。
function J=tv(I,iter,dt,ep,lam,I0,C)
%% Private function: tv (by Guy Gilboa).
%% Total Variation denoising.
%% Example: J=tv(I,iter,dt,ep,lam,I0)
%% Input: I - image (double array gray level 1-256),
%% iter - num of iterations,
%% dt - time step [0.2],
%% ep - epsilon (of gradient regularization) [1],
%% lam - fidelity term lambda [0],
%% I0 - input (noisy) image [I0=I]
%% (default values are in [])
%% Output: evolved image
clc
clear
I=imread(''); % load image
I = double(I);