net.grelf.grip
Interface Blob

All Known Implementing Classes:
Blob_

public interface Blob

Representing the shape of a contiguous set of pixels which have been detected in an image.


Method Summary
 int area()
          Measure the area of the blob, as the total number of pixels in its rows.
 int[] brightness(java.awt.image.BufferedImage image)
          Measure the integrated detected brightness (NOT the average) in each channel
 PointFloat densityCentre(java.awt.image.BufferedImage im)
          Calculate centre of the blob with weighting from pixel densities (brightnesses).
 BlobFrame display(ImFrame srcFrame, BlobMeas meas)
          Display this blob magnified in the given frame.
 void drawBoundary(java.awt.image.BufferedImage image, int[] rgb)
          Draw the boundary of the blob in the given image with the given RGB levels.
 void drawBoundary(byte[][] mask, byte value)
          Draw the boundary of the blob in the mask array with the given value.
 void drawRegion(java.awt.image.BufferedImage image, int[] rgb)
          Draw the rows of the blob in the given image with the given RGB levels.
 void drawRegion(byte[][] mask, byte value)
          Draw the rows of the blob in the mask array with the given value.
 void erase(byte[][] mask)
          Erase this blob from a given mask.
 Blob getBackgroundDisc()
          For accurate brightness measurement in BlobMenu.
 java.util.List<java.awt.Point> getBoundary()
           
 Bounds getBounds()
          Get the bounds of this Blob.
 Blob getBrightnessDisc()
          For accurate brightness measurement in BlobMenu.
 float getMeasuringRingSizeFactor()
          Get the factor by which the measuring circles in display () are expanded.
 java.util.List<PointFloat> getVerticalCentreLineFromBoundary()
          Get a list of the centre points of all horizontal rows that comprise the blob with a simple shape.
 java.util.List<PointFloat> getVerticalCentreLineFromRegion()
          Get a list of the centre points of all horizontal rows that comprise the blob.
 boolean hasRows()
          Whether region comprises at least one row.
 PointFloat maskCentre()
          Calculate centre of the blob simply as average of detected x and y, with no weighting from pixel densities.
 BlobMeas measure(Image image)
          Measure brightness, density-weighted centre and area (pixel count) all on one pass.
 void measureAccurately(BlobMeas meas, Image image)
          Measure meanBackground, accurateBrightnesses and snRatios fields of the given BlobMeas using backgroundDisc and brightnessDisc in the given frame (which is assumed to be the parent frame of the magnified blob frame).
The signal-to-noise (S/N) ratio for each channel is measured as
(mean (starBrightness) - mean (backgroundBrightness)) / stdDev (backgroundBrightness)
where mean (starBrightness) is the accurately measured brightness in the inner disc divided by the number of pixels in that disc.
 void measureAccurately(BlobMeas meas, ImFrame parentFrame)
          Measure meanBackground, accurateBrightnesses and snRatios fields of the given BlobMeas using backgroundDisc and brightnessDisc in the given frame (which is assumed to be the parent frame of the magnified blob frame).
The signal-to-noise (S/N) ratio for each channel is measured as
(mean (starBrightness) - mean (backgroundBrightness)) / stdDev (backgroundBrightness)
where mean (starBrightness) is the accurately measured brightness in the inner disc divided by the number of pixels in that disc.
 double perimeter()
          Measure the perimeter
 void remeasureAccurately(BlobMeas meas, ImFrame parentFrame)
           
 void setMeasuringRingSizeFactor(float factor)
          Set the factor by which the measuring circles in display () are expanded.
 java.lang.StringBuffer toXML(java.lang.String indent)
          The indent string would typically contain some tab characters (\t).
 void translate(int dx, int dy)
          Move the blob by the given pixel displacement.
 

Method Detail

getBoundary

java.util.List<java.awt.Point> getBoundary()

hasRows

boolean hasRows()
Whether region comprises at least one row.


getBrightnessDisc

Blob getBrightnessDisc()
For accurate brightness measurement in BlobMenu. The brightness disc is created when displaying a single blob in its own frame, by using display () in this class.


getBackgroundDisc

Blob getBackgroundDisc()
For accurate brightness measurement in BlobMenu. The background disc is created when displaying a single blob in its own frame, by using display () in this class.


toXML

java.lang.StringBuffer toXML(java.lang.String indent)
The indent string would typically contain some tab characters (\t).


getVerticalCentreLineFromBoundary

java.util.List<PointFloat> getVerticalCentreLineFromBoundary()
Get a list of the centre points of all horizontal rows that comprise the blob with a simple shape. y values should be consecutive whole numbers. The blob must only have at most 2 boundary points on any horizontal line, except on the uppermost and lowermost lines which are excluded.


getVerticalCentreLineFromRegion

java.util.List<PointFloat> getVerticalCentreLineFromRegion()
Get a list of the centre points of all horizontal rows that comprise the blob. y values should be consecutive whole numbers.


erase

void erase(byte[][] mask)
Erase this blob from a given mask.


getBounds

Bounds getBounds()
Get the bounds of this Blob.


drawBoundary

void drawBoundary(java.awt.image.BufferedImage image,
                  int[] rgb)
Draw the boundary of the blob in the given image with the given RGB levels.


drawBoundary

void drawBoundary(byte[][] mask,
                  byte value)
Draw the boundary of the blob in the mask array with the given value.


drawRegion

void drawRegion(java.awt.image.BufferedImage image,
                int[] rgb)
Draw the rows of the blob in the given image with the given RGB levels.


drawRegion

void drawRegion(byte[][] mask,
                byte value)
Draw the rows of the blob in the mask array with the given value.


brightness

int[] brightness(java.awt.image.BufferedImage image)
Measure the integrated detected brightness (NOT the average) in each channel


area

int area()
Measure the area of the blob, as the total number of pixels in its rows.


perimeter

double perimeter()
Measure the perimeter


maskCentre

PointFloat maskCentre()
Calculate centre of the blob simply as average of detected x and y, with no weighting from pixel densities.


densityCentre

PointFloat densityCentre(java.awt.image.BufferedImage im)
Calculate centre of the blob with weighting from pixel densities (brightnesses). Brightnesses simply sum all channels (R,G, B given equal weight).


measure

BlobMeas measure(Image image)
Measure brightness, density-weighted centre and area (pixel count) all on one pass. 2/10/09: Modified so that brightness combines channels not just by adding but as the square of the sum of the square of channel brightnesses.


getMeasuringRingSizeFactor

float getMeasuringRingSizeFactor()
Get the factor by which the measuring circles in display () are expanded. The factor is static, so changing it for one blob affects all subsequent accurate measurements.


setMeasuringRingSizeFactor

void setMeasuringRingSizeFactor(float factor)
Set the factor by which the measuring circles in display () are expanded. The factor is static, so changing it for one blob affects all subsequent accurate measurements.


remeasureAccurately

void remeasureAccurately(BlobMeas meas,
                         ImFrame parentFrame)

measureAccurately

void measureAccurately(BlobMeas meas,
                       ImFrame parentFrame)
Measure meanBackground, accurateBrightnesses and snRatios fields of the given BlobMeas using backgroundDisc and brightnessDisc in the given frame (which is assumed to be the parent frame of the magnified blob frame).
The signal-to-noise (S/N) ratio for each channel is measured as
(mean (starBrightness) - mean (backgroundBrightness)) / stdDev (backgroundBrightness)
where mean (starBrightness) is the accurately measured brightness in the inner disc divided by the number of pixels in that disc. The signal is thus measured by the amount by which the star profile sticks up above the background. The noisiness of the background is measured by its standard deviation.


measureAccurately

void measureAccurately(BlobMeas meas,
                       Image image)
Measure meanBackground, accurateBrightnesses and snRatios fields of the given BlobMeas using backgroundDisc and brightnessDisc in the given frame (which is assumed to be the parent frame of the magnified blob frame).
The signal-to-noise (S/N) ratio for each channel is measured as
(mean (starBrightness) - mean (backgroundBrightness)) / stdDev (backgroundBrightness)
where mean (starBrightness) is the accurately measured brightness in the inner disc divided by the number of pixels in that disc. The signal is thus measured by the amount by which the star profile sticks up above the background. The noisiness of the background is measured by its standard deviation.


display

BlobFrame display(ImFrame srcFrame,
                  BlobMeas meas)
Display this blob magnified in the given frame. Boundary and lines through centre of gravity of detected blob are overlaid. Returns reference to the BlobFrame (magnified ImFrame) that is displayed, so the caller could dispose of it.


translate

void translate(int dx,
               int dy)
Move the blob by the given pixel displacement.