Clean | Gets rid of small noise. Built into most of the thresholding operations. |
Close Holes | Fills small holes inside binary regions. Can choose number of iterations, used 10 here on a binary generated by Threshold with no additional postprocessing and 25 iterations. |
Complement | Inverts the binary. |
Fill Holes | Fills holes in the binary layer. Built into most of the thresholding options. |
Separate Objects | Breaks binary objects up into smaller ones. Built into most of the thresholding operations. |
Separate Bright | Separates binary objects, using both binary and intensity layers. For bright objects on dark backgrounds. |
Separate Dark | Separates binary objects, using both binary and intensity layers. For dark objects on bright backgrounds. |
Smooth | Smooths out binary objects. Built into most of the thresholding options. |
Open | Uses Erode then Dilate, removing small objects. |
Close | Uses Dilate then Erode, connecting objects and filling holes. |
Erode | Shrinks binary objects. |
Dilate | Expands binary objects. |
Circular Open | Gets rid of binary objects under a certain radius, used 5 pixels here. |
Circular Close | Fills in holes smaller than the specified radius, used 10 pixels. Effect is most obvious on single cells. |
Circular Erode | Erode using a circle as its kernel instead of a matrix. |
Circular Dilate | Dilate using a circle as its kernel instead of a matrix. |
Linear Open/Close/Erode/Dilate | Open/close/erode/dilate using a linear matrix as its kernel. Can select matrix and number of iterations. Will result in some lines. Linear Open’s effect on a cell with 15 iterations and a horizontal matrix shown. |
Contour | Makes binary objects into 1-pixel contours. |
Centers | Puts a pixel at the center of binary objects. |
Centroids | Puts a pixel at the centroid of binary objects, which differs from Centers because it takes the level of intensity underneath the binary layer into account and weights the centroid towards more intense areas. Can specify if signal is bright or dark. |
Connect Objects | Connects objects less than the specified distance apart with lines. Used 100 px (any smaller did not show an effect) and it took a VERY long time. |
Convex Hull | Expands concave objects to make them convex. |
Homotopic Marking | Represents objects with single points, using a different method than center or centroid. |
Pruning | Debranches objects made by skeletonizing functions. Can choose number of iterations. |
Ultimate Erosion | Uses Erode until one more iteration would remove objects. Can set how many iterations to keep. |
Medial Axis | Seems to look for midlines of objects, result similar to skeletonizing. Increasing endlines suppression will decrease branches. |
Distance Function | Uses binary and original image to create a floating point layer that shows each pixel’s distance to the background pixels. |
Granulometry | Adds a granulometry floating point layer, which shows the grain size of binary objects. |
Thickening | Uses dilate to enlarge objects but prevents them from touching each other. until objects touch each other. Increasing parameter increases how much objects grow. Used Color by ID to show how objects remain separate and 30 iterations. |
Zones of Influence | Puts borders at the midpoints between objects. |
Fast Exoskeleton | Faster algorithm for creating zones influence (but zones of influence does not have any speed issues). |
Grow Objects | Grows objects by specified radius but prevents them from touching. Will make objects more convex. Used 15 px here. Might be useful for making borders smoother. |
Grow Regions | Takes a binary and color input. Extends binary objects to the specified intensity on the color layer. Can choose bright or dark regions. Used a lower threshold of 40 for bright objects. Might be useful if thresholding had to miss some parts of cells because of noise because it makes sure areas are connected to already detected objects. |
Watershed | “Floods” image starting from either bright or dark regions, taking a binary and an RGB input. Essentially the inverse of zones of influence, ended up with a layer of {1} with 1-pixel wide {0} borders between regions using from bright to dark and the same but showing cell edges using from dark to bright. Will need to use Complement to see anything useful. |
From dark regions 🡪 complement From bright regions 🡪 complement | |
Make Inside & Ring | Creates 2 new binary layers from the input: the inside of objects and the border. Can also expand objects’ radius with Grow by and specify ring width. Used grow by 30 and width 10 px here. |
Skeletonize | Skeletonizes binary objects, which preserves their general shape while removing most of the area. |
Detect Branching | Puts single binary pixels at branch points of skeleton. |
Detect Endings | Puts single pixels at the end of branches. |
Cut Branches | Gets rid of branches smaller than the specified length. |
Connect Free Endings | Uses a binary skeleton and RGB layer as inputs. Supposed to connect branches, with sensitivity determined by Connections input, but did not get it to work very well, and the algorithm was very time-consuming. |
Vanish Small Objects | Gets rid of small binary skeleton objects using an RGB layer as comparison. Can specify diameter of objects to remove, as well as intensity threshold that determines if a small object is kept (because it has a high signal-noise ratio and is probably real data). Could not get it to work. |
Remove Short Filaments | Shortens branch ends by the specified number of pixels. |
Make 4-Connective | Changes pixels from 8-connected (pixels touching either adjacent or diagonally) to 4-connected (adjacent pixels only considered connected) by adding some. |
Make 8-Connective | Switches connectivity from 4-connected to 8-connected by removing pixels. |
Filter Objects | A filter for removing binary objects that also takes an RGB layer as an input. Lots of filter options to choose from, such as diameter, convexity, area, and perimeter. |
Select Objects | Takes a table and a binary layer and selects objects that are represented in the table. |
Delete Objects | Similar to Select Objects, but removes objects represented in the table. |
(Remove Objects) Touching Borders | Gets rid of binary objects that touch the image border. |
(Remove Objects) Touching Frame | Gets rid of objects the specified distance or less from the image borders. Can change mode to keep objects touching the limit or not as well as choose from units. |
Insert Line/Parallel Lines/Circle/Ellipse/Rectangle/Frame/etc. | Inserts a binary object. Can specify parameters/dimensions. Can also select mode: copy (deletes input layer), logical OR/AND, or subtract. |
Color by ID | Colors the binary objects in the layer. |
Color by Value | Using a table and a binary layer, lets you color code binary objects by parameters. To use it, you have to go into the menu and select the columns. Clicking the gear will help create value ranges. Color coded by perimeter here. |
Renumber Objects | Using a binary layer and a reference, reassigns object IDs in the binary layer to what they were in the reference layer. For example, if remove objects touching borders is used on a binary layer, a different object will have ID number 20 than the original layer. However, if Renumber Objects is used with the original layer as reference, the original object with ID 20 will have ID 20. |
Renumber Using Table | Another node for renumbering objects to their IDs from earlier in processing but takes a binary layer and a table. Must select a column to pull object IDs from. |
TMA Renumber | Object numbering scheme for tissue microarray cores. Detects a square grid of cores and numbers objects based on position. Different from default binary numbering because it skips IDs of unfilled positions. |
Add Borders/Crop/Change Canvas/Fit Size/Move/Resize to Ref/Rotate | Work like the Transformations section of preprocessing, but for a binary layer. |
JS Preprocess/JS Preprocess to Float | Open a JavaScript interface for coding your own image operations. Take RGB inputs by default but can change inputs to as many binary channels as needed. The only difference between the two is the data type of the output. |