medfilter.m
上传用户:lcj80317
上传日期:2007-01-26
资源大小:625k
文件大小:1k
源码类别:

波变换

开发平台:

Matlab

  1. function X = medfilter(x, m)
  2. % 中值滤波 原矩阵为x 使用的模板为m
  3. % 模板大小
  4. dim1 = size(m, 1);          
  5. dim2 = size(m, 2);
  6. % 对边界的像素不处理 计算需要处理像素的范围
  7. row_min = (dim1+1) / 2;
  8. row_max = size(x, 1) - row_min + 1;
  9. col_min = (dim2+1) / 2;
  10. col_max = size(x, 2) - col_min + 1;
  11. ind_nz = find( m ~= 0);
  12. X = x;
  13. for i = row_min : row_max
  14.     for j = col_min : col_max
  15.         temp = x( i-(dim1-1)/2:i+(dim1-1)/2,  j-(dim2-1)/2:j+(dim2-1)/2);
  16.         element = sort( temp(ind_nz) );
  17.         X(i, j) = element( round( size(element, 1)/2 ) );
  18.     end
  19. end