資源簡介
實現全變差去噪(split bregman)使用opencv實現

代碼片段和文件信息
#include?“subfunction.h“
#define?SIGAMA?15
/**************initialization***************/
Mat???Image?=?imread(“E:/pic/lena.png“?0);
Size??sizeg?=?Image.size();
int???iter?=?1;
int???col?=?Image.cols;
int???row?=?Image.rows;
double?err?=?1.0f;
double?tol?=?0.001f;
float?mu?=?0.05f;
float?lambda?=?2?*?mu;
float?gamma?=?lambda?/?mu;
Mat???dx?=?Mat::zeros(sizeg?CV_32FC1);
Mat???dy?=?Mat::zeros(sizeg?CV_32FC1);
Mat???bx?=?Mat::zeros(sizeg?CV_32FC1);
Mat???by?=?Mat::zeros(sizeg?CV_32FC1);
Mat???I?=?Mat::ones(sizeg?CV_32FC1);
Mat???D1?=?(Mat_(1?2)?<1?-1);
Mat???D2?=?(Mat_(2?1)?<1?-1);
Mat???X?=?Mat::zeros(sizeg?CV_32FC1);
Mat???Y?=?Mat::zeros(sizeg?CV_32FC1);
Mat???Dux?=?Mat::zeros(sizeg?CV_32FC1);
Mat???Duy?=?Mat::zeros(sizeg?CV_32FC1);
Mat ??noise?=?Mat::zeros(Image.size()?CV_32FC1);
Mat???g?temp1?temp2?temp3?temp4?u?Dx?Dy?conjDx?conjDy?up?Fg?FabsDx?FabsDy?Fu?c?dtemp[2];
/********************************************/
int?main(){
system(“color?4F“);
if?(Image.empty())?{
cout?<“Couldn‘t?read?E://lena.jpg“?< return?-1;
}
Image.convertTo(Image?CV_32FC1);
randn(noise?0?SIGAMA);
g?=?noise?+?Image;
Dx?=?psf2otf(D1?sizeg);
Dy?=?psf2otf(D2?sizeg);
conjDx?=?conj(Dx);
conjDy?=?conj(Dy);
Fg?=?fft2(g);
split(Dx?temp);
magnitude(temp[0]?temp[1]?FabsDx);
split(Dy?temp);
magnitude(temp[0]?temp[1]?FabsDy);
pow(FabsDx?2?FabsDx);//取模值的平方
pow(FabsDy?2?FabsDy);//取模值的平方
u?=?g;
while?(err?>?tol){
u.copyTo(up);
/**********updata?U************/
X?=?dx?-?bx;
Y?=?dy?-?by;
temp1?=?fft2(X);
temp2?=?fft2(Y);
temp1?=?complexMul(conjDx?temp1);
temp2?=?complexMul(conjDy?temp2);
temp3?=?gamma*(temp1?+?temp2)?+?Fg;
temp4?=?gamma*(FabsDx?+?FabsDy)?+?I;
split(temp3?temp);
temp[0]?=?temp[0]?/?temp4;
temp[1]?=?temp[1]?/?temp4;
merge(temp?2?Fu);
dft(Fu?Fu?DFT_INVERSE?+?DFT_SCALE);
split(Fu?temp);
u?=?temp[0];
/********updata?dxdy*********/
Dux?=?diffX(u);
Duy?=?diffY(u);
temp1?=?Dux?+?bx;
temp2?=?Duy?+?by;
dx?=?softThreshold(temp1?lambda);
dy?=?softThreshold(temp2?lambda);
/********updata?bxby*********/
bx?=?bx?+?Dux?-?dx;
by?=?by?+?Duy?-?dy;
/********updata?error*********/
err?=?norm(u?-?up)?/?norm(u);
cout?<“iter.?=?“?< iter?=?iter?+?1;
}
double?PSNROut?=?PSNR(Image?u);
double?PSNRIn?=?PSNR(Image?g);
cout?<“PSNRIn?=?“?< cout?<“PSNROut?=?“?<
displayImage(Image?“Original?Image“);
displayImage(g?“Noise?Image“);
displayImage(u?“Denoise?Image“);
waitKey(0);
system(“pause“);
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-05-18?09:45??SB_ATV\
?????目錄???????????0??2016-05-17?17:42??SB_ATV\Debug\
?????文件??????134656??2016-05-17?22:41??SB_ATV\Debug\SB_ATV.exe
?????文件?????1073208??2016-05-17?22:41??SB_ATV\Debug\SB_ATV.ilk
?????文件?????1739776??2016-05-17?22:41??SB_ATV\Debug\SB_ATV.pdb
?????目錄???????????0??2016-05-17?22:41??SB_ATV\SB_ATV\
?????目錄???????????0??2016-05-17?22:41??SB_ATV\SB_ATV\Debug\
?????文件????????2401??2016-05-17?22:41??SB_ATV\SB_ATV\Debug\SB_ATV.log
?????目錄???????????0??2016-05-17?22:41??SB_ATV\SB_ATV\Debug\SB_ATV.tlog\
?????文件???????26368??2016-05-17?22:41??SB_ATV\SB_ATV\Debug\SB_ATV.tlog\CL.read.1.tlog
?????文件????????1210??2016-05-17?22:41??SB_ATV\SB_ATV\Debug\SB_ATV.tlog\CL.write.1.tlog
?????文件?????????160??2016-05-17?22:41??SB_ATV\SB_ATV\Debug\SB_ATV.tlog\SB_ATV.lastbuildstate
?????文件????????1242??2016-05-17?22:41??SB_ATV\SB_ATV\Debug\SB_ATV.tlog\cl.command.1.tlog
?????文件????????2202??2016-05-17?22:41??SB_ATV\SB_ATV\Debug\SB_ATV.tlog\li
?????文件????????5328??2016-05-17?22:41??SB_ATV\SB_ATV\Debug\SB_ATV.tlog\li
?????文件?????????486??2016-05-17?22:41??SB_ATV\SB_ATV\Debug\SB_ATV.tlog\li
?????文件??????328187??2016-05-17?22:41??SB_ATV\SB_ATV\Debug\main.obj
?????文件??????296842??2016-05-17?17:42??SB_ATV\SB_ATV\Debug\subfunction.obj
?????文件??????658432??2016-05-17?22:41??SB_ATV\SB_ATV\Debug\vc120.idb
?????文件??????946176??2016-05-17?22:41??SB_ATV\SB_ATV\Debug\vc120.pdb
?????文件????????4378??2016-05-16?17:05??SB_ATV\SB_ATV\SB_ATV.vcxproj
?????文件????????1164??2016-05-16?17:05??SB_ATV\SB_ATV\SB_ATV.vcxproj.filters
?????文件????????2762??2016-05-17?22:41??SB_ATV\SB_ATV\main.cpp
?????文件????????5316??2016-05-16?17:05??SB_ATV\SB_ATV\subfunction.cpp
?????文件?????????496??2016-05-17?17:42??SB_ATV\SB_ATV\subfunction.h
?????文件????14876672??2016-05-18?09:45??SB_ATV\SB_ATV.sdf
?????文件?????????964??2016-05-16?17:02??SB_ATV\SB_ATV.sln
?????文件???????22016??2016-05-18?09:45??SB_ATV\SB_ATV.v12.suo
- 上一篇:通用倉庫管理軟件(單機版).rar
- 下一篇:壓縮相位恢復ADMM-L1相位恢復
評論
共有 條評論