高斯模糊处理(图像复原)源代码
来源:互联网 发布:网易广州 知乎 编辑:程序博客网 时间:2024/05/19 02:23
#define EXTRA_NAME "@gausssmooth."
#include "loadbmp.h"
#define In(x,y) lpInput[(x)+(y)*nWidth]
#define Out(x,y) lpOutput[(x)+(y)*nWidth]
#define Mediate(x,y) lpMediate[(x)+(y)*nWidth]
#define Point(x,y) lpPoints[(x)+(y)*nWidth]
#define sigma 1
void Gauss()
{
int x,y,xx,xk,yk;
BYTE *lpInput=new BYTE[nWidth*nHeight];
BYTE *lpOutput=new BYTE[nWidth*nHeight];
GetPoints(lpInput);
int radius,window;
double dev_inv=0.5/(sigma*sigma);
radius = (int)ceil(3*sigma);
window = radius*2+1;
memcpy(lpOutput,lpInput,nWidth*nHeight);
double* lpMediate=new double[nWidth*nHeight];
double* mask=new double[window];
double sum=0;
double temp;
double weight;
for(x=0;x<radius;x++)
{
xx=(x-radius)*(x-radius);
mask[x]=exp(-xx*dev_inv);
mask[window-1-x]=mask[x];
sum+=2*mask[x];
}
mask[radius]=1;
sum+=1;
for(x=0;x<window;x++)
{
mask[x]/=sum;
}
for(y=0;y<nHeight;y++)
{
for(x=radius;x<nWidth-radius;x++)
{
temp=0;
for(xk=-radius;xk<radius+1;xk++)
temp+=In(x+xk,y)*mask[xk+radius];
Mediate(x,y)=temp;
}
for(x=0;x<radius;x++)
{
temp=0;
weight=0;
for(xk=-x;xk<radius+1;xk++)
{
temp+=In(x+xk,y)*mask[xk+radius];
weight+=mask[xk+radius];
}
Mediate(x,y)=temp/weight;
}
for(x=nWidth-radius;x<nWidth;x++)
{
temp=0;
weight=0;
for(xk=-radius;xk<nWidth-x;xk++)
{
temp+=In(x+xk,y)*mask[xk+radius];
weight+=mask[xk+radius];
}
Mediate(x,y)=temp/weight;
}
}
double* Column = new double[nHeight];
for(x=0;x<nWidth;x++)
{
for(y=radius;y<nHeight-radius;y++)
{
temp=0;
for(yk=-radius;yk<radius+1;yk++)
temp+=Mediate(x,y+yk)*mask[yk+radius];
Column[y]=temp;
}
for(y=0;y<radius;y++)
{
temp=0;
weight=0;
for(yk=-y;yk<radius+1;yk++)
{
temp+=Mediate(x,y+yk)*mask[yk+radius];
weight+=mask[yk+radius];
}
Column[y]=temp/weight;
}
for(y=nHeight-radius;y<nHeight;y++)
{
temp=0;
weight=0;
for(yk=-radius;yk<nHeight-y;yk++)
{
temp+=Mediate(x,y+yk)*mask[yk+radius];
weight+=mask[yk+radius];
}
Column[y]=temp/weight;
}
for(y=0;y<nHeight;y++)
{
Out(x,y)=(int)Column[y];
}
}
delete []Column;
delete []mask;
delete []lpMediate;
PutPoints(lpOutput);
delete lpInput;
delete lpOutput;
}
void main(int argc, char *argv[])
{
if(argc==2)
FileName=argv[1];
else
return;
OpenFile();
Gauss();
SaveAs();
}
- 高斯模糊处理(图像复原)源代码
- 高斯模糊处理(图像复原)源代码
- 图像处理------高斯模糊
- Delphi图像处理 -- 高斯模糊
- 图像处理之高斯模糊
- 高斯处理图像背景模糊
- 图像处理之高斯模糊
- 模糊图像复原技术综述
- 图像高斯模糊
- Android图片高斯模糊处理应用-涉及libjpeg的使用,NDK对SurfaceView的操作,图像模糊处理,附源代码
- 图像处理之图像复原
- 数字图像处理—图像高斯模糊运算直观解释
- 用PHP+GD扩展实现图像高斯模糊处理
- VC++高斯滤波\中值滤波实现图像模糊处理
- JAVA图像处理——高斯模糊
- 一个图像高斯模糊的处理类
- Java实现高斯模糊算法处理图像
- OpenCV3_C++_GaussianBlur()图像高斯模糊化处理 实例
- 视频YUV4:2:2转4:2:0的TI DSP源代码
- 内存管理和地址翻译概述
- 快速查找素数
- 链式存储线性表(无头节点)
- 面向对象之封装与多态
- 高斯模糊处理(图像复原)源代码
- 人脸检测与识别的站点
- 水平镜像处理源代码
- MongoDB C++应用 简单例子
- dct变换源代码
- xtrabackup 1.6.3安装出现cc1: error: unrecognized command line option "-fdiagnostics-show-option"
- 第二章(编译和链接)
- 我学到的一些关于编程的事儿(翻译)
- 硬盘数据恢复