Ein anderer Weg, wenn Sie nicht wollen, bwareaopen
zu verwenden ist regionprops
zu verwenden, und zwar mit den Area
und PixelIdxList
Attribute, filtern Sie die Elemente aus, die in den Bereich nicht entsprechen Bereich Sie wollen, dann die übrigen Elemente verwenden und Erstelle eine neue Maske. Area
erfasst die Gesamtfläche jeder Form, während PixelIdxList
die Spalte große lineare Indizes der Positionen innerhalb des Bildes erfasst, die zu jeder Form gehören. Sie würden verwenden, um die Area
Attribut Ihre Filterung durchzuführen, während Sie das PixelIdxList
Attribut verwenden würde ein neues Ausgabebild und setzen diese Standorte true
, die innerhalb des gewünschten Bereichs Bereich zu schaffen:
% Specify lower and upper bounds
LB = 30;
UB = 50;
% Run regionprops
s = regionprops(I, 'Area', 'PixelIdxList');
% Get all of the areas for each shape
areas = [s.Area];
% Remove elements from output of regionprops
% that are not within the range
s = s(areas >= LB & areas <= UB);
% Get the column-major locations of the shapes
% that have passed the check
idx = {s.PixelIdxList};
idx = cat(1, idx{:});
% Create an output image with the passed shapes
Iout = false(size(I));
Iout(idx) = true;
bitte ein Beispiel für eine Eingabe zur Verfügung stellen Bild, mit weiterer Erläuterung bezüglich der gewünschten Ausgabe. – drorco