实验23中值滤波.docxVIP

  • 6
  • 0
  • 约 4页
  • 2018-05-20 发布于重庆
  • 举报
实验23中值滤波

实验2.3中值滤波 实验代码 # include stdlib.h #include stdio.h #include math.h #include cv.h #include highgui.h #define U 20 //高斯分布的均值 #define D 30 //高斯分布的均方差 int Gaus_S(){ //产生高斯样本,以U为均值,D为均方差 double sum=0; for(int i=0;i12;i++) sum+=rand()/32767.00; //计算机中rand()函数为-32767~+32767(2^15-1) //故sum+为0~1之间的均匀随机变量 return int(U+D*(sum-6)); //产生均值为U,标准差为D的高斯分布的样本,并返回 } int main() { IplImage* img,* imge,* imgA,*imgg,*imggg; int i,j,sum,k; int height,width,step,channel; uchar * data, * daat, * dd, * junzhi,*zhongzhi; CvSize czSize; imgA=cvLoadImage(D:\\123.jpg,0);//灰度图 height=imgA-height; //图像信息 width=imgA-width; step=imgA-widthStep; channel=imgA-nChannels; //图像信息 nChannels是图像通道,黑白1通道,彩色3通道 data=(uchar*)imgA-imageData;//像素 img= cvCreateImage(cvSize(imgA-width,imgA-height), imgA-depth, imgA-nChannels); dd=(uchar*)img-imageData; imgg= cvCreateImage(cvSize(imgA-width,imgA-height), imgA-depth, imgA-nChannels); junzhi=(uchar*)imgg-imageData; imggg= cvCreateImage(cvSize(imgA-width,imgA-height), imgA-depth, imgA-nChannels); zhongzhi=(uchar*)imggg-imageData; srand((unsigned)time(NULL)); //种下随机种子 //产生高斯噪声 for(i=0;iheight;i++) { for(j=0;jwidth;j++) { for(int k=0;k=channel-1;k++) { dd[i*step+j*channel+k]=data[i*step+j*channel+k]+Gaus_S(); } } } //中值滤波 int a[9],temp,p; for( i = 0 ; i height;i++){ for( j = 0; jwidth;j++){ //边界处理 if(i == 0 || i == height || j == 0 || j == width){ for(int k=0;kchannel-1;k++) zhongzhi[i*step+j*channel+k] =dd[i*step+j*channel+k]; } else { for(int k=0;k=channel-1;k++){ a[0]= dd[(i-1)*step+(j-1)*channel+k]; a[1]= dd[(i-1)*step+j*channel+k]; a[2]= dd[(i-1)*step+(j+1)*channel+k]; a[3]= dd[i*step+(j-1)*channel+k]; a[4]= dd[i*step+j*channel+k]; a[5]= dd[i*step+(j+1)*channel+k]; a[6]= dd[(i+1)*step+(j-1)*channel+k]; a[7]= dd[(i

文档评论(0)

1亿VIP精品文档

相关文档