Indicates whether a large noise should be ignored during extraction.
public bool IgnoreLargeNoise {get; set;} @property (nonatomic, assign) BOOL ignoreLargeNoise; public boolean getIgnoreLargeNoise();public void setIgnoreLargeNoise(boolean booleanValue);
public:property bool IgnoreLargeNoise{bool get()void set(bool value)}
IgnoreLargeNoise # get and set (ExtractObjectsCommand)
true to ignore the large noise when extracting the objects; otherwise, false. The default value is false.
The threshold for the large noise can be configured using LargeNoiseThreshold.
import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.Collection;import java.util.Collections;import java.util.Iterator;import org.junit.*;import org.junit.runner.JUnitCore;import org.junit.runner.Result;import org.junit.runner.notification.Failure;import static org.junit.Assert.*;import leadtools.*;import leadtools.codecs.*;import leadtools.imageprocessing.FillCommand;import leadtools.imageprocessing.core.*;import leadtools.internal.Tuple;public void extractObjectsCommandUseMultiColorsExample() {final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";RasterCodecs codecs = new RasterCodecs();// Load the original imageRasterImage inputImage = codecs.load(combine(LEAD_VARS_IMAGES_DIR, "demoicr2.tif"));File output = new File(combine(LEAD_VARS_IMAGES_DIR, "demoicr2.tif"));assertTrue(output.exists());// Setup the extraction optionsTuple<String, RasterColor>[] colors = new Tuple[3];colors[0] = Tuple.create("DarkGray", new RasterColor(30, 30, 30));colors[1] = Tuple.create("DarkGreen", new RasterColor(41, 108, 70));colors[2] = Tuple.create("LightRed", new RasterColor(200, 68, 65));ExtractObjectsCommand command = new ExtractObjectsCommand();command.setDetectChildren(true);command.setEightConnectivity(true);command.setIgnoreSmallNoise(true);command.setOutline(true);command.setSmallNoiseThreshold(5);// Filter out noise smaller than 5x5 pixelscommand.setUseMultiColors(true);ExObjColorInfo[] exColors = new ExObjColorInfo[colors.length];for (int i = 0; i < colors.length; i++) {exColors[i] = new ExObjColorInfo();exColors[i].setColor(colors[i].getItem2());exColors[i].setThreshold(50);}// Extract the objectscommand.run(inputImage);ExObjData data = command.getData();// Put objects into one list for processing all at onceArrayList<ExObjObject> objects = new ArrayList<ExObjObject>();Iterator<ExObjResult> it = data.iterator();while (it.hasNext()) {objects.addAll(it.next().getObjects());}// Setup the region optionsExObjRegionOptions regionOptions = new ExObjRegionOptions();regionOptions.setHorizontal(true);// Calculate each object's regiondata.calculateRegion(objects, regionOptions);// Create an output imageRasterImage outputImage = RasterImage.create(inputImage.getWidth(), inputImage.getHeight(), 24,inputImage.getXResolution(), RasterColor.WHITE);// Extract each color to a separate imageint colorIndex = -1;for (ExObjResult result : data) {colorIndex++;// Fill the output image with whitenew FillCommand(RasterColor.WHITE).run(outputImage);// Populate the output image with each object's regionfor (ExObjObject ob : result.getObjects()) {for (ExObjSegment segment : ob.getRegionHorizontal()) {// Update the region to the current segmentoutputImage.addRectangleToRegion(null, segment.getBounds(), RasterRegionCombineMode.SET);// Fill the region with the current colornew FillCommand(colors[colorIndex].getItem2()).run(outputImage);}}// Clear the output image's regionoutputImage.makeRegionEmpty();// Save the output imagecodecs.save(outputImage,combine(LEAD_VARS_IMAGES_DIR, "ExtractObjectsMultiColors_" + colors[colorIndex].getItem1() + ".png"),RasterImageFormat.PNG, 0);}System.out.println("Command run and image saved to: " + combine(LEAD_VARS_IMAGES_DIR, "ExtractObjects.png"));assertTrue(new File(combine(LEAD_VARS_IMAGES_DIR, "ExtractObjects.png")).exists());outputImage.dispose();data.dispose();inputImage.dispose();codecs.dispose();}
using Leadtools;using Leadtools.Codecs;using Leadtools.ImageProcessing;using Leadtools.ImageProcessing.Core;public void ExtractObjectsCommandUseMultiColorsExample(){using (RasterCodecs codecs = new RasterCodecs())// Load the original imageusing (RasterImage inputImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "unwarp1.jpg"))){// Setup the extraction optionsTuple<string, RasterColor>[] colors = new Tuple<string, RasterColor>[]{Tuple.Create("DarkGray", new RasterColor(30, 30, 30)),Tuple.Create("DarkGreen", new RasterColor(41, 108, 70)),Tuple.Create("LightRed", new RasterColor(200, 68, 65))};ExtractObjectsCommand command = new ExtractObjectsCommand(){ColorInfo = colors.Select(c => new ExObjColorInfo(){Color = c.Item2,Threshold = 50}).ToArray(),DetectChildren = true,EightConnectivity = true,IgnoreSmallNoise = true,Outline = true,SmallNoiseThreshold = 2, // Filter out noise smaller than 2x2 pixelsIgnoreLargeNoise = true,LargeNoiseThreshold = 950, // Filter out noise larger than 950 pixelsUseMultiColors = true,ReportIgnored = true,};// Extract the objectscommand.Run(inputImage);using (ExObjData data = command.Data){// Put objects into one list for processing all at once, and count the noiseList<ExObjObject> objects = new List<ExObjObject>();int smallNoiseCount = 0, largeNoiseCount = 0;foreach (ExObjResult result in data){objects.AddRange(result.Objects);if (result.SmallNoise != null)smallNoiseCount += result.SmallNoise.Count;if (result.LargeNoise != null)largeNoiseCount += result.LargeNoise.Count;}Console.WriteLine($"Small Noise Count: {smallNoiseCount}");Console.WriteLine($"Large Noise Count: {largeNoiseCount}");// Setup the region optionsExObjRegionOptions regionOptions = new ExObjRegionOptions(){Horizontal = true};// Calculate each object's regiondata.CalculateRegion(objects, regionOptions);// Create an output imageusing (RasterImage outputImage = RasterImage.Create(inputImage.Width, inputImage.Height, 24, inputImage.XResolution, RasterColor.White)){// Extract each color to a separate imageint colorIndex = -1;foreach (ExObjResult result in data){colorIndex++;// Fill the output image with whitenew FillCommand(RasterColor.White).Run(outputImage);// Populate the output image with each object's regionforeach (ExObjObject @object in result.Objects)foreach (ExObjSegment segment in @object.RegionHorizontal){// Update the region to the current segmentoutputImage.AddRectangleToRegion(null, segment.Bounds, RasterRegionCombineMode.Set);// Fill the region with the current colornew FillCommand(colors[colorIndex].Item2).Run(outputImage);}// Clear the output image's regionoutputImage.MakeRegionEmpty();// Save the output imagecodecs.Save(outputImage, Path.Combine(LEAD_VARS.ImagesDir, $"ExtractObjectsMultiColors_{colors[colorIndex].Item1}.png"), RasterImageFormat.Png, 0);}}}}}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
