IP Command
IP Commands specify an image processing (IP) operation (such as image cleanup, format conversion or feature detection) and are used to construct image IP Steps in an IP Profile. IP Commands are configured using an IP Step's Command property.
IP Commands are the core building blocks for image processing in Grooper. They define individual operations—such as cleaning, analyzing, or transforming images—that can be combined to create powerful, flexible workflows. This article explains what an IP Command is, how it is used, and how it fits into the broader context of Grooper’s image processing architecture, including IP Profiles and IP Groups.
These operations generally serve one of three purposes:
- Image cleanup to remove defects (such as those caused by a document scanner)
- Image cleanup to improve OCR results
- Image-based data collection, including Layout Data (such as table line locations, barcode information, and OMR checkbox states) as well as image features used for Visual classification.
What is an IP Command?
An IP Command is a configurable image processing operation in Grooper. Each command encapsulates a specific task, such as deskewing, binarization, color adjustment, or feature detection. IP Commands are designed to be modular, allowing users to select and configure the exact operations needed for their document and image processing requirements.
Key characteristics of IP Commands:
- Each IP Command specifies which pixel formats it supports (e.g., grayscale, color, binary). If an image does not match a supported format, the command is skipped.
- Some IP Commands modify the image, while others only analyze or detect features without changing the image data.
- Many IP Commands support diagnostic mode, which can generate additional output (such as diagnostic images or logs) to assist with configuration and troubleshooting.
How are IP Commands used?
IP Commands are not used in isolation. Instead, they are organized into sequences or hierarchies within IP Profiles, which define the overall image processing workflow. Each step in an IP Profile typically corresponds to a single IP Command, and steps are executed in order, with the output of one command serving as the input to the next.
IP Profiles and workflow organization
An IP Profile is the root container for defining and executing a sequence or hierarchy of image processing operations. It orchestrates the workflow by organizing IP Steps (each specifying an IP Command) into a configurable structure.
Features of IP Profiles:
- Support both simple linear pipelines and complex, conditionally branching workflows.
- Allow steps to be grouped into IP Groups for modularity, reusability, and logical organization.
- Enable conditional execution and flow control using expressions, so the workflow can adapt dynamically to image properties or results from previous operations.
- Execution order is based on a pre-order tree traversal, meaning items execute in the order they appear when the tree is fully expanded.
How IP Commands relate to IP Steps
In Grooper, IP Commands and IP Steps work together to define and execute image processing workflows.
- An IP Step represents a single, configurable image processing action within an IP Profile. Each IP Step is responsible for executing a specific IP Command.
- The IP Command assigned to an IP Step determines the actual operation performed—such as deskewing, binarization, or feature detection.
The relationship is direct:
- Each IP Step has a "Command" property, where you select and configure the desired IP Command.
- When the IP Step runs, it executes the assigned IP Command on the input image, using the command’s settings and logic.
- The result of the IP Command is returned by the IP Step and passed along to the next step in the workflow.
This design allows you to:
- Build processing pipelines by arranging multiple IP Steps, each with its own IP Command.
- Reorder, group, or conditionally execute steps to create both simple and complex workflows.
- Fine-tune each image processing operation by configuring the properties of the associated IP Command.
Example usage
To process an image, you might create an IP Profile containing the following steps:
- Deskew (IP Command: Deskew)
- Binarize (IP Command: Binarization)
- Remove noise (IP Command: Noise Removal)
- Detect features (IP Command: Feature Detection)
Each step is configured with its own parameters and can be conditionally executed based on image properties or previous results.
Supported pixel formats and diagnostics
Each IP Command defines its own list of supported pixel formats, accessible via the "Supported Pixel Formats" property. By default, all pixel formats are supported unless overridden by a specific command.
Some IP Commands generate diagnostic output when run in diagnostic mode. This may include before-and-after images, histograms, or log messages to help users understand the effect of the command and tune its parameters.
Derived Types
The following are all the derived IP Command types in Grooper. In parenthesis, you will find the commands type name in Grooper and its link to the Grooper Help page.
- Adjust Saturation (Grooper.IP.AdjustSaturation)
- Adjust Tint (Grooper.IP.AdjustTint)
- Analyze Photo (Grooper.Cloud.AnalyzePhoto)
- Auto Adjust Levels (Grooper.IP.AutoAdjustLevels)
- Auto Color Balance (Grooper.IP.AutoColorBalance)
- Auto Convert (Grooper.IP.AutoConvert)
- Auto Deskew (Grooper.IP.AutoDeskew)
- Auto Orient (Grooper.OCR.AutoOrient)
- Auto QA (Grooper.IP.AutoQA)
- Auto White Balance (Grooper.IP.AutoWhiteBalance)
- Barcode Detection (Grooper.IP.BarcodeDetection)
- Binarize (Grooper.IP.Binarize)
- Threshold (Grooper.IP.Threshold)
- Blank Page Detection (Grooper.IP.BlankPageDetect)
- Border Detect (Grooper.IP.BorderDetect)
- Auto Border Crop (Grooper.IP.AutoBorderCrop)
- Auto Border Invert (Grooper.IP.AutoBorderInvert)
- Box Detection (Grooper.IP.BoxDetection)
- Box Removal (Grooper.IP.BoxRemoval)
- Brightness Contrast (Grooper.IP.BrightnessContrast)
- Classify Image (Grooper.IP.ClassifyImage)
- Color Detection (Grooper.IP.ColorDetect)
- Color Dropout (Grooper.IP.ColorDropout)
- Color Stamp Detection (Grooper.IP.ColorStampDetection)
- Colorize (Grooper.IP.Colorize)
- Compute Moments (Grooper.IP.ComputeMoments)
- Contrast Stretch (Grooper.IP.ContrastStretch)
- Convert (Grooper.IP.Convert)
- Corner Detection (Grooper.IP.CornerDetect)
- Crop (Grooper.IP.Crop)
- Dilate Erode (Grooper.IP.DilateErode)
- Edge Detection (Grooper.IP.EdgeDetect)
- Execute Profile (Grooper.IP.ExecuteProfile)
- Extract Channel (Grooper.IP.ExtractChannel)
- Extract Features (Grooper.IP.ExtractFeatures)
- Extract Page (Grooper.IP.ExtractPage)
- Feature Dropout (Grooper.IP.FeatureDropout)
- Binary Dropout (Grooper.IP.BinaryDropout)
- Barcode Removal (Grooper.IP.BarcodeRemoval)
- Blob Removal (Grooper.IP.BlobRemoval)
- Border Fill Removal (Error - Report error to groopereducation@bisok.com)
- Halftone Removal (Grooper.IP.HalftoneRemoval)
- Hole Punch Removal (Grooper.IP.HolePunchRemoval)
- Speck Removal (Grooper.IP.SpeckRemoval)
- Scratch Removal (Grooper.IP.ScratchRemoval)
- Shape Removal (Grooper.IP.ShapeRemoval)
- Binary Dropout (Grooper.IP.BinaryDropout)
- Filter (Grooper.IP.Filter)
- Gamma Adjust (Grooper.IP.GammaAdjust)
- Histogram (Grooper.IP.Histogram)
- Hough Lines (Grooper.IP.HoughLines)
- Invert (Grooper.IP.Invert)
- Line Detection (Grooper.IP.LineDetection)
- Line Removal (Grooper.IP.LineRemoval)
- Measure Entropy (Grooper.IP.MeasureEntropy)
- Mirror (Grooper.IP.Mirror)
- Negative Region Removal (Grooper.IP.NegativeRegionRemoval)
- OCR Cleanup (Grooper.IP.OcrCleanup)
- Patch Code Detection (Grooper.IP.DetectPatchCodes)
- Posterize (Grooper.IP.Posterize)
- Projection Profile (Grooper.IP.ProjectionProfile)
- Randomize Defects (Grooper.IP.RandomizeDefects)
- Resize (Grooper.IP.Resize)
- Rotate (Grooper.IP.Rotate)
- Shade Removal (Grooper.IP.ShadeRemoval)
- Shape Detection (Grooper.IP.ShapeDetection)
- Solarize (Grooper.IP.Solarize)
- Sticky Note Detection (Grooper.IP.StickyNoteDetection)
- Swap Channels (Grooper.IP.SwapChannels)
- Undistort (Grooper.IP.Undistort)
- Warp (Grooper.IP.Warp)