实验三 图像的平滑
实验目的: 掌握 opencv 开发环境中对灰度图像及彩色图像中的像素的访问方法
掌握 opencv 中对图像进行处理的基本过程。
掌握均值平滑和中值滤波的基本原理
实验内容: (1)打开一幅灰度图像,对图像进行 3*3(包括中心点)的邻域平均处理。
(2)对原图进行 3*3(包括中心点)的中值滤波处理。
(3)比较原图像与邻域平均的图像、中值滤波后的图像的差异。
实验步骤:1、打开计算机,启动 MATLAB 或 VB,VC 程序;
2、调入“实验 1”中获取的数字图像,使用不同的平滑滤波器对图像进行平滑
处理并比较所得不同的图像效果。
3、记录和整理实验报告
源代码:
1、中值滤波
%自编的中值滤波函数。x 是需要滤波的图像,n 是模板大小(即 n×n)
function d=mid_filter(x,n)
[height, width]=size(x); %输入图像是 p×q 的,且 p>n,q>n
x1=double(x);
x2=x1;
for i=1:height-n+1
for j=1:height-n+1
c=x1(i:i+(n-1),j:j+(n-1)); %取出 x1 中从(i,j)开始的 n 行 n 列元素,即模板(n×n 的)
e=c(1,:); %是 c 矩阵的第一行
for u=2:n
e=[e,c(u,:)]; %将 c 矩阵变为一个行矩阵
end
mm=median(e); %mm 是中值
x2(i+(n-1)/2,j+(n-1)/2)=mm; %将模板各元素的中值赋给模板中心位置的元素
end
end
%未被赋值的元素取原值
d=uint8(x2);
2、邻域平均法
I=imread('Miss.bmp');
J=imnoise(I,'gaussian',0.02); %添加高斯噪声
subplot(231);imshow(I);title('原图像');
subplot(232);imshow(J); title('添加高斯噪声图像')
k1=filter2(fspecial('average',3),J); %进行 3×3 模板平滑滤波
k2=filter2(fspecial('average',5),J); %进行 5×5 模板平滑滤波
k3=filter2(fspecial('average',7),J); %进行 7×7 模板平滑滤波