【实验名称】
空间图像处理技术
【实验目的】
1.熟悉使用MATLAB库函数fspecial、imfilter、imnoise、medfilt2;
2.通过本次实验掌握图像空间滤波技术以及文字识别技术;
【实验内容】
图1 图2
- 利用图1人物图像,通过库函数fspecial选择不同尺寸的平均滤波器,然后利用库函数imfilter进行滤波,观察滤波后的图像与滤波器大小的关系。
- 利用图1人物图像,通过库函数imnoise对图像加噪音(椒盐噪音)。分别用5行5列的平均滤波器和中值滤波器,对加噪的图像滤波,对比结果进行分析比较。
- 利用图2文字图像(该图像可从MATLAB中直接读取:I=imread('text.png');)从中选取字符a为模板(a=I(32:46,86:100);),通过滤波与阈值处理,识别出图像中的字符a。
【 实验代码】
题1
clc;close all; I=imread('实验5_Fig1.jpg'); imshow(I); title('原图'); h1=fspecial('average',[5,5]); h2=fspecial('average'); I1=imfilter(I,h1); figure; imshow(I1); title('滤波器为[5,5]效果的图像'); % 选用默认的滤波器,即[3,3] I2=imfilter(I,h2); figure; imshow(I2) title('滤波器为[3,3]效果的图像');
题2
img=imnoise(I,'salt & pepper',0.02); figure; imshow(img); title('加椒盐噪音处理后的图像'); % 5行5列滤波器处理 I3=imfilter(img,h1); figure; imshow(I3); title('用5行5列的平均滤波器处理后图像'); % 中值滤波器处理 I4=medfilt2(img,[5,5]); figure; imshow(I4); title('用中值滤波器处理后图像');
题3
img=imread('text.png'); img=double(img); a=img(32:46,86:100); figure; subplot(1,3,1); imshow(img); title('原图'); subplot(1,3,2); imshow(a); title('截取字段的模板'); new_img=imfilter(img,a); maxI=sum(a(:)); s=new_img==maxI; IndexA=double(s); [X,Y]=find(new_img==maxI); num_a=length(X); disp(['图像中a的个数:',num2str(num_a)]); subplot(1,3,3); imshow(IndexA); title('经过字符模板处理后的'); [m,n]=size(a); figure for i=1:num_a x=X(i); y=Y(i); IndexA((x-floor(m/2):x+floor(m/2)),(y-floor(n/2):y+floor(n/2)))=a; imshow(IndexA); hold on end
【运行结果】
题1
题2
题3