Ejemplo n.º 1
0
 /// <summary>
 /// computes the distance transform map
 /// </summary>
 /// <param name="src"></param>
 /// <param name="dst"></param>
 /// <param name="distanceType"></param>
 /// <param name="maskSize"></param>
 public static void DistanceTransform(InputArray src,
                                      OutputArray dst,
                                      DistanceType distanceType,
                                      DistanceMaskSize maskSize)
 {
     if (src == null)
         throw new ArgumentNullException("src");
     if (dst == null)
         throw new ArgumentNullException("dst");
     src.ThrowIfDisposed();
     dst.ThrowIfNotReady();
     NativeMethods.imgproc_distanceTransform(
         src.CvPtr, dst.CvPtr, (int)distanceType, (int)maskSize);
     dst.Fix();
 }
Ejemplo n.º 2
0
 /// <summary>
 /// computes the distance transform map
 /// </summary>
 /// <param name="distanceType"></param>
 /// <param name="maskSize"></param>
 public MatOfFloat DistanceTransform(DistanceType distanceType, DistanceMaskSize maskSize)
 {
     var dst = new MatOfFloat();
     Cv2.DistanceTransform(this, dst, distanceType, maskSize);
     return dst;
 }
Ejemplo n.º 3
0
 // ReSharper restore InconsistentNaming
 #endregion
 #region DistanceTransform
 /// <summary>
 /// builds the discrete Voronoi diagram
 /// </summary>
 /// <param name="src"></param>
 /// <param name="dst"></param>
 /// <param name="labels"></param>
 /// <param name="distanceType"></param>
 /// <param name="maskSize"></param>
 /// <param name="labelType"></param>
 public static void DistanceTransformWithLabels(InputArray src,
                                                OutputArray dst,
                                                OutputArray labels,
                                                DistanceType distanceType,
                                                DistanceMaskSize maskSize,
                                                DistTransformLabelType labelType = DistTransformLabelType.CComp)
 {
     if (src == null)
         throw new ArgumentNullException("src");
     if (dst == null)
         throw new ArgumentNullException("dst");
     if (labels == null)
         throw new ArgumentNullException("labels");
     src.ThrowIfDisposed();
     dst.ThrowIfNotReady();
     labels.ThrowIfNotReady();
     NativeMethods.imgproc_distanceTransformWithLabels(
         src.CvPtr, dst.CvPtr, labels.CvPtr, (int)distanceType, (int)maskSize, (int)labelType);
     dst.Fix();
     labels.Fix();
 }
Ejemplo n.º 4
0
        public static void DistanceTransform(bool negative = false, DistanceTypes distanceType = DistanceTypes.L2, DistanceMaskSize distanceMaskSize = DistanceMaskSize.Mask3)
        {
            Glb.DrawMatAndHist0(Glb.matSrc);

            var matThr = Glb.matSrc.CvtColor(ColorConversionCodes.BGR2GRAY).Threshold(128, 255, ThresholdTypes.Otsu);

            if (negative)
            {
                Cv2.BitwiseNot(matThr, matThr);
            }
            Glb.DrawMatAndHist1(matThr);

            var    matDist      = matThr.DistanceTransform(distanceType, distanceMaskSize);
            var    x1           = matDist.Min();
            var    x2           = matDist.Max();
            float  y1           = 0;
            float  y2           = 255;
            double scale        = (y2 - y1) / (x2 - x1);
            double offset       = (x2 * y1 - x1 * y2) / (x2 - x1);
            var    matDistColor = new Mat();

            matDist.ConvertTo(matDistColor, MatType.CV_8UC1, scale, offset);
            Glb.DrawMatAndHist2(matDistColor);

            matThr.Dispose();
            matDist.Dispose();
            matDistColor.Dispose();
        }