ColorHistogram2 Method
Syntax
CWIMAQVision.ColorHistogram2 SourceImage, ColorFormat [, NumberOfClasses = 256] [, Plane1HistogramReport] [, Plane2HistogramReport] [, Plane3HistogramReport] [, MaskImage]
Return Type
Purpose
Obsolete—Use ColorHistogram3 instead. Calculates the histogram, or pixel distribution, of a color image.
Remarks
Use this method with image types RGB32 and HSL32. MaskImage must be a U8 image.
Parameters
SourceImage As CWIMAQImage
The color image used to compute the histogram.
ColorFormat As CWIMAQColorFormats
The color space in which to perform the histogram.
NumberOfClasses As Variant
[Optional] The number of classes into which the method separates the pixels.
This parameter has a default value of 256.
Plane1HistogramReport As Variant
[Optional] On return, a CWIMAQHistogramReport object containing detailed statistics from the histogram calculated on the red or the hue plane, depending on the value of ColorFormat.
Plane2HistogramReport As Variant
[Optional] On return, a CWIMAQHistogramReport object containing detailed statistics from the histogram calculated on the green or the saturation plane, depending on the value of ColorFormat.
Plane3HistogramReport As Variant
[Optional] On return, a CWIMAQHistogramReport object containing detailed statistics from the histogram calculated on the blue, lightness, value, or intensity plane, depending on the value of ColorFormat.
MaskImage As Variant
[Optional] A CWIMAQImage object that indicates the region to use for computing the histogram. The method calculates the histogram using only those pixels in the image whose corresponding pixels in the mask are non-zero. Do not set this parameter if you want to perform a histogram on the entire image.
Example
'To run this example, add three picture boxes to your form, select a region of interest, 'and click run. Private Sub Run_Click() Dim RedPlaneReport As New CWIMAQHistogramReport Dim GreenPlaneReport As New CWIMAQHistogramReport Dim BluePlaneReport As New CWIMAQHistogramReport Dim MaskImage As New CWIMAQImage Dim Colors As Variant Dim I As Integer ' Find the histogram of a portion of the image in Viewer1 ' defined by the regions on Viewer1. CWIMAQVision1.RegionsToMask MaskImage, CWIMAQViewer1.Regions 'Compute the histogram for each color plane CWIMAQVision1.ColorHistogram2 CWIMAQViewer1.Image, cwimaqColorFormatRGB, , RedPlaneReport, GreenPlaneReport, BluePlaneReport, MaskImage 'Draw the histogram results to a picture control ReDim Colors(0 To 255) As OLE_COLOR For I = 0 To 255 Colors(I) = RGB(I, 0, 0) Next I DrawHistogramResults Picture1, RedPlaneReport(1).Histogram, Colors For I = 0 To 255 Colors(I) = RGB(0, I, 0) Next I DrawHistogramResults Picture2, BluePlaneReport(1).Histogram, Colors For I = 0 To 255 Colors(I) = RGB(0, 0, I) Next I DrawHistogramResults Picture3, GreenPlaneReport(1).Histogram, Colors 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