How to create a binary mask

69 vues (au cours des 30 derniers jours)
Elysi Cochin
Elysi Cochin le 12 Jan 2022
Modifié(e) : Elysi Cochin le 17 Jan 2022
The attached images are my adaptive threshold output. When i use imbinarise, i get completely black pixels. Please can someone help me to create a binary mask from the attached output images.

Réponse acceptée

Image Analyst
Image Analyst le 13 Jan 2022
Try adjusting the threshold value T in imbinarize() until you get the threshold you want:
BW = imbinarize(I,T) creates a binary image from image I using the threshold value T. T can be a global image threshold, specified as a scalar luminance value, or a locally adaptive threshold, specified as a matrix of luminance values.
  6 commentaires
Elysi Cochin
Elysi Cochin le 13 Jan 2022
Sir please can you show how the mask is obtained using lower threshold and higher threshold
Image Analyst
Image Analyst le 13 Jan 2022
% Demo by Image Analyst
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 = 22;
markerSize = 40;
%--------------------------------------------------------------------------------------------------------
% READ IN IMAGE
folder = [];
baseFileName = 'im2.bmp';
fullFileName = fullfile(folder, baseFileName);
% Check if file exists.
if ~exist(fullFileName, 'file')
% The file doesn't exist -- didn't find it there in that folder.
% Check the entire search path (other folders) for the file by stripping off the folder.
fullFileNameOnSearchPath = baseFileName; % No path this time.
if ~exist(fullFileNameOnSearchPath, 'file')
% Still didn't find it. Alert user.
errorMessage = sprintf('Error: %s does not exist in the search path folders.', fullFileName);
uiwait(warndlg(errorMessage));
return;
end
end
grayImage = imread(fullFileName);
% 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(grayImage)
if numberOfColorChannels > 1
% It's not really gray scale like we expected - it's color.
% Extract the blue channel.
grayImage = grayImage(:, :, 3);
end
%--------------------------------------------------------------------------------------------------------
% Display the image.
subplot(2, 2, 1);
imshow(grayImage);
impixelinfo;
axis('on', 'image');
title('Original Gray Scale Image', 'FontSize', fontSize, 'Interpreter', 'None');
hold on
% Maximize window.
g = gcf;
g.WindowState = 'maximized'
drawnow;
%--------------------------------------------------------------------------------------------------------
% Get a histogram
subplot(2, 2, 2);
imhist(grayImage);
grid on;
title('Histogram of Original Gray Scale Image', 'FontSize', fontSize, 'Interpreter', 'None');
%--------------------------------------------------------------------------------------------------------
% Set thresholds for each level.
thresholdValue1 = 149
xline(thresholdValue1, 'Color', 'r', 'LineWidth', 2);
thresholdValue2 = 169
xline(thresholdValue2, 'Color', 'r', 'LineWidth', 2);
%--------------------------------------------------------------------------------------------------------
% Binarize the image.
mask1 = grayImage > thresholdValue1;
% Display mask image.
subplot(2, 2, 3);
imshow(mask1);
impixelinfo;
axis('on', 'image');
drawnow;
caption = sprintf('Threshold = %d pixels', thresholdValue1);
title(caption, 'FontSize', fontSize, 'Interpreter', 'None');
%--------------------------------------------------------------------------------------------------------
% Binarize the image.
mask2 = grayImage > thresholdValue2;
% Display mask image.
subplot(2, 2, 4);
imshow(mask2);
impixelinfo;
axis('on', 'image');
drawnow;
caption = sprintf('Threshold = %d pixels', thresholdValue2);
title(caption, 'FontSize', fontSize, 'Interpreter', 'None');

Connectez-vous pour commenter.

Plus de réponses (1)

KSSV
KSSV le 12 Jan 2022
It looks like imbinarize is working fine.
I = imread('https://in.mathworks.com/matlabcentral/answers/uploaded_files/860265/im3.bmp') ;
imshow(I)
I1 = imbinarize(I) ;
imshow(I1)
  3 commentaires
Elysi Cochin
Elysi Cochin le 12 Jan 2022
when we use imbinarize we get the green outline, is it possible to get the red outline
yanqi liu
yanqi liu le 13 Jan 2022
yes,sir,may be use multi threshold,if possible,may be upload this origin image file

Connectez-vous pour commenter.

Catégories

En savoir plus sur Get Started with Image Processing Toolbox dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by