/// <summary>
        /// Compute the signiture from the given location on the image
        /// </summary>
        /// <param name="image">The image to compute signiture from</param>
        /// <param name="keypoint">The location of the key point</param>
        /// <param name="patchSize">The size of the patch</param>
        /// <returns>null if the signiture cannot be computed, otherwise the signiture itself is returned.</returns>
        public float[] GetSigniture(Image <TColor, Byte> image, Point keypoint, int patchSize)
        {
            float[]  result = new float[NumberOfClasses];
            GCHandle handle = GCHandle.Alloc(result, GCHandleType.Pinned);
            int      count  = RTreeClassifierExtern.CvRTreeClassifierGetSigniture(_ptr, image, ref keypoint, patchSize, handle.AddrOfPinnedObject());

            handle.Free();
            return(count == 0 ? null : result);
        }