Advertisement

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

阅读量:
在这里插入图片描述

文章目录

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

    • 1.1 实验任务
    • 1.2 文件组织架构
    • 1.3 Matlab程序
    • 1.4 运行结果
  • 二、Mathematical morphology: Binary image dilation P407

实验内容与步骤
实验数据文件目录结构
Matlab代码实现
实验结果展示与分析

  • 第三章 形态学运算:基于二值图像的开运算与闭运算(参考文献:P410)

    • 实验流程描述了该算法的具体实现步骤
    • 文件组织架构设计遵循模块化原则以确保数据处理效率
    • 软件实现部分采用了Matlab平台进行开发以保证功能完整性
    • 运行结果展示通过可视化分析验证了算法的有效性
  • 四、Morphology: Binary Images - Boundary Extraction (P413)

    • 4.1 Experimental Protocol
    • 4.2 File Organization Structure
    • 4.3 Matlab Scripts
    • 4.4 Experimental Outcomes
  • 第五章 形态学:二值图像 —— 填充孔隙 P414

    • 5.1 实验内容概述
    • 5.2 文件目录组织形式
    • 5.3 Matlab程序实现方案
    • 5.4 实验结果展示与分析
  • 六、形态学:二值图像 - 利用开操作进行重建(见第424页)

    • 6.1 实验任务描述
      • 6.2 文件组织架构
      • 6.3 基于Matlab的程序实现
      • 6.4 实验运行结果分析
  • 第七章、数学形态学:黑白图像 --- 孔洞填充(第425页)

    • 7.1 实验项目
    • 7.2 文件系统架构
    • 7.3 Matlab源代码
    • 7.4 运行结果

第八章 形态学:二值图像---边界清除(第426页)
其中
7.1 实验的具体内容
7.2 基于Matlab的代码实现
7.3 数据文件的组织结构
7.4 实验结果分析

第九章形态学研究:灰度图像---腐蚀与膨胀(第429页)

  • 十章 形态学分析:灰度级数及其开闭运算(见P431)

    • 第十章实验任务描述
    • 第十章文件组织架构
    • 第十章 Matlab编程实现
    • 第十章实验结果展示
  • 十一、形态学:基于灰度图像进行形态学处理 P432

    • 第十一章 实验任务描述
    • 第十一章 文件存储结构安排
    • 第十一章 Matlab程序代码实现
    • 第十一章 实验运行结果记录
  • 十二、形态学分析:灰度级图像 --- 形态学梯度 P_{432}

    • 第十二章第一节 实验任务描述
      • 第十二章第二节 文件组织架构
        • 第十二章第三节 Matlab程序实现
          • 第十二章第四节 实验输出分析
  • 十三、数学形态学:灰度级数 --- 开闭运算 P433

    • 13.1 实验方案设计
    • 13.2 数据文件组织架构
    • 13.3 程序源代码编写
    • 13.4 运行结果记录
  • 十四、形态学分析:基于灰度级数的纹理分割(P435)

    • 第十四章 实验设计
      • 第一节 数据组织结构
      • 第二节 软件实现方案
      • 第三节 结果展示与分析
  • 十五、数学形态学:灰度图像(Morphological Reconstruction) P437

    • 第15章 实验任务描述
      • 第一节 数据文件组织架构设计说明
      • 第二节 基于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 实验结果

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~