How to create a binary mask

75 visualizzazioni (ultimi 30 giorni)
Elysi Cochin
Elysi Cochin il 12 Gen 2022
Modificato: Elysi Cochin il 17 Gen 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.

Risposta accettata

Image Analyst
Image Analyst il 13 Gen 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 Commenti
Elysi Cochin
Elysi Cochin il 13 Gen 2022
Sir please can you show how the mask is obtained using lower threshold and higher threshold
Image Analyst
Image Analyst il 13 Gen 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');

Accedi per commentare.

Più risposte (1)

KSSV
KSSV il 12 Gen 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 Commenti
Elysi Cochin
Elysi Cochin il 12 Gen 2022
when we use imbinarize we get the green outline, is it possible to get the red outline
yanqi liu
yanqi liu il 13 Gen 2022
yes,sir,may be use multi threshold,if possible,may be upload this origin image file

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by