How to fill edges only in Blob area

1 view (last 30 days)
Hash ir
Hash ir on 19 Feb 2017
Answered: Image Analyst on 22 Feb 2017
I am able to draw a blob inside an image and then i want to extend the blob until it hit's black line or edge,simple suggestions on how to do it?
for example i had a circle edge here black i want to extend red blob if hit to an edge then stop extending.note only fill those areas where i place these blob.

Answers (2)

Image Analyst
Image Analyst on 19 Feb 2017
What is that? It looks like a tomato worm or something. You can use imfill() to fill binary blobs. You don't have a binary image yet. And even if you did, there would be lots of regions that would fill and you'd end up with a pretty solid image. I think you need to do a better job on your initial segmentation.
  5 Comments
Image Analyst
Image Analyst on 21 Feb 2017
Sorry, I don't believe that if you applied imfill() to the top image, it would produce the bottom image. imfill() works on binary images. How did you get your Sobel image: from edge() or imgradient()?
Hash ir
Hash ir on 21 Feb 2017
Edited: Hash ir on 21 Feb 2017
thanks for the help.I think i cannot explain clear enough or there is some other issue.I changed the post i hope you can help me on what i wanted.

Sign in to comment.


Image Analyst
Image Analyst on 22 Feb 2017
Regarding your total change of image, see this code:
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 15;
%===============================================================================
% Get the name of the image the user wants to use.
baseFileName = 'red_spot.png';
% Get the full filename, with path prepended.
folder = pwd
fullFileName = fullfile(folder, baseFileName);
%===============================================================================
% Read in a demo image.
rgbImage = imread(fullFileName);
% Get the dimensions of the image. numberOfColorChannels should be = 3.
[rows, columns, numberOfColorChannels] = size(rgbImage);
% Display the original color image.
subplot(2, 2, 1);
imshow(rgbImage, []);
axis on;
caption = sprintf('Original RGB Color Image, %s', baseFileName);
title(caption, 'FontSize', fontSize, 'Interpreter', 'None');
% Set up figure properties:
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
% Get rid of tool bar and pulldown menus that are along top of figure.
set(gcf, 'Toolbar', 'none', 'Menu', 'none');
% Give a name to the title bar.
set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')
drawnow;
hp = impixelinfo(); % Set up status line to see RGB values when you mouse over the image.
% Extract the individual red, green, and blue color channels.
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
% Get a mask for the white pixels.
mask = redChannel == 255 & greenChannel == 255 & blueChannel == 255;
% Display the image.
subplot(2, 2, 2);
imshow(mask, []);
axis on;
caption = sprintf('Mask Image');
title(caption, 'FontSize', fontSize, 'Interpreter', 'None');
drawnow;
% Get rid of portion hitting the edges of the image.
mask = imclearborder(mask);
% Display the image.
subplot(2, 2, 3);
imshow(mask, []);
axis on;
caption = sprintf('Final Mask Image');
title(caption, 'FontSize', fontSize, 'Interpreter', 'None');
drawnow;
% Find the middle of the image
midRow = round(rows/2);
midCol = round(columns/2);
% Find the color of the red spot in the middle
r = redChannel(midRow, midCol);
g = greenChannel(midRow, midCol);
b = blueChannel(midRow, midCol);
% Make the mask pixels the same reddish color as in the original image.
redChannel(mask) = r;
greenChannel(mask) = g;
blueChannel(mask) = b;
% Recombine separate color channels into a single, true color RGB image.
rgbImage = cat(3, redChannel, greenChannel, blueChannel);
% Display the image.
subplot(2, 2, 4);
imshow(rgbImage, []);
axis on;
caption = sprintf('Final RGB Image');
title(caption, 'FontSize', fontSize, 'Interpreter', 'None');
drawnow;

Categories

Find more on Image Processing Toolbox in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!