ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:71.65KB ,
资源ID:17447824      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17447824.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(中值滤波器设计及椒盐噪声滤除文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

中值滤波器设计及椒盐噪声滤除文档格式.docx

1、a,灰度值b在图像中将显示为一个亮点,a的值将显示为一个暗点。若 或 为零,则脉冲噪声称为单级脉冲。如果 和 均不为零,尤其是他们近似相等时,脉冲噪声值将类似于随机分布在图像上的胡椒和盐粉微粒。形象的说,椒噪声在图像上是类似于黑胡椒颗粒的小点,而盐噪声在图像上是类似于白色盐粒的小点。2、平滑化去噪声思想如何从一副有噪声的图像中把噪声去除呢?此时,因有随机噪声而把像素的真值隐藏起来,而不被知晓,可表现为图像变暗而不清楚。我们的目的是要把干扰的噪声除去,得到视觉清晰的图像。如右图,噪声的浓度与其周围像素的浓度间,存在着很大的浓度差,使人觉得很刺眼,利用噪声的这种性质除去噪声的方法,一般称为平滑化(

2、smoothing)。3、中值滤波的原理及特性:中值滤波在图像处理中,常用于用来保护边缘信息,是一种经典的平滑噪声的方法。(1)中值滤波原理中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个拎域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是去某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=medf(x-k,y-l),(k,lW) ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板

3、,通常为2*2,3*3区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。(2)中值滤波器:中值滤波器:用该像素相邻像素的灰度中值来代替该像素的值 :实现方法:a. 通过从图像中的某个采样窗口取出奇数个数据进行排序,位于采样窗中间的中值作为输出; b. 丢弃最早的值,用排序后的中值取代要处理的数据即可。(3)中值滤波特性中值滤波是图像处理中的一个常用步骤,它对于斑点噪声和椒盐噪声来说尤其有用。中值滤波方法以牺牲图像清晰度为代价消除图像中的椒盐噪声。中值滤波不能保证把噪声去除,只能在有限的范围内减弱噪声对图像的影响。同时,中值滤波不能多次使用,因为这样会使图像各个像素间趋于相同,整个图像

4、就会变得越来越模糊。另外,通过查阅资料发现,中值滤波器的效果不仅仅和观察窗的大小有关,还和观察窗的形状有关。五、实验步骤1、根据题目要求,先画出程序的流程图。2、源程序:(1)基础训练部分:#include stdio.hunsigned char*pBmpBuf=NULL;/读入图像数据的指针unsigned char*pBmpBuf2=NULL;int bmpWidth; /图像宽度int bmpHeight; /图像高度RGBQUAD *pColorTable;/颜色表指针int biBitCount; /图像类型,每像素的位数/读程序可读取8,24位图,本实验是对8位灰度图进行操作,满

5、足要求bool readBmp(char *bmpName,int ImageWidth,int ImageHeight) int i,j; /行列数 BYTE *B; /分别对应图像的RGB,本实验中RGB相等,故意义不大 BYTE *R; BYTE *G; FILE *fp=fopen(bmpName,rb); /打开文件 if(fp=0) return 0; fseek(fp,sizeof(BITMAPFILEHEADER),0); /找出头文件 BITMAPINFOHEADER head; fread(&head,sizeof(BITMAPINFOHEADER),1,fp); Imag

6、eWidth=head.biWidth; /图像宽度赋值 ImageHeight=head.biHeight; /图像高度赋值 bmpWidth=ImageWidth; bmpHeight=ImageHeight; biBitCount=head.biBitCount; int lineByte=(bmpWidth*biBitCount/8+3)/4*4; /一行中信息点字节 if (biBitCount=8) pColorTable=new RGBQUAD256; fread(pColorTable,sizeof(RGBQUAD),256,fp); pBmpBuf=new unsigned

7、charlineByte*bmpHeight; fread(pBmpBuf,1,lineByte*bmpHeight,fp); /开空间 B=NULL; B=(BYTE*)malloc(sizeof(BYTE*)*bmpHeight); for(i=0; ibmpHeight; i+) Bi = (BYTE*)malloc(sizeof(BYTE)*bmpWidth); if(B=NULL) printf(fail to malloc Bn exit(0); G=NULL; G=(BYTE*)malloc(sizeof(BYTE*)*bmpHeight); Gi = (BYTE*)malloc

8、(sizeof(BYTE)*bmpWidth); if(G=NULL)fail to malloc Gn R=NULL; R=(BYTE*)malloc(sizeof(BYTE*)*bmpHeight); Ri = (BYTE*)malloc(sizeof(BYTE)*bmpWidth); if(R=NULL)fail to malloc Rn /读图像的RGB for(i=0;ibmpHeight/50;i+) for(j=0;jbmpWidth/50;j+) Bij=*(pBmpBuf+i*lineByte+j); Gij=*(pBmpBuf+i*lineByte+j); Rij=*(pB

9、mpBuf+i*lineByte+j); printf(B=%d,G=%d,R=%d)n,Bij,Gij,Rij); else if (biBitCount=24)bmpHeight/100;bmpWidth/100; Bij=*(pBmpBuf+i*lineByte+j*3+0); Gij=*(pBmpBuf+i*lineByte+j*3+1); Rij=*(pBmpBuf+i*lineByte+j*3+2); fclose(fp); /释放空间 +i) free(Bi); free(B); free(Gi); free(G); free(Ri); free(R); return 1;boo

10、l writeBmp(char *bmpName, int ImageWidth,int ImageHeight) unsigned char *imgBuf=pBmpBuf2; if(!imgBuf) return 0; int colorTablesize=0; if(biBitCount=8) colorTablesize=1024; int lineByte=(ImageWidth*biBitCount/8+3)/4*4;wb if (fp=0) return 0; BITMAPFILEHEADER fileHead; fileHead.bfType=0x4D42; fileHead.

11、bfSize=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+colorTablesize+lineByte*ImageHeight; fileHead.bfReserved1=0; fileHead.bfReserved2=0; fileHead.bfOffBits=54+colorTablesize; fwrite(&fileHead,sizeof(BITMAPFILEHEADER),1,fp); head.biBitCount=biBitCount; head.biClrImportant=0; head.biClrUsed=0; he

12、ad.biCompression=0; head.biHeight=ImageHeight; head.biPlanes=1; head.biSize=40; head.biSizeImage=lineByte*ImageHeight; head.biWidth=ImageWidth; head.biXPelsPerMeter=0; head.biYPelsPerMeter=0; fwrite(pColorTable,sizeof(RGBQUAD),256,fp); fwrite(imgBuf,ImageHeight*lineByte,1,fp); void Med()int i,j,a,b;

13、 BYTE p9,s; int lineByte=(bmpWidth +3)/4*4; /计算一行中储存信息的字节数 pBmpBuf2=new unsigned charlineByte*bmpHeight; memcpy(pBmpBuf2,pBmpBuf,lineByte*bmpHeight); /将原图复制 /观察窗取3*3的矩形窗 for(i=1;bmpHeight-2;i+) /边缘不进行处理 for(j=3;bmpWidth*3-3;j=j+3) /每一个像素点由RGB三个字节组成,故一个单元为三字节,相对应改变就需要将列数值j设为每三字节取一次/取原图像中该点周围的一个矩形部分 p

14、0=*(pBmpBuf+(i-1)*lineByte+j-3); p1=*(pBmpBuf+(i-1)*lineByte+j); p2=*(pBmpBuf+(i-1)*lineByte+j+3); p3=*(pBmpBuf+i*lineByte+j-3); p4=*(pBmpBuf+i*lineByte+j); p5=*(pBmpBuf+i*lineByte+j+3); p6=*(pBmpBuf+(i+1)*lineByte+j-3); p7=*(pBmpBuf+(i+1)*lineByte+j); p8=*(pBmpBuf+(i+1)*lineByte+j+3);/排序 for(a=0;a5

15、;a+) for(b=a+1;bpb) s=pa; pa=pb; pb=s; *(pBmpBuf2+i*lineByte+j)=p4; /取中值void main() char readPath=输入图像.bmp; readBmp(readPath,bmpWidth,bmpHeight); printf(width=%d,height=%d,biBitCount=%dn,bmpWidth,bmpHeight,biBitCount); Med(); char writePath=输出图像.bmp writeBmp(writePath,bmpWidth,bmpHeight); delete pBmpBuf; delete pBmpBuf2; delete pColorTable;(2)扩展训练部分/读入图像数据的指针2unsigned char*pBmpBuf3=NULL;/读入图像数据的指针3 /printf(,*(pBmpBuf+i*lineByte+j),*(pBmpBuf+i*lineByte+j),*(pBmpBuf+i*lineByte+j);,*(pBmpBuf+i*lineByte+j*3+0),*(pBmpBuf+i*lineByte+j*3+1),*(pBmpBuf+i*lineByte+j*3+2);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1