5X      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None 9:;<=DQR 1Our index type, used for both shapes and indices.An index of dimension zero.<Class of types that can be used as array shapes and indices.)Gets the number of dimensions in a shape.<Gets the total number of elements in an array of this shape."Gives the first index of an array.>Gives the successor of an index, given the shape of the array.EConvert an index into its equivalent flat, linear, row-major version. Inverse of .9Return the ascending list of indexes for the given shape./Check whether an index is within a given shape.Helper for index construction./Use this instead of explicit constructors like (Z :. (x :: Int)). The this is sometimes needed to ensure that x is constrained to be in Int.5  !"#$%&'()*+,   !"    !"'  !"#$%&'()*+, 33None5-Rational coordinates used for interpolations.?Size of an object.Can be constructed using I. The first parameter is the height while the second is the width (i.e. ix2 h w).@Coordinates inside the image.Can be constructed using V. The first parameter is the y coordinate while the second is the x coordinate (i.e.  y x). Image origin ( 0 0') is located in the upper left corner. 56789:;<=>?@,  !"56789:;<=>?@ @?9:;<=>567856789:;<=>?@None:<=DRI\Defines a class for images on which a function can be applied. The class is different from S as there could be some constraints and transformations the pixel and image types.K4Provides ways to construct an image from a function.MZGenerates an image by calling the given function for each pixel of the constructed image.NYGenerates an image by calling the last function for each pixel of the constructed image.OThe first function is called for each line, generating a line invariant value.dThis function is faster for some image representations as some recurring computation can be cached.OYGenerates an image by calling the last function for each pixel of the constructed image.SThe first function is called for each column, generating a column invariant value.This function *can* be faster for some image representations as some recurring computations can be cached. However, it may requires a vector allocation for these values. If the column invariant is cheap to compute, prefer M.PYGenerates an image by calling the last function for each pixel of the constructed image.The two first functions are called for each line and for each column, respectively, generating common line and column invariant values.This function is faster for some image representations as some recurring computation can be cached. However, it may requires a vector allocation for column values. If the column invariant is cheap to compute, prefer N.QEProvides an abstraction over the internal representation of an image.Image origin (ix2 0 0&) is located in the upper left corner.R)Returns the pixel value at 'Z :. y :. x'.SbReturns the pixel value as if the image was a single dimension vector (row-major representation).TeReturns every pixel values as if the image was a single dimension vector (row-major representation).VpProvides an abstraction for images which are not defined for each of their pixels. The interface is similar to Q5 except that indexing functions don't always return.Image origin (ix2 0 0&) is located in the upper left corner.Y,Returns the pixel's value at 'Z :. y, :. x'.ZdReturns the pixel's value as if the image was a single dimension vector (row-major representation).[+Returns the non-masked values of the image.\jDetermines the number of channels and the type of each pixel of the image and how images are represented.^,Returns the number of channels of the pixel.Must not consume p (could be ).` Alias of Y.a Alias of R.b+Returns the number of channels of an image.c Returns an h instance of a pixel of the image. This is sometime useful to satisfy the type checker as in a call to ^ : (nChannels img = pixNChannels (pixel img)%IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmIJKLMNOPQTRSUVWXYZ[\]^_`abc\]^_VWXYZ[QRSTUKLMNOPIJa`bcIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmNone:nHProvides a way to apply the interpolation to every component of a pixel.oGiven a function which interpolates two points over a single channel, returns a function which interpolates two points over every channel of two pixels.pZUses a bilinear interpolation to find the value of the pixel at the rational coordinates.(Estimates the value of a rational point p using a, b, c and d : h x1 x2 y1 a ------ b - - - p - - - y2 c ------ d nopqrstuvwxyznopnop nopqrstuvwxyzNone 9:;<=DRBA delayed image is an image which is constructed using a function.Usually, a delayed image maps each of its pixels over another image. Delayed images are useful by avoiding intermediate images in a transformation pipeline of images or by avoiding the computation of the whole resulting image when only a portion of its pixels will be accessed.Stores the image content in a ..Delays an image in its delayed representation.>Computes the value of an image into a manifest representation.AForces an image to be in its delayed represenation. Does nothing.BForces an image to be in its manifest represenation. Does nothing. {|}~{|}~{|}~{|}~None%&9:;<=DLRT"@Defines how image boundaries are extrapolated by the algorithms.'|'* characters in examples are image borders.2Replicates the first and last pixels of the image. aaaaaa|abcdefgh|hhhhhhh!Reflects the border of the image. fedcba|abcdefgh|hgfedcbCConsiders that the last pixel of the image is before the first one. cdefgh|abcdefgh|abcdefg0Assigns a constant value to out of image pixels. 0iiiiii|abcdefgh|iiiiiii with some specified 'i'Uses the first pixel in the kernel as initial value. The kernel must not be empty and the accumulator type must be the same as the source pixel type.?This kind of initialization is needed by morphological filters.Uses the result of the provided function as the initial value of the kernel's accumulator, depending on the center coordinates in the image.SFor most filters, the function will always return the same value (i.e. defined as const 0G), but this kind of initialization could be required for some filters.[Used to determine the type of the accumulator image used when computing separable filters.src and res? are respectively the source and the result image types while acc& is the pixel type of the accumulator.YSome kernels can be factorized in two uni-dimensional kernels (horizontal and vertical).lSeparable filters computational complexity grows linearly according to the size of the sides of the kernel.See  4http://http://en.wikipedia.org/wiki/Separable_filter.Vertical (column) kernel.Horizontal (row) kernel.A simple 2D kernel.iThe kernel function accepts the coordinates in the kernel, the value of the pixel at these coordinates (srcF), the current accumulated value and returns a new accumulated value.uNon-separable filters computational complexity grows quadratically according to the size of the sides of the kernel.8Defines how the center of the kernel will be determined.<Separable 2D filters which are not initialized with a value.8Separable 2D filters which are initialized with a value.22D filters which are not initialized with a value..2D filters which are initialized with a value.See  and .DComputes a constant value for each pixel before applying the kernel.This value will be passed to  functions and to the  function. For most filters, fInit will be  _ _ -> ().1Defines how the accumulated value is initialized.See  and .SThis function will be executed after the iteration of the kernel on a given point.<Can be used to normalize the accumulated value, for example.7Provides an implementation to execute a type of filter.src is the original image, res the resulting image and f the filter.,Applies the given filter on the given image.yGiven a method to compute the kernel anchor and the size of the kernel, returns the anchor of the kernel as coordinates.Given a method of interpolation, the number of pixel in the dimension and an index in this dimension, returns either the index of the interpolated pixel or a constant value.9Blurs the image by averaging the pixel inside the kernel.Considers using a type for acc with -maxBound acc >= maxBound src * (kernel size).TBlurs the image by averaging the pixel inside the kernel using a Gaussian function.See *http://en.wikipedia.org/wiki/Gaussian_blur=Estimates the first derivative using the Scharr's 3x3 kernel.4Convolves the following kernel for the X derivative: $ -3 0 3 -10 0 10 -3 0 3 %And this kernel for the Y derivative: $ -3 -10 -3 0 0 0 3 10 3 *Considers using a signed integer type for res with !maxBound res >= 16 * maxBound src.6Estimates the first derivative using a Sobel's kernel.Prefer  when radius equals 1@ as Scharr's kernel is more accurate and is implemented faster.*Considers using a signed integer type for res% which is significantly larger than src, especially for large kernels.3Computes the average of a kernel of the given size.This is similar to % but with a rectangular kernel and a  result.BSeparable filters initialized using the first pixel of the kernel.1Separable filters initialized with a given value.<Box filters initialized using the first pixel of the kernel.+Box filters initialized with a given value.;The size of the dimension.The index in the dimension. Blur radius. Blur radius.Sigma value of the Gaussian function. If not given, will be automatically computed from the radius so that the kernel fits 3 of the distribution.Kernel radius.33#None:DR9Blurs the image by averaging the pixel inside the kernel.Uses an / as accumulator during the averaging operation.TBlurs the image by averaging the pixel inside the kernel using a Gaussian function.See *http://en.wikipedia.org/wiki/Gaussian_blur=Estimates the first derivative using the Scharr's 3x3 kernel.4Convolves the following kernel for the X derivative: $ -3 0 3 -10 0 10 -3 0 3 %And this kernel for the Y derivative: $ -3 -10 -3 0 0 0 3 10 3 Uses an * as accumulator during kernel application.6Estimates the first derivative using a Sobel's kernel.Prefer  when radius equals 1@ as Scharr's kernel is more accurate and is implemented faster.Uses an * as accumulator during kernel application.3Computes the average of a kernel of the given size.This is similar to % but with a rectangular kernel and a  result.Uses an / as accumulator during the averaging operation.Kernel radius.Kernel radius. Blur radius. Blur radius.Sigma value of the Gaussian function. If not given, will be automatically computed from the radius so that the kernel fits 3 of the distribution.Kernel radius.  NoneDIR None !"DQR24 bits (3 * 8 bits) HSV image.KThe Hue value is in [0..179], Saturation in [0..255] and Value in [0..255].bThis image type is more respectful to human eye perception of colors and can be converted (using convert) from RGB images.Uses  (http://en.wikipedia.org/wiki/HSL_and_HSV' equations to convert from and to RGB.  None:DORT ?Class for images which can be constructed from a mutable image.7The type of the immutable version of the mutable image i.D doesn't run in a monad as the size of a mutable image is constant.]Creates a new mutable image of the given size. Pixels are initialized with an unknown value.PCreates a new mutable image of the given size and fill it with the given value.Returns the pixel value at  Z :. y :. x.bReturns the pixel value as if the image was a single dimension vector (row-major representation).$Overrides the value of the pixel at  Z :. y :. x.~Overrides the value of the pixel at the given index as if the image was a single dimension vector (row-major representation)./Returns an immutable copy of the mutable image. iReturns the immutable version of the mutable image. The mutable image should not be modified thereafter. .Returns a mutable copy of the immutable image. #Creates an immutable image from an ! action creating a mutable image.               None:DR  uDefines the set of possible methods for pixel interpolations when looking for a pixel at floating point coordinates.%Selects the top left pixel (fastest).!Selects the nearest pixel (fast).LDoes a double linear interpolation over the four surrounding points (slow).9Maps the content of the image's rectangle in a new image. Resizes the Q& using the given interpolation method. Reverses the image horizontally.Reverses the image vertically.}Paints with a new value the pixels surrounding the given point of the image which have the same value as the starting point.        None:Parallel version of compute.JComputes the value of an image into a manifest representation in parallel.FThe monad ensures that the image is fully evaluated before continuing.None !"DQR   None !"DQR #$%&'()*+,-#$%&'()*$%&'()*##$%&'()*+,-None<=GConverts the colors to greyscale using the human eye colors perception.0123456789:;<=>?0123456789:;<=>?None 9:;DFQR@jThis class defines how many dimensions a histogram will have and what will be the default number of bins.A@Gives the value space of a pixel. Single-channel pixels will be  ( whereas three-channels pixels will be  A. This is used to determine the rank of the generated histogram.BConverts a pixel to an index.CReturns the maximum number of different values an index can take for each dimension of the histogram (aka. the maximum index returned by B plus one).D Subclass of P which defines how to resize a shape so it will fit inside a resized histogram.EXGiven a number of bins of an histogram, reduces an index so it will be mapped to a bin.I+Values of the histogram in row-major order.K Alias of J.LmReturns the value at the index as if the histogram was a single dimension vector (row-major representation).N1Returns all index/value pairs from the histogram.O[Given the number of bins of an histogram and a given pixel, returns the corresponding bin.P<Computes an histogram from a (possibly) multi-channel image.If the size of the histogram is not given, there will be as many bins as the range of values of pixels of the original image (see C).xIf the size of the histogram is specified, every bin of a given dimension will be of the same size (uniform histogram).Q Similar to P but adds two dimensions for the y and x-coordinates of the sampled points. This way, the histogram will map different regions of the original image.For example, an RGB image will be mapped as    red channel   green channel   blue channel   y region   x region.uAs there is no reason to create an histogram as large as the number of pixels of the image, a size is always needed.R9Reduces a 2D histogram to its linear representation. See S8 for a reduction of the number of bins of an histogram. P == R . QS1Resizes an histogram to another index shape. See R> for a reduction of the number of dimensions of an histogram.THComputes the cumulative histogram of another single dimension histogram.C(i) = SUM H(j) for each j in [0..i] where C# is the cumulative histogram, and H the original histogram.UrNormalizes the histogram so that the sum of the histogram bins is equal to the given value (normalisation by the L1 norm).qThis is useful to compare two histograms which have been computed from images with a different number of pixels.V=Equalizes a single channel image by equalising its histogram.The algorithm equalizes the brightness and increases the contrast of the image by mapping each pixel values to the value at the index of the cumulative L1-normalized histogram :N(x, y) = H(I(x, y)) where N is the equalized image, I is the image and H4 the cumulative of the histogram normalized over an L1 norm.See  4https://en.wikipedia.org/wiki/Histogram_equalization.W Computes the !Pearson's correlation coefficient8 between each corresponding bins of the two histograms.wA value of 1 implies a perfect correlation, a value of -1 a perfect opposition and a value of 0 no correlation at all. W = SUM [ (H1(i) - (H1)) (H1(2) - (H2)) ] / ( SQRT [ SUM [ (H1(i) - (H1))^2 ] ] * SQRT [ SUM [ (H2(i) - (H2))^2 ] ] )Where (H)' is the average value of the histogram H.See  <http://en.wikipedia.org/wiki/Pearson_correlation_coefficient.X9Computes the Chi-squared distance between two histograms.'A value of 0 indicates a perfect match.X = SUM (d(i)) for each indice i of the histograms where 0d(i) = 2 * ((H1(i) - H2(i))^2 / (H1(i) + H2(i))).Y0Computes the intersection of the two histograms./The higher the score is, the best the match is.Y = SUM (min(H1(i), H2(i)) for each indice i of the histograms.Z Computed the Earth mover's distance between two histograms.<Current algorithm only supports histograms of one dimension.See  4https://en.wikipedia.org/wiki/Earth_mover's_distance.$@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`@ABCDEFGIHJKLMNOPQRSTUVWXYZFGHIDE@ABCJKLMNOPQRSTUVWXYZ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`NoneNoneNoneNoneNoneNone#$%&'()*None%&: eMDefines how pixels of the kernel of the adaptive threshold will be weighted.With f,, pixels of the kernel have the same weight.With g sigmav, pixels are weighted according to their distance from the thresholded pixel using a Gaussian function parametred by sigma. See  for details.hBSpecifies what to do with pixels matching the threshold predicate.i a b! will replace matching pixels by a and non-matchings pixels by b.j a! will replace matching pixels by a.k a% will replace non-matching pixels by a.lGiven the thresholding method, a boolean indicating if the pixel match the thresholding condition and the pixel, returns the new pixel value.m>Applies the given predicate and threshold policy on the image.nPCompares every pixel to its surrounding ones in the kernel of the given radius.o8Creates an adaptive thresholding filter to be used with .Use n3 if you only want to apply the filter on the image.PCompares every pixel to its surrounding ones in the kernel of the given radius.pFApplies a clustering-based image thresholding using the Otsu's method.See  +https://en.wikipedia.org/wiki/Otsu's_method.qThis is a sliding concentric window filter (SCW) that uses the ratio of the standard deviations of two sliding windows centered on a same point to detect regions of interest (ROI). .scw sizeWindowA sizeWindowB beta thresType imgLet A? be the standard deviation of a fist window around a pixel and Bq be the standard deviation of another window around the same pixel. Then the pixel will match the threshold if B / A >= beta2, and will be thresholded according to the given h.See  @http://www.academypublisher.com/jcp/vol04/no08/jcp0408771777.pdf.aGiven a mean image and an original image, computes the variance of the kernel of the given size.Eaverage [ (origPix - mean)^2 | origPix <- kernel pixels on original ].defghijklmnKernel radius.[Minimum difference between the pixel and the kernel average. The pixel is thresholded if &pixel_value - kernel_mean > difference3 where difference is this number. Can be negative.oKernel radius.[Minimum difference between the pixel and the kernel average. The pixel is thresholded if &pixel_value - kernel_mean > difference3 where difference is this number. Can be negative.pqdefghijklmnopqhijklmefgdnopq defghijklmnopqNoneNoneNoneIJKLMNOPQTRSUVWXYZ[\]^_`abcnop{|}~    #$%&'()*defghijklmnopqNone 9:;IT\ rOutline: Just draw the edge.OuterOutline: Outline the outer contours only, no hole contours AllOutlines: Draw all contours Fill: Draw the object but fill it in, ignoring holes. FillWithHoles: Draw the object and do not fill in the holes.wRowContour is a method of expressing contours by, for each row, recording the start of an object and the end (due to reaching the other side or a hole/inner contour) for each row.}A contour is described by the points on the perimeter and a boolean indicating if that point is "terminal" (next pixel to the right is background iff the point is terminal). The terminal information allows for a slightly simpler  implementation.~/Contours are identified by a numeric ID number.Contours of an image include: * A map from contour number to outer points and negative contour number of inner contour points. * A vector of sizes for each contour for domain [1..size contourOutlines] (the zero index is meaningless)Draws a given contour. The size specified must be large enough to include the coordinate originally occupied by the contour being drawn, no cropping or other transformation is done.Draws many contours. See .RDraws rows, throwing an exception when the size is too small for the coordinates. Given a vector including outer (and optionally inner) contour points, make 'row contour' from which is easier to transform back into a binary image. By not including the inner contour points the row will be filled, making traces of objects with holes appear solid.The meat of this module is the  function, which extracts the contours (outer and inner outlines) of a binary image. Zero-valued pixels are the background and non-zero are active/objects to trace. The output, , contains enough information to determine the number of contours, their traces, the size in pixels (filled size and perimeter), number of holes, etc.:rstuvwxyz{|}~rstuvwxyz{|}~~}|xyz{wrstuv#rstuvwxyz{|}~None:\| /\FDetects edges using the Canny's algorithm. Edges are given the value % while non-edges are given the value .This implementation doesn't perform any noise erasing (as blurring) before edge detection. Noisy images might need to be pre-processed using a Gaussian blur.CThe bidirectional derivative (gradient magnitude) is computed from x and y derivatives using sqrt(dx + dy).See  0http://en.wikipedia.org/wiki/Canny_edge_detector for details.!This function is specialized for  images but is declared  INLINABLE0 to be further specialized for new image types.Radius of the Sobel's filter.Low threshold. Pixels for which the bidirectional derivative is greater than this value and which are connected to another pixel which is part of an edge will be part of this edge.rHigh threshold. Pixels for which the bidirectional derivative is greater than this value will be part of an edge. !"#$%&'()*+,,--./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRRSTUUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                         !!"#$%&'()*+,,-./0123456789:;<=>?@ABCDEFGHIJKLLsom|neMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvvwxyz{||}~  %friday-0.2.3.1-EinzG0EwMIRFWjzlkmVSSnVision.Image.ConversionVision.Primitive.ShapeVision.PrimitiveVision.Image.ClassVision.Image.InterpolateVision.Image.TypeVision.Image.Filter.InternalVision.Image.FilterVision.Image.Grey.TypeVision.Image.HSV.TypeVision.Image.MutableVision.Image.TransformVision.Image.ParallelVision.Image.RGB.TypeVision.Image.RGBA.TypeVision.HistogramVision.Image.ThresholdVision.Image.ContourVision.Detector.EdgeVision.Image.HSV.SpecializeVision.Image.HSVVision.Image.RGB.SpecializeVision.Image.RGBVision.Image.RGBA.SpecializeVision.Image.RGBAVision.Image.Grey.SpecializeVision.Image.Grey Vision.Image*convertible-1.1.1.0-33nLSQ6AlocFKNxPUEmpQ8Data.Convertible.Baseconvert safeConvert ConvertibleDIM9DIM8DIM7DIM6DIM5DIM4DIM3DIM2DIM1DIM0:.ZShape shapeRank shapeLength shapeZero shapeSucc toLinearIndexfromLinearIndex shapeListinShapeix1ix2ix3ix4ix5ix6ix7ix8ix9 $fStorable:. $fShape:. $fStorableZ$fShapeZ $fUnbox:.$fVectorVector:.$fMVectorMVector:.$fUnboxZ$fVectorVectorZ$fMVectorMVectorZ$fShowZ$fReadZ$fEqZ$fOrdZ$fShow:.$fRead:.$fEq:.$fOrd:.RPointrpXrpYRectrXrYrWidthrHeightSizePoint $fShowRect $fReadRect$fEqRect $fOrdRect $fShowRPoint $fReadRPoint $fEqRPoint $fOrdRPoint FunctorImagemap FromFunctionFromFunctionPixel fromFunctionfromFunctionLinefromFunctionColfromFunctionCachedImageindex linearIndexvector ImageChannel MaskedImage ImagePixelshape maskedIndexmaskedLinearIndexvaluesPixel PixelChannel pixNChannelspixIndex!?! nChannelspixel $fPixelBool $fPixelDouble $fPixelFloat $fPixelWord $fPixelWord32 $fPixelWord16 $fPixelWord8 $fPixelInt $fPixelInt32 $fPixelInt16 InterpolableinterpolbilinearInterpol$fInterpolableBool$fInterpolableDouble$fInterpolableFloat$fInterpolableWord$fInterpolableWord32$fInterpolableWord16$fInterpolableWord8$fInterpolableInt$fInterpolableInt32$fInterpolableInt16 DelayedMaskdelayedMaskSizedelayedMaskFunDelayed delayedSize delayedFunManifest manifestSizemanifestVectordelaycomputedelayedmanifest$fConvertibleManifestDelayed$fConvertibleDelayedManifest$fConvertibleDelayedDelayed$fConvertibleManifestManifest$fFunctorImagesrcDelayedMask$fFromFunctionDelayedMask$fMaskedImageDelayedMask$fFunctorImagesrcDelayed$fFromFunctionDelayed$fImageDelayed$fMaskedImageDelayed$fFunctorImagesrcManifest$fFromFunctionManifest$fImageManifest$fMaskedImageManifest$fNFDataManifest $fEqManifest $fOrdManifest$fShowManifestMeanDerivativeType DerivativeX DerivativeY DerivativeBlur MorphologicalBorderInterpolateBorderReplicate BorderReflect BorderWrapBorderConstant FilterFold1 FilterFoldSeparatelyFiltrableSeparableFilterAccumulatorSeparableKernel skVertical skHorizontalKernel KernelAnchorKernelAnchorCenterSeparableFilter1SeparableFilter BoxFilter1 BoxFilterFilter fKernelSize fKernelCenterfKernelfInitfFoldfPost fInterpol Filterableapply kernelAnchorborderInterpolatedilateerodeblur gaussianBlurscharrsobelmean$fFilterablesrcresFilter$fFilterablesrcresFilter0$fFilterablesrcresFilter1$fFilterablesrcresFilter2"$fSeparatelyFiltrablesrcDelayedacc#$fSeparatelyFiltrablesrcManifestacc GreyDelayedGrey GreyPixel$fInterpolableGreyPixel$fPixelGreyPixel$fBitsGreyPixel$fBoundedGreyPixel$fEnumGreyPixel $fEqGreyPixel$fIntegralGreyPixel$fNumGreyPixel$fOrdGreyPixel$fRealGreyPixel$fReadGreyPixel$fShowGreyPixel$fStorableGreyPixel HSVDelayedHSVHSVPixelhsvHuehsvSathsvValue$fInterpolableHSVPixel$fPixelHSVPixel$fStorableHSVPixel $fEqHSVPixel$fShowHSVPixelMutableManifestmmSizemmVector MutableImageFreezedmShapenewnew'read linearReadwrite linearWritefreeze unsafeFreezethawcreate$fMutableImageMutableManifestInterpolMethodTruncateIntegerNearestNeighborBilinearcropresizehorizontalFlip verticalFlip floodFillcomputeP RGBDelayedRGBRGBPixelrgbRedrgbGreenrgbBlue$fInterpolableRGBPixel$fPixelRGBPixel$fStorableRGBPixel $fEqRGBPixel$fShowRGBPixel RGBADelayedRGBA RGBAPixelrgbaRed rgbaGreenrgbaBlue rgbaAlpha$fInterpolableRGBAPixel$fPixelRGBAPixel$fStorableRGBAPixel $fEqRGBAPixel$fShowRGBAPixel$fConvertibleRGBPixelRGBAPixel$fConvertibleHSVPixelRGBAPixel$fConvertibleGreyPixelRGBAPixel$fConvertibleRGBAPixelRGBAPixel$fConvertibleHSVPixelRGBPixel$fConvertibleRGBAPixelRGBPixel$fConvertibleGreyPixelRGBPixel$fConvertibleRGBPixelRGBPixel$fConvertibleRGBAPixelHSVPixel$fConvertibleRGBPixelHSVPixel$fConvertibleGreyPixelHSVPixel$fConvertibleHSVPixelHSVPixel$fConvertibleRGBPixelGreyPixel$fConvertibleRGBAPixelGreyPixel$fConvertibleHSVPixelGreyPixel$fConvertibleGreyPixelGreyPixel ToHistogramPixelValueSpace pixToIndex domainSizeHistogramShapetoBin HistogramassocspixToBin histogram histogram2Dreduce cumulative normalize equalizeImage compareCorrel compareChicompareIntersect compareEMD$fToHistogramHSVPixel$fToHistogramRGBPixel$fToHistogramRGBAPixel$fToHistogramGreyPixel$fHistogramShape:.$fHistogramShapeZ $fEqHistogram$fOrdHistogram$fShowHistogramAdaptiveThresholdAdaptiveThresholdKernel MeanKernelGaussianKernel ThresholdTypeBinaryThresholdTruncate TruncateInv thresholdType thresholdadaptiveThresholdadaptiveThresholdFilterotsuscwContourDrawStyle OuterOutline AllOutlinesFill FillWithHoles RowContourContour outerContour innerContours ContourValue OneContour ContourIdContourscontourOutlines contourSizes allContourIdscontourPerimeter contourSize lookupContour drawContour drawContours rowContourcontours $fEqContourId$fOrdContourId$fStorableContourId$fNumContourId$fShowContourId$fEqContourDrawStyle$fOrdContourDrawStyle$fShowContourDrawStyle$fReadContourDrawStyle$fEnumContourDrawStyle$fBoundedContourDrawStyle$fEqContourType$fEnumContourPos$fBoundedContourPos$fEqContourPos$fShowContourPoscannyV_DimMV_DimV_ZMV_Z pairToPoint pointToPairword D:R:Vector:.0D:R:MVectors:.0 D:R:VectorZ0D:R:MVectorsZ0baseGHC.BaseFunctorGHC.Err undefinedint&vector-0.11.0.0-6uB77qGCxR6GPLxI2sqsX3Data.Vector.StorableVectorGHC.Real FractionalsquareGHC.IntInt32GHC.STSTdoubleratio rgbToGreyredLookupTablegreenLookupTableblueLookupTableword8variancedrawRows ContourPosMRLRLCLLMLULUCUR ContourTypeExternalContourInternalContour BlobSizesBSCIDunCIDinsOuterContourinsInnerContour drawOutlines drawMutable backgroundzidfreezeBlobSizes incBlobSizes zeroBlobSizes doLabeling traceContourrelPoint rowOffset colOffsetincCPdecCP2 NorthSouthWestEastNorthEastSouthWestNorthWestSouthEastGHC.EnummaxBoundminBound EdgeDirection