How to use imfill() function to fill the interior of the boundary surface using Matlab?

24 次查看(过去 30 天)
Hi dear community members,
i am using flood fill operation to fill the interior. i have closed the boundary surface. There are no holes on the boundary surface but still, the interior cannot be filled.
I am using the following code. Please guide me where i am making mistake. The matrix A as a text file is already attached.
Regards.
interior_filled = imfill(A,'holes')
  1 个评论
M.S. Khan
M.S. Khan 2021-3-12
Is the imfill() function is not capable to fill the interior region? How come, boundary surface is closed and imfill() function is not applicable?

请先登录,再进行评论。

采纳的回答

Image Analyst
Image Analyst 2021-3-12
@M.S. Khan, try this:
% Demo by Image Analyst, March, 2021.
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clearvars;
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 16;
fprintf('Beginning to run %s.m ...\n', mfilename);
grayImage = importdata('Boundary_closed_1s_3s.txt');
subplot(2, 1, 1);
imshow(grayImage, []);
impixelinfo;
axis('on', 'image');
% Create a binary image.
binaryImage = grayImage ~= 0;
% Fill the object by scanning across all columns and
% drawing a line from the top-most pixel to the bottom-most pixel.
[rows, columns] = size(binaryImage);
for col = 1 : columns
% Find the top most pixel.
topRow = find(binaryImage(:, col), 1, 'first');
if ~isempty(topRow)
% If there is a pixel in this column, then find the lowest/bottom one.
bottomRow = find(binaryImage(:, col), 1, 'last');
% Fill from top to bottom.
binaryImage(topRow : bottomRow, col) = true;
end
end
interior_filled = binaryImage;
% interior_filled = imfill(binaryImage, 4, 'holes');
subplot(2, 1, 2);
imshow(binaryImage, []);
axis('on', 'image');
fprintf('Done running %s.m\n', mfilename);
  12 个评论
M.S. Khan
M.S. Khan 2021-3-19
Hi Dear Image Analyst, could you please share your feedback. I am waiting for your expert point of view. Regards!
M.S. Khan
M.S. Khan 2021-3-20
i think, the 'P' should be changed with respect to the shape of the object. i am trying how to handle it.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 3-D Volumetric Image Processing 的更多信息

产品


版本

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by