资源简介
实现全变差去噪(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“ << endl;
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 << “ err.=“ << err << endl;
iter = iter + 1;
}
double PSNROut = PSNR(Image u);
double PSNRIn = PSNR(Image g);
cout << “PSNRIn = “ << PSNRIn << endl;
cout << “PSNROut = “ << PSNROut << endl;
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相位恢复
相关资源
- 经典去噪算法小波、Lee等等
- 基于深度学习的图像去噪算法研究.
- 基于稀疏表示的图像去噪算法
- 基于中值滤波和小波变换的图像去噪
- 基于BayesShrink软阈值的Bandelet域SAR图像
- 图像去噪英文原文+翻译
- 自适应中值滤波算法 图像去噪
- 小波分析小波去噪等VC实现
- 均值、中值滤波C代码
- 稀疏分解图像去噪
- 基于深度卷积神经网络图像去噪算法
- 中值滤波结合小波变换在光谱去噪中
- 基于TOF深度传感器植物点云获取和去
- NOIZEUS语音增强数据库
- wavelet theory an elementary approach with app
- 卷积自编码去噪-tensorflow实现
- 剪切波变换图像滤波
- 基于中值滤波与小波变换的图像去噪
- GPU自适应图像去噪完整程序
- 基于偏微分方程的图像处理pdf及代码
- 优秀的图像去噪算法合集
- 音频降噪录音去噪语音降噪
- Opencv去噪声程序
- 基于卷积神经网络的图像去噪基础篇
- 自己写的关于语音分帧、加窗、去噪
- SplitBregman去噪TV模型
- 偏微分图像去噪中的经典算法分裂B
- 论文研究-保持泊松噪声图像细节的快
- 小波分析在心电信号去噪中的应用
- 音频信号的谱分析及去噪
评论
共有 条评论