基于各向异性扩散的数字图像处理 作业.docx

上传人:小飞机 文档编号:3094726 上传时间:2023-03-10 格式:DOCX 页数:10 大小:39.69KB
返回 下载 相关 举报
基于各向异性扩散的数字图像处理 作业.docx_第1页
第1页 / 共10页
基于各向异性扩散的数字图像处理 作业.docx_第2页
第2页 / 共10页
基于各向异性扩散的数字图像处理 作业.docx_第3页
第3页 / 共10页
基于各向异性扩散的数字图像处理 作业.docx_第4页
第4页 / 共10页
基于各向异性扩散的数字图像处理 作业.docx_第5页
第5页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于各向异性扩散的数字图像处理 作业.docx》由会员分享,可在线阅读,更多相关《基于各向异性扩散的数字图像处理 作业.docx(10页珍藏版)》请在三一办公上搜索。

1、基于各向异性扩散的数字图像处理 作业基于各向异性扩散的数字图像处理 1 Perona-Malik算法概述 各向异性扩散作为现行的一种非常流行的偏微分方程数字图像处理技术,是由传统的 Gaussian 滤波发展而来的,有着强大的理论基础,并有着传统的数字图像方法无法企及的良好特性,其特点是可以在平滑的同时保持边缘特征。由于这种优良的特性,使其在图像的平滑、去噪、恢复、增强和分割等方面得到了广泛的应用。 Koenderink和 Witkin两位学者把尺度空间的严格理论引入到了数字图像处理之中,而尺度空间理论正是现代偏微分方程数字图像处理的理论基础,他们的工作主要是将多尺度图像表示为 Gaussia

2、n 滤波器处理的结果,相当于将原图像输入热传导方程进而得到的序列时间图像。多尺度滤波得到的图像序列,可以看作各向同性热扩散方程的解,这就是用扩散方程的观点来看待高斯滤波: u=c(uxx-uyy) t (1.1)不仅是热扩散方程可以产生尺度空间,其他的抛物线方程也可以产生尺度空间,进而满足极大值原理的演化方程也能定义一类尺度空间。各向异性扩散方程的提出是这个领域中一个里程碑式的标志,它开辟了数字图像处理中偏微分方程理论和应用的一个新领域,提出了各向异性扩散方程,一般称为 Perona-Malik扩散模型。 u=div(g(u)u)(1.2) t 其中div是散度算子,u是图像的梯度,g(u)是

3、扩散系数。各向异性扩散是一个能量散发的过程,这个过程与能量曲面的形状有关,从数学上来看,其等价于一个能量最小化问题的求解。 从数学意义上讲Perona-Malik模型是改进的热传导偏微分方程。它是通过函数c(x,y,t)自适应地控制扩散速度。理论上希望边缘内部的区域,c远离0,图像可以平滑,而在边缘附近,c0,图像不再平滑。铃铛形的径向函数g(w)可取 g1(u)=exp-(uK)2 (1.3) 或者 g2(u)=11+(u1+aK),a0 (1.4) 当c(x,y,t)=g(u)时形成了各向异性的扩散模型: u=(gu)u)=g(u)Du+g(u) u (1.5) t可以利用Taylor级数

4、展开进行线性近似 uu(x,y,t)=u(x,y,0)+Dt=u(x,y,0)+Dt(c(x,y,t)u) (1.6) t由于 (cu)=cu+cDu 所以可以得出P-K模型简化推导: u(x,y,dt)u(x,y,0)+(ut)t=0dt=u(x,y,0)+dt(c(x,y,0)u) 这样把较长的时间t分割为 t=ndt,始终从tn步计算到tn+1步即可 u(x,y,tn+1)u(x,y,tn)+dt(c(x,y,tn)u(x,y,tn)=u(x,y,tn)+dtc(x,y,tn)u(x,y,tn)+c(x,y,tn)Du(x,y,tn) =u(x,y,tInnn)+dt1+I2把u(x,y

5、,tn) 改写为uni,j,c(x,y,tnn)改写为ci,j,其中 In=1nn 12(ci+1,j-cni.j)(uni+1,j-uni,j)+(cnnni,j+1-ci.j)(ui,j+1-ui,j)+ (cnnnnnni,j-cni-1.j)(ui,j-ui-1,j)+(ci,j-ci.j-1)(uni,j-ui,j-1)In2=1cnuni,ji+1,j+unn2i-1,j+uni,j+1+uni,j-1-4ui,j 则 Innnnn1+I2=12cni+1,jSuni,j+ci,j+1Eui,j+ci-1,jNuni,j+cni,j-1Wuni,j 其中 nnSui,j=uni+1

6、,j-ui,jEuni,j=uni,j+1-uni,jnn Nui,j=ui-1,j-uni,jnnWui,j=uni,j-1-ui,j则得到Perona-Malik算法的下述迭代形式 un+1nnnnnnnnni,j=ui,j+lci+1,jSui,j+ci,i+1Eui,j+ci-1,jNui,j+ci,j-1Wui,j (1.7) (1.8) (1.9) (1.10) (1.11) (1.12) (1.13) (1.14) 其中,l=dt2以Perona-Malik算法为代表的各向异性扩散滤波模型既能有效地去除噪声,又能较好地保持图像的边缘和重要的细节信息。但是考虑到PM模型对小尺度噪声

7、敏感以及部分边缘和细节失真问题的存在,对模型的扩散系数的改进仍然需要进一步的改进。 2算法实现 本算法的实验在VC+6.0环境下实现。先建一个类CDib,用来实现位图的载入以及一些参数的获取。新建一个类CPeronaMalik,类中函数PM( CDib* pDib )用来实现PM算法。 void CPeronaMalik: PM( CDib* pDib ) int i=0,j=0; int nWidth = pDib-GetWidth; int nHeight = pDib-GetHeight; int nWidthBytes = pDib-GetWidth; unsigned char* p

8、DibBits = pDib-GetpDibBits; /每行字节数 int lineByte=(bmpWidth*biBitCount/8+3)/4*4; /循环变量,针对彩色图像,遍历每像素的三个分量 int k; int n; double temp1=0; double temp2=0; int nn;/迭代次数 double deltat; double delta;/步长,deltat小于0.25 /c1、c2表示扩散函数 int p;/范数 double sigma;/平均灰度 double K; if(biBitCount=8) /对于灰度图像 for(i=0;inHeight

9、;i+) for(j=0;j0 / for(i=0;inHeight;i+) for(j=0;jbmpWidth;j+) I1ij=double(*(pBmpBuf+i*lineByte+j); I2ij=double(*(pBmpBuf+i*lineByte+j);/交替存储 for(n=0;nnn;n+) temp2=0; K=1; for(i=0;ibmpHeight;i+) for(j=0;jbmpWidth;j+) temp2=pow(I1ij,p)+temp2; K=sigma*pow(temp2,1/double(p)/(bmpHeight*bmpWidth); / for(i=

10、0;inHeight;i+) for(j=0;jnWidth;j+) if(i=0|i=bmpHeight-1|j=0|j=bmpWidth-1) RFij=0; else RFij=1/(1+pow(pow(pow(I1i+1j-I1i-1j)/2,2)+pow(I1ij+1-I1ij-1)/2,2),0.5)/K),1+a);/扩散函数 / for(i=1;i(nHeight-1);i+) for(j=1;j(nWidth-1);j+) I2ij=I1ij+delta*(RFi+1j*(I1i+1j-I1ij)+RFi-1j*(I1i-1j-I1ij)+RFij+1*(I1ij+1-I1i

11、j)+RFij-1*(I1ij-1-I1ij); /迭代 for(i=0;ibmpHeight;i+) for(j=0;jbmpWidth;j+) I1ij=I2ij; for(i=0;inHeight;i+) /coutint(*(pBmpBuf+i*lineByte+j)endl; for(j=0;j255) *(pBmpBuf+i*lineByte+j)=255; else if(I1ij0) *(pBmpBuf+i*lineByte+j)=0; else *(pBmpBuf+i*lineByte+j)=unsigned char(int(I1ij); else if(biBitCount=24) /彩色图像 for(i=0;inHeight/2;i+) for(j=0;jnWidth/2;j+) for(k=0;k3;k+)/每像素RGB三个分量分别置0才变成黑色 *(pBmpBuf+i*lineByte+j*3+k)=0; 3 实验结果 源图采用lena256*256 灰度图像,经过处理后如右图 可以看出,平滑效果很好,边缘保持的效果也是不错的。 对图像加椒盐噪声及处理后, 效果不是很好,噪声没能去除。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号