编写程序对图像进行模糊化,并且把模糊化的图像还原

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[1]实验内容:

编写程序对图像进行模糊化,并且把模糊化的图像还原。

[2]实验详细操作过程:

尽管图像增强和图像复原有相交叉的领域,单图像增强主要是一个主观的过程,而图像的复原的大部分过程是一个客观过程人。图像的复原试图利用退化现象的某种先验知识来重建或复原被退化的图像。因而复原技术就是把退化模型化,并且采用相反的过程进行处理,以便复原出原图像。以下是实验代码:

1.模糊

unsigned char *lpSrc;

unsigned char *m_Image1;

long i,j;

long w,h;

w=m_DibHead->biWidth;

h=m_DibHead->biHeight;

int temp,m;

double p,q;

int Tottime, TotLine, time;//Tottime为图像移动的总时间,TotLine为图像移动的总距离Tottime = 10;

TotLine = 10 ;

double B;

B = 0.1;

m_Image1 = new unsigned char [w*h];

for (i= 0;i< h; i++)

for(j= 0;j< w;j++)

{

temp=0;

lpSrc =(unsigned char *)(m_Image + i * w + j);

for ( time= 0; time < Tottime; time ++ )

{

p = (float)j - (float)(TotLine)*time/Tottime;//表示的是移动后的Y方向坐标

if (p > 0)

{

q = p - floor((double)p);

if(q >= 0.5)

m = (int)ceil((double)p);

else

m = (int)floor((double)p);

lpSrc = (unsigned char *)(m_Image + w *i + m);

temp = temp + *lpSrc;//将移动后的像素与之前的像素累加

}

}

temp = B * temp;

if(temp<0)

temp=0;

else if(temp>255)

temp=255;

m_Image1[i*w+j] = temp;

*(m_Image + i * w + j) =m_Image1[i * w + j];

}

Invalidate();

2.复原:

unsigned char *lpSrc;

unsigned char *m_Image1;

long i,j;

long w,h;

w=m_DibHead->biWidth;

h=m_DibHead->biHeight;

int temp, Tottime = 10;

double m=0.01;

complex gd ; //中间量

complex *FD = new complex[w * h];

complex *TD = new complex[w * h];

//进行二维离散傅立叶变换===========

DFFT(FD,(LPSTR)m_Image, w, h);

for (i= 0;i< h; i++)

{

for(i=0;i<1/a;i++) //1/a为抽样点数**************************** { if(i==0)

temp= Tottime *complex(cos(PI*m*i),sin(PI*m*i));

else

temp=T*sin(PI*a*i)*complex(cos(PI*m*i),sin(PI*m*i))/(PI*m*i);

for(j=0;j

FD[i*w+j]/=temp;

}

DIFFT(TD,FD,h,w);

for(i=0;i

for(j=0;j

{

dTemp=sqrt(TD[j + w * i].real() * TD[j + w * i].real() +

TD[j + w * i].imag() * TD[j + w * i].imag());

if(dTemp<255)

*(m_Image+i*w+j)=dTemp;

else

*(m_Image+i*w+j)=255;

}

Invalidate();

Delete gd;

delete [] TD;

delete [] FD;

试验分析和结论:

1.这个实验的要求是对一图像进行模糊处理,然后把它复原.先是在时域对图像进行一维

的累加模糊化处理,然后利用然后在频域上除以一个冲击函数的频谱进行还原;

2.本次试验图像只有在x方向上的运动,设图像总的位移量为a,运动时间为T,则任意时间t里,物体在x方向的位移量为 a*t/T,

其对应的频谱为H(u)= (T/(pi*a*u))* sin(t*a*u) exp(-j*pi*a*u),所以在图像模糊处理是相当于对图像进行了与上式相乘的操作,而在对图像进行复原操作的时候就要处以上式。

3.模糊和复原是一对逆运算·

相关文档
最新文档