Histogram2 Method
Syntax
CWIMAQVision.Histogram2 SourceImage, HistogramReport [, HistogramOptions] [, MaskImage]
Return Type
On success, this method returns 0. On failure, this method returns a negative number.
Purpose
Calculates the histogram, or pixel value distribution, of an image.
Remarks
Use this method with U8, I16, and SGL images. MaskImage must be a U8 image.
Parameters
SourceImage As CWIMAQImage
The image the method uses to compute the histogram.
HistogramReport As CWIMAQHistogramReport
On return, a CWIMAQHistogramReport object describing the pixel value classification. The report also contains an array describing the number of pixels that fell into each class.
HistogramOptions As Variant
[Optional] A CWIMAQHistogramOptions object specifying the options for the algorithm to use.
MaskImage As Variant
[Optional] A CWIMAQImage object that specifies the region in which the method computes the histogram. The method processes only those pixels in the image whose corresponding pixels in the mask are non-zero. Do not set this parameter if you want to calculate the histogram for the entire image.
Example
'To run this example, add a picture box to your form, select
'a region of interest on the viewer, and click run.
Private Sub Run_Click()
Dim HistogramReport As New CWIMAQHistogramReport
Dim MaskImage As New CWIMAQImage
' Find the histogram of a portion of the image in Viewer1
' defined by the regions on Viewer1.
CWIMAQVision1.RegionsToMask MaskImage, CWIMAQViewer1.Regions
CWIMAQVision1.Histogram2 CWIMAQViewer1.Image, HistogramReport, , MaskImage
'Draw the histogram results to a picture control
DrawHistogramResults Picture1, HistogramReport(1).Histogram
End Sub
'Draw the histogram results to a picture control
Private Sub DrawHistogramResults(Picture As PictureBox, Histogram As Variant, Optional ColorArray As Variant)
Dim I As Long
Dim N As Long
Dim Width As Long
Dim Height As Long
Dim MaxCount As Long
If IsMissing(ColorArray) Then
ReDim ColorArray(0 To 255) As OLE_COLOR
For N = 1 To 255
ColorArray(N) = RGB(N, N, N)
Next N
End If
'Find the peak
MaxCount = 0
If Not IsMissing(Histogram) Then
For N = 1 To 255
If Histogram(N) > Histogram(MaxCount) Then
MaxCount = N
End If
Next N
MaxCount = Histogram(MaxCount)
End If
'If there are no results, exit the routine
If MaxCount = 0 Then Exit Sub
'Clear the picture
Picture.Cls
'Compute the width and height of the picturebox control, in pixels
Picture.ScaleMode = vbPixels
Width = Picture1.ScaleWidth
Height = Picture1.ScaleHeight
'Draw a line the appropriate height and color for each pixel found.
For I = 0 To Width - 1
N = (I * 256 / Width)
Picture.Line (I, Height * (1 - Histogram(N) / MaxCount))-(I, Height), ColorArray(N)
Next I
End Sub
Histogram Example