填充图像轮廓Matlab实现

填充图像轮廓Matlab实现

一、内容

我们很多时候需要做填充轮廓,特别是做图像掩模的时候,最近做一个超声的练习,因为比赛方提供的模板(金标准)并不是我们分割所感兴趣的样式,他只勾画出了轮廓,因此我们需要对其进行填充,没有图像处理的经验,于是前前后后捣鼓了好几种方法,最后找到了Matlab的一种方法。

Matlab函数imfill简介

函数功能: 该函数用于填充图像区域和“空洞”。

语法格式:
BW2 = imfill(BW)
这种格式将一张二值图像显示在屏幕上, 允许用户使用鼠标在图像上点几个点, 这几个点围成的区域即要填充的区域。要以这种交互方式操作, BW必须是一个二维的图像。用户可以通过按Backspace键或者Delete键来取消之前选择的区域;通过shift+鼠标左键单击或者鼠标右键单击或双击可以确定选择区域。

[BW2,locations] = imfill(BW)
这种方式, 将返回用户的取样点索引值。注意这里索引值不是选取样点的坐标。

BW2 = imfill(BW,locations)
这种格式允许用户编程时指定选取样点的索引。locations是个多维数组时, 数组每一行指定一个区域。

BW2 = imfill(BW,‘holes’)
填充二值图像中的空洞区域。 如, 黑色的背景上有个白色的圆圈。 则这个圆圈内区域将被填充。
I2 = imfill(I)
这种调用格式将填充灰度图像中所有的空洞区域。

二、代码

clc;
clear;
path = 'C:\Users\小金毛\Desktop\超生婴儿数据\mask\';
img_list = dir(path);
fill_path = 'C:\Users\小金毛\Desktop\超生婴儿数据\mask1\';

% 循环遍历
for i = 3:length(img_list)
orig_full_path = [path img_list(i).name];
img = imread(orig_full_path);
% 二值化
img = im2bw(img);
% 孔洞填充
img = imfill(img,'holes');
% 保存
save_path = [fill_path img_list(i).name];
imwrite(img, save_path);
end

三、结果

1.原始数据图像

填充图像轮廓Matlab实现_第1张图片

2.结果图像

填充图像轮廓Matlab实现_第2张图片

你可能感兴趣的:(matlab)