第11章中值滤波.pptVIP

  • 157
  • 0
  • 约6.26千字
  • 约 44页
  • 2018-05-04 发布于四川
  • 举报
pixels=(cols-2)*(rows-2); //图像四周的像素不处理 pp=sourceImg+cols+1; //指针指向第一个像素 newpp=newImg+cols+1; //中值滤波 for(i=0;ipixels;i++) { //3*3的中值滤波数组赋值 medianWin[0]=*(pp - cols-1); medianWin[1]=*(pp -cols); medianWin[2]=*(pp - cols+1); medianWin[3]=*(pp-1); medianWin[4]=*pp; medianWin[5]=*(pp+1); medianWin[6]=*(pp + cols-1); medianWin[7]=*(pp + cols); medianWin[8]=*(pp + cols+1); //赋值后的中值滤波数组进行冒泡排序 r=8; for(k=0;kr;k++,r--) for(m=0;mr;m++) { if ( medianWin[m]medianWin[m+1] ) { temp=medianWin[m]; medianWin[m]=medianWin[m+1]; medianWin[m+1]=temp; } } //取排序好的数组的中值赋给当前像素 *newpp=medianWin[4]; newpp++; pp++; } 4 试验结果 (1)原始图像 (2)加椒盐噪声后图像 4 试验结果 (3)中值滤波后的图像 4 试验结果 分析与总结 ■ 通过实验可以发现中值滤波的优点:对于椒盐噪声的去除效果很好,并且在去除图像噪声的同时,更好的保护图像的边缘信息,从而获得更好的图像去噪效果。 ■ 因为要对邻域窗口内的像素灰度值进行排序和取中值,需要进行大量的数学运算,而且在图像边缘区域还会保留一定的残留噪声。 1.冒泡排序 Void BubbleSort(Node L[]) { Int i ,j; Bool ischanged;//设计跳出条件 For(j=n;j0;j--) { ischanged =false; For(i=0;ij;i++) { If(L[i]L[i+1])//如果发现较重元素就向后移动 { Int temp=L[i]; L[i]=L[i+1]; L[i+1]=temp; Ischanged =true; } } If(!ischanged)//若没有移动则说明序列已经有序,直接跳出 Break; } } 2.直接选择排序 Void SelectSort(Node L[]) { Int i, j, k; //分别为有序区,无序区,无序区最小元素指针 For(i=0;ilength;i++) { k=i; For(j=i+1;jlength;j++) { If(L[j]L[k]) k=j; } If(k!=i) //若发现最小元素,则移动到有序区 { Int temp=L[k]; L[k]=L[i]; L[i]=L[te

文档评论(0)

1亿VIP精品文档

相关文档