十、数字图像处理Matlab实验 第九章 形态学图像处理

在这里插入图片描述

文章目录

实验所用教材配图资源:数字图像处理-冈萨雷斯-第三版(教材配图)
实验Matlab代码资源:数字图像处理 第九章 形态学图像处理(Matlab实验代码)

一、形态学:二值图像的腐蚀 P405

1.1 实验内容

关于灰度图像腐蚀的实验

1.2 文件目录结构

在这里插入图片描述

1.3 Matlab代码

% 关于腐蚀的实验 P405
close all;clear all;clc;
f = imread('Fig0905(a)(wirebond-mask).tif');
g = imerode(f, strel('disk', 5));
g1 = imerode(f, strel('disk', 7));
g2 = imerode(f, strel('disk', 22));
subplot(1,4,1), imshow(f);title('(a)原始图像的尺寸为480x480像素:');
subplot(1,4,2), imshow(g);title('(b)使用大小为 11 * 11 的结构元腐蚀的图像');
subplot(1,4,3), imshow(g1);title('(c)使用大小为 15 * 15 的结构元腐蚀的图像');
subplot(1,4,4), imshow(g2);title('(d)使用大小为 45 * 45 的结构元腐蚀的图像');

1.4 实验结果

在这里插入图片描述


二、形态学:二值图像的膨胀 P407

2.1 实验内容

关于灰度图像膨胀的实验

2.2 文件目录结构

在这里插入图片描述

2.3 Matlab代码

% 关于膨胀的实验 P407
close all;clear all;clc;
 
A = imread('Fig0907(a)(text_gaps_1_and_2_pixels).tif');
B = [0 1 0; 1 1 1; 0 1 0];   %指定结构元素由0和1组成的矩阵
A2 = imdilate(A, B);    %二值图像
subplot(1,2,1), imshow(A);title('(a)包括断开文本的输入图像:');
subplot(1,2,2), imshow(A2);title('(b)膨胀后图像:');

2.4 实验结果

在这里插入图片描述


三、形态学:二值图像的开、闭操作 P410

3.1 实验内容

关于二值图像的 开操作 与 闭操作的实验 P410

3.2 文件目录结构

在这里插入图片描述

3.3 Matlab代码

% 关于二值图像的 开操作 与 闭操作的实验 P410
close all;clear all;clc;
% 读入图像
in = imread('Fig0911(a)(noisy_fingerprint).tif');
 
% 腐蚀操作
g = {in};
g{end+1} = imerode(in, strel('disk', 1));
 
% 开操作
g{end+1} = imopen(in,strel('disk', 1));
 
% 膨胀操作
g{end+1} = imdilate(g{length(g)},strel('disk', 1));
 
% 闭操作
g{end+1} = imclose(g{length(g)},strel('disk', 1));
 
% 显示图像
title_ = {'(a)噪声图像','(b)腐蚀后的图像','(c)A的开操作','(d)开操作的膨胀','(e)开操作的闭操作'};
figure;
for i = 1:length(g)
    subplot(2,3,i);
    imshow(g{i},[]);
    title(title_{i})
end

3.4 实验结果

在这里插入图片描述


四、形态学:二值图像— 边界提取 P413

4.1 实验内容

二值图像的边界提取

4.2 文件目录结构

在这里插入图片描述

4.3 Matlab代码

% 二值图像的边界提取 P413
close all;clear all;clc;
 
% 读入图像
in = imread('Fig0914(a)(licoln from penny).tif');
 
% 使用原图减去 对原图腐蚀过后的结果
boundary = in - imerode(in,strel('disk', 1));
 
% 显示图像
figure;
subplot(1,2,1);
imshow(in,[]);
title('(a)原图');
 
subplot(1,2,2);
imshow(boundary,[]);
title('(b)获取其边界');

4.4 实验结果

在这里插入图片描述


五、形态学:二值图像 — 空洞填充 P414

5.1 实验内容

二值图像的空洞填充实验

5.2 文件目录结构

在这里插入图片描述

5.3 Matlab代码

% 二值图像的空洞填充实验 P414
close all;clear all;clc;
% 读入图像
in = imread('Fig0916(a)(region-filling-reflections).tif');
% 填充孔洞
out = imfill(in,'holes');
% 显示图像
figure;
subplot(1,2,1);
imshow(in,[]);
title('(a)二值图像');
 
subplot(1,2,2);
imshow(out,[]);
title('(b)填充该区域的结果');

5.4 实验结果

在这里插入图片描述


六、形态学:二值图像 — 重建开操作 P424

6.1 实验内容

对二值图像的重建开操作

6.2 文件目录结构

在这里插入图片描述

6.3 Matlab代码

% 对二值图像的重建开操作 P424
close all;clear all;clc;
% 读入图像
in = imread('Fig0929(a)(text_image).tif');
 
% 腐蚀
out = {in};
b = ones(51,1);
out{end+1} = imerode(in, b);
 
% 开操作
out{end+1} = imopen(in,b);
 
% 重建开操作
out{end+1}= imreconstruct(out{2},in);
 
% 显示图像
title_ = {'(a)大小为 918*2018 像素的文本图像','(b)使用大小为 51*1 像素的结构元对图(a)的腐蚀','(c)使用相同的结构元对图(a)的开操作,用作参考','(d)重建开操作的结果'};
figure;
for i = 1:length(out)
    subplot(2,2,i);
    imshow(out{i},[]);
    title(title_{i});
end
 

6.4 实验结果

在这里插入图片描述


七、形态学:二值图像 — 空洞填充 P425

7.1 实验内容

对二值图像的填充孔洞

7.2 文件目录结构

在这里插入图片描述

7.3 Matlab代码

% 对二值图像的填充孔洞 P425
close all;clear all;clc;
% 读入图像
in = imread('Fig0929(a)(text_image).tif');
% 填充孔洞
out = imfill(in,'holes');
% 显示图像
figure;
subplot(1,2,1);
imshow(in,[]);
title('(a)二值图像');
 
subplot(1,2,2);
imshow(out,[]);
title('(b)填充该区域的结果');

7.4 实验结果

在这里插入图片描述


八、形态学:二值图像 — 边界清除 P426

8.1 实验内容

对二值图像的边界消除

8.2 文件目录结构

在这里插入图片描述

8.3 Matlab代码

% 对二值图像的边界消除 P425
close all;clear all;clc;
in = imread('Fig0929(a)(text_image).tif');
[row,column] = size(in);
 
% 膨胀重建获取与边界相连的部分
out = {};
f = in;
f(2:row - 1,2:column-1) = zeros(row - 2,column - 2);
out{end+1} = imreconstruct(f,in);
 
% 除去边界
out{end+1} = imclearborder(in,8);
 
%显示图像
title_ = {'(a)标记图像','(b)没有接触边界的物体的图像'};
figure;
for i = 1:length(out)
    subplot(1,2,i);
    imshow(out{i},[]);
    title(title_{i});
end

8.4 实验结果

在这里插入图片描述


九、形态学:灰度图像 — 腐蚀与膨胀 P429

9.1 实验内容

灰度图像关于腐蚀和膨胀的实验

9.2 文件目录结构

在这里插入图片描述

9.3 Matlab代码

% 灰度图像关于腐蚀和膨胀的实验 P429
close all;clear all;clc;
in = imread('Fig0935(a)(ckt_board_section).tif');
 
% 腐蚀
out = {in};
out{end+1} = imerode(in, strel('sphere', 2));
 
% 膨胀
out{end+1} = imdilate(in,strel('sphere', 2));
 
% 显示图像
title_ = {'(a)大小为448*425像素的灰度级X射线图像','(b)使用半径为2个像素的圆盘形结构元对图像的腐蚀结果','(c)用相同结构元对图像的膨胀结果'};
figure;
for i = 1:length(out)
    subplot(1,3,i);
    imshow(out{i},[]);
    title(title_{i});
end

9.4 实验结果

在这里插入图片描述


十、形态学:灰度图像 — 开、闭操作 P431

10.1 实验内容

灰度图像关于开操作与闭操作的实验

10.2 文件目录结构

在这里插入图片描述

10.3 Matlab代码

% 灰度图像关于开操作与闭操作的实验 P431
close all;clear all;clc;
% 读入图像
in = imread('Fig0937(a)(ckt_board_section).tif');
 
% 开操作
out = {in};
out{end+1} = imopen(in,strel('sphere', 3));
 
% 闭操作
out{end+1} = imclose(in,strel('sphere', 5));
 
% 显示图像
title_ = {'(a)一幅大小为448*425像素的灰度级X射线图像','(b)使用半径为3个像素的圆盘形结构元得到的开操作结果','(c)使用半径为5个像素的圆盘形结构元得到的闭操作结果'};
figure;
for i = 1:length(out)
    subplot(1,3,i);
    imshow(out{i},[]);
    title(title_{i});
end

10.4 实验结果

在这里插入图片描述


十一、形态学:灰度图像 — 形态学平滑 P432

11.1 实验内容

灰度图像形态学平滑实验

11.2 文件目录结构

在这里插入图片描述

11.3 Matlab代码

% 灰度图像形态学平滑实验 P432
close all;clear all;clc;
% 读入图像
in = imread('Fig0938(a)(cygnusloop_Xray_original).tif');
 
% 不同尺寸的开闭操作
out = {in};
r = [1,3,5];
for i = 1:length(r)
    % 开操作,去除小亮点
    temp = imopen(out{i},strel('sphere', r(i)));
    % 闭操作,填补小黑点
    out{end+1} = imclose(temp,strel('sphere', r(i)));
end
 
% 显示图像
title_ = {'(a)原图','(b)使用半径为1的圆盘型结构元对原图像执行开操作和闭操作的结果','(c)使用半径为3的圆盘型结构元对原图像执行开操作和闭操作的结果','(d)使用半径为5的圆盘型结构元对原图像执行开操作和闭操作的结果'};
figure;
for i = 1:length(out)
    subplot(1,4,i);
    imshow(out{i},[]);
    title(title_{i});
end
 

11.4 实验结果

在这里插入图片描述


十二、形态学:灰度图像 — 形态学梯度 P432

12.1 实验内容

灰度图像形态学梯度实验

12.2 文件目录结构

在这里插入图片描述

12.3 Matlab代码

% 灰度图像形态学梯度实验 P432
close all;clear all;clc;
% 读入图像
in = imread('Fig0939(a)(headCT-Vandy).tif');
 
% 膨胀
out = {in};
out{end+1} = imdilate(in,strel('disk', 1));
 
% 腐蚀
out{end+1} = imerode(in, strel('disk', 1));
 
% 梯度
out{end+1} = out{end-1} - out{end};
 
% 显示图像
title_ = {'(a)原图','(b)膨胀的结果','(c)腐蚀的结果','(d)形态学梯度'};
figure;
for i = 1:length(out)
    subplot(1,4,i);
    imshow(out{i},[]);
    title(title_{i});
end
 

12.4 实验结果

在这里插入图片描述


十三、形态学:灰度图像 — 顶帽变换 P433

13.1 实验内容

灰度图像的顶帽变换实验

13.2 文件目录结构

在这里插入图片描述

13.3 Matlab代码

% 灰度图像的顶帽变换实验 P433
close all;clear all;clc;
% 读入图像
in = imread('Fig0940(a)(rice_image_with_intensity_gradient).tif');
% 阈值处理
out = {in};
out{end+1} = in>=(255*graythresh(in));
 
% 开操作
out{end+1} = imopen(out{1}, strel('disk', 40));
 
% 顶帽变换(得到开操作删除的物体图像)
out{end+1} = imsubtract(out{1},out{end});
 
% 顶帽变换图像的阈值处理
out{end+1} = out{end}>=(255*graythresh(out{end}));
 
% 显示图像
title_ = {'(a)大小为 600 * 600 的原图像','(b)阈值处理后的图像','(c)使用半径为40的圆盘型结构元对图(a)进行开操作','(d)顶帽变换(获取被开操作删除的物体图像)','(e) 顶帽变换的阈值处理图像'};
figure;
for i = 1:length(out)
    subplot(2,3,i);
    imshow(out{i});
    title(title_{i});
end

13.4 实验结果

在这里插入图片描述


十四、形态学:灰度图像 — 纹理分割 P435

14.1 实验内容

灰度图像纹理分割实验

14.2 文件目录结构

在这里插入图片描述

14.3 Matlab代码

% 灰度图像纹理分割实验 P434
close all;clear all;clc;
% 读入图像
in = imread('Fig0943(a)(dark_blobs_on_light_background).tif');
 
% 闭操作去除小圆点
out = {in};
out{end+1} = imclose(out{1},strel('disk',30));
 
% 开操作连接大圆点的间隙
out{end+1} = imopen(out{end},strel('disk',60));
 
% 形态学梯度找出边界
boundary = imdilate(out{end},strel('disk', 1)) - imerode(out{end}, strel('disk', 1));
 
% 边界叠加到原图
out{end+1} = out{1} + boundary;
 
% 显示图像
title_ = {'(a)原图','(b)对图(a)执行闭操作后删除小斑点的图像','(c)对图(b)执行开操作后删除了打扮电建的亮间隔的图像','(d)将图(c)中两个区域的边界叠加到原图像上后的结果'};
figure;
for i = 1:length(out)
    subplot(1,4,i);
    imshow(out{i},[]);
    title(title_{i});
end
 
 

14.4 实验结果

在这里插入图片描述


十五、形态学:灰度图像 — 形态学重建 P437

15.1 实验内容

灰度图进行形态学重建的实验

15.2 文件目录结构

在这里插入图片描述

15.3 Matlab代码

% 灰度图进行形态学重建的实验 P437
close all;clear all;clc;
% 读入图像
f = imread('Fig0944(a)(calculator).tif');
subplot(3,3,1),imshow(f);  
title('(a)原图像');    
f_obr=imreconstruct(imerode(f,ones(1,71)),f);  
subplot(3,3,2),imshow(f_obr);  
title('(b)重建的开操作');   
f_o=imopen(f,ones(1,71));    
subplot(3,3,3),imshow(f_o);  
title('(c)开操作');    
f_thr=imsubtract(f,f_obr);    %顶帽重构
subplot(3,3,4),imshow(f_thr);  
title('(d)重建的顶帽操作');  
f_th = imsubtract(f,f_o);    %标准顶帽运算,方便比较
subplot(3,3,5),imshow(f_th);  
title('(e)顶帽操作');  
g_obr=imreconstruct(imerode(f_thr,ones(1,11)),f_thr);  
subplot(3,3,6),imshow(g_obr);  
title('(f)用水平线对(b)经开运算后重建图');   
g_obrd=imdilate(g_obr,ones(1,21));  
subplot(3,3,7),imshow(g_obrd);  
title('(g)使用水平线对(f)进行膨胀');  
f2=min(g_obrd,f_thr);  
subplot(3,3,8),imshow(f2);  
title('(h)图(d)和图(g)的最小操作');  
f3=imreconstruct(f2,f_thr);  
subplot(3,3,9),imshow(f3);  
title('(i)最后的重建结果');  

15.4 实验结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ModelBulider

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值