ColorHistogram3 Method
Syntax
CWIMAQVision.ColorHistogram3 SourceImage, ColorFormat [, NumberOfClasses = 256] [, Plane1HistogramReport] [, Plane2HistogramReport] [, Plane3HistogramReport] [, WhiteReference] [, MaskImage]
Return Type
On success, this method returns 0. On failure, this method returns a negative number.
Purpose
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, hue, X, or L* 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, saturation, Y, or a* 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, intensity, Z, or b* plane, depending on the value of ColorFormat.
WhiteReference As Variant
[Optional] A CWIMAQCIEXYZColor object specifying the white reference value to use when the CIE Lab color format is selected.
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.ColorHistogram3 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