赞
踩
图1(a)显示了一幅被噪声图像污染的指纹图像,图1(b)给出了结构元,请自编程序,实现以下运算:
(1) 用图1(b)所示的结构元对图1(a)进行腐蚀。
(2) 对图1(a)进行开运算。
(3) 对开运算的结果进行膨胀处理。
(4) 对开运算的结果进行闭运算处理。
(5) 分析实验结果。
答:
%% %对污染的指纹图像进行腐蚀运算 clear all;close all;clc f=imread('1.tif');%f 240x317 [M, N]=size(f); f1=zeros(M,N); figure;imshow(f) se=ones(3); %结构元素为 3×3 时 [m, n]=size(se); sx=floor(m/2); %取整 sy=floor(n/2); f = padarray(f,[sx sy]); %对 f 进行零填充 [M, N]=size(f); %获取填充后 f 的大小 for i=sx+1:M-sx for j=sy+1:N-sy fblock=f(i-sx:i+sx,j-sy:j+sy); andresult=se&fblock; %与运算 if (andresult==se) f1(i-sx,j-sy)=1; else f1(i-sx,j-sy)=0; end end end subplot(1,4,1); imshow(f1);title('腐蚀运算结果'); %% %%对污染的指纹图像进行开运算,即腐蚀之后进行膨胀运算 f1 = padarray(f1,[sx sy]); f2=zeros(238,315); %开运算的结果 for i=sx+1:M-sx for j=sy+1:N-sy fblock=f1(i-sx:i+sx,j-sy:j+sy); andresult=se&fblock; As=sum(sum(andresult)); if As>0 f2(i-sx,j-sy)=1; else f2(i-sx,j-sy)=0; end end end subplot(1,4,2);imshow(f2);title('开运算结果'); %% %对开运算的结果进行膨胀处理。 f2 = padarray(f2,[sx sy]); f3=zeros(238,315); %开运算的结果继续膨胀 for i=sx+1:M-sx for j=sy+1:N-sy fblock=f2(i-sx:i+sx,j-sy:j+sy); andresult=se&fblock; As=sum(sum(andresult)); if As>0 f3(i-sx,j-sy)=1; else f3(i-sx,j-sy)=0; end end end subplot(1,4,3); imshow(f3);title('开运算后膨胀结果'); %% %对开运算的结果进行闭运算 f3 = padarray(f3,[sx sy]); f4=zeros(238,315); %存储开运算后闭运算结果 for i=sx+1:M-sx for j=sy+1:N-sy fblock=f3(i-sx:i+sx,j-sy:j+sy); andresult=se&fblock; %与运算 if (andresult==se) f4(i-sx,j-sy)=1; else f4(i-sx,j-sy)=0; end end end subplot(1,4,4); imshow(f4);title('开运算后闭运算结果');
图2(a)给出了一幅简单的二值图像,图2(b)给出了结构元,请按照式(1),对图2(a)进行处理。
β ( A ) = A − ( A ⊖ B ) \beta (A)=A-(A\ominus B) β(A)=A−(A⊖B)
其中, B B B 是结构元。先通过 B B B 对 A A A 腐蚀,再执行 A A A 和腐蚀结果之间的差,即可得到集合 A A A 的边界。
答:
close all; clear all; clc; f=imread('2.tif'); %先腐蚀 se=ones(3);%结构元 [m, n]=size(se); sx=floor(m/2); %取整 sy=floor(n/2); f_padded = padarray(f,[sx sy]); %对 f 进行零填充 [M, N]=size(f_padded); %获取填充后 fp 的大小 for i=sx+1:M-sx for j=sy+1:N-sy fblock=f_padded(i-sx:i+sx,j-sy:j+sy); andresult=se&fblock; %与运算 if (andresult==se) f1(i-sx,j-sy)=1; else f1(i-sx,j-sy)=0; end end end %后做差 fe=f-f1; figure,imshow(fe)
图6给出了一幅带噪声的指纹图像,请进行以下运算:
(1) 求图6的直方图。
(2) 用
T
=
m
T=m
T=m (平均图像灰度)开始,并令
Δ
T
=
0.01
\Delta T=0.01
ΔT=0.01,应用“实验讲义”中给出的迭代算法得到全局阈值。
(3) 用(2)中得到的全局阈值对图像进行分割。
答:
clear all;close all;clc f=imread('4.tif'); imhist(f); f=im2double(f); T=mean(f(:));%当前阈值 t=0;%下一次阈值 while abs(T-t)>0.01%当T与t相差过大 G1=f>T;%逻辑判断,f>T的部分为1,反之为0,注意G1会是logical类型的变量 t=0.5*mean(f(G1))+0.5*mean(f(~G1)); T=t; end %显式的使用find % index=find(f>T); % f(index)=1; % index=find(f<T); % f(index)=0; % imshow(f); %使用逻辑索引来改善速度,不需要显式的使用find f(f>T)=1; f(f<=T)=0; imshow(f);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。