Effacer les filtres
Effacer les filtres

how to draw boundaries for all the contours in matlab

2 vues (au cours des 30 derniers jours)
rohith bharadwaj
rohith bharadwaj le 18 Fév 2018
Commenté : rohith bharadwaj le 18 Fév 2018
I have tried drawing the boundaries of the figure cap1 using Matlab code attached. I'm able to draw boundary only for one contour and then I'm getting an error. can u please help with it. I have to fill and draw boundaries for all the contours present
  2 commentaires
rohith bharadwaj
rohith bharadwaj le 18 Fév 2018
help please
rohith bharadwaj
rohith bharadwaj le 18 Fév 2018
i have to draw boundaries for all white patches

Connectez-vous pour commenter.

Réponses (1)

Image Analyst
Image Analyst le 18 Fév 2018
Try this:
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 = 20;
rgbImage = imread('cap1.png');
% Get the dimensions of the image.
% numberOfColorChannels should be = 1 for a gray scale image, and 3 for an RGB color image.
[rows, columns, numberOfColorChannels] = size(rgbImage);
if numberOfColorChannels > 1
% It's not really gray scale like we expected - it's color.
% Use weighted sum of ALL channels to create a gray scale image.
% grayImage = rgb2gray(rgbImage);
% ALTERNATE METHOD: Convert it to gray scale by taking only the green channel,
% which in a typical snapshot will be the least noisy channel.
grayImage = rgbImage(:, :, 3); % Take blue channel.
else
grayImage = rgbImage; % It's already gray scale.
end
% Get binary image.
binaryImage = grayImage > 150;
% Display the image.
imshow(binaryImage, []);
title('Binary Image', 'FontSize', fontSize, 'Interpreter', 'None');
axis on;
%------------------------------------------------------------------------------
% Set up figure properties:
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0, 0.04, 1, 0.96]);
% 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')
% bwboundaries() returns a cell array, where each cell contains the row/column coordinates for an object in the image.
% Plot the borders of all the coins on the original grayscale image using the coordinates returned by bwboundaries.
title('Outlines, from bwboundaries()', 'FontSize', fontSize);
axis image; % Make sure image is not artificially stretched because of screen's aspect ratio.
hold on;
boundaries = bwboundaries(binaryImage);
numberOfBoundaries = size(boundaries, 1);
for k = 1 : numberOfBoundaries
thisBoundary = boundaries{k};
plot(thisBoundary(:,2), thisBoundary(:,1), 'r', 'LineWidth', 2);
end
hold off;
  1 commentaire
rohith bharadwaj
rohith bharadwaj le 18 Fév 2018
yes, but before drawing the boundary I want to fill the patch inside with white colour.

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by