您的位置:首页 > 其它

注意maven打包的filter

2012-04-24 17:59 141 查看
设计一种能够滤除所有噪声而保持所有重要的图像结构特征完整的滤波器是不可能的,因为没有哪种滤波器能够很好地辨别图像中的哪部分内容对观测者比较重要,哪部分内容不那么重要。中值滤波在这方面做的较好。

中值滤波:将图像中每一点的像素值由对应滤波区域内像素值的中值代替,也就是说,如果将像素点对应的滤波区域内的像素值按升序排列,那么如果整个区域有奇数个像素,则以中间的像素值为中值,如果整个区域内有偶数个像素值,则中值为中间两个像素的平均值。

代码如下:
function zhong_zhi_lv_bo()

%中值滤波

ori_im = input('原图像ori_im: ');

ori_im =imnoise(ori_im,'salt & pepper',0.04); %加椒盐噪声

figure;imshow(ori_im);

ori_im = double(ori_im);

[m,n] = size(ori_im);

N = 5;%模板的半径

mo_ban = (2 * N + 1)^2;

LB_im = zeros(m,n);

tic;

for i = (N + 1):(m - N)

for j = (N + 1):(n - N)

shuzu = zeros(1,mo_ban);

%sum = 0;

i_3 = 1;

for i_2 = -N:N

for j_2 = -N:N

shuzu(1,i_3) = ori_im(i + i_2,j + j_2);%把模板的元素放在一个一维数组里面

i_3 = i_3 + 1;

%sum = sum + ori_im(i + i_2,j + j_2);

end

end

%冒泡排序从小到大

for k = 1:mo_ban

flag = 1;

for h = 1:(mo_ban - k)

if shuzu(1,h) > shuzu(1,h + 1)

temp = shuzu(1,h);

shuzu(1,h) = shuzu(1,h + 1);

shuzu(1,h + 1) = temp;

flag = 0;

end

end

if flag == 1

break;

end

end

LB_im(i,j) = shuzu(1,(mo_ban-1)/2+1);

%jun_zhi = sum / (2*N + 1)^2;

% LB_im(i,j) = jun_zhi;%sum / ((2*N+1)^2);

end

end

toc;

LB_im = uint8(LB_im);

figure;imshow(LB_im);

本文出自 “图像识别” 博客,请务必保留此出处http://4691359.blog.51cto.com/4681359/836492
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: