private void Awake()
        {
            synchronizationContext = SynchronizationContext.Current;

            resultsDockingManager.SetEnableDocking(resultImageBoxPanel, true);
            resultsDockingManager.DockControl(resultImageBoxPanel, this, DockingStyle.Right, 400);
            resultsDockingManager.SetMenuButtonVisibility(resultImageBoxPanel, false);
            resultsDockingManager.SetDockLabel(resultImageBoxPanel, "Result Image");
            resultsDockingManager.SetDockVisibility(resultImageBoxPanel, true);

            resultsDockingManager.SetEnableDocking(originalImageBoxPanel, true);
            resultsDockingManager.DockControl(originalImageBoxPanel, this, DockingStyle.Left, 400);
            resultsDockingManager.SetMenuButtonVisibility(originalImageBoxPanel, false);
            resultsDockingManager.SetDockLabel(originalImageBoxPanel, "Original Image");
            resultsDockingManager.SetDockVisibility(originalImageBoxPanel, true);

            resultsDockingManager.SetEnableDocking(differenceImageBoxPanel, true);
            resultsDockingManager.DockControlInAutoHideMode(differenceImageBoxPanel, DockingStyle.Left, 400);
            resultsDockingManager.SetMenuButtonVisibility(differenceImageBoxPanel, false);
            resultsDockingManager.SetDockLabel(differenceImageBoxPanel, "Difference Image");
            resultsDockingManager.SetDockVisibility(differenceImageBoxPanel, true);

            alignmentPipelineResultsControl.OnSelectedMethodResultChangedEvent += (AlignmentMethodResultControl alignmentMethodResultControl, Mat inputImg, Mat outputImg, Mat diffImg) =>
            {
                originalImageBox.Image = inputImg.Bitmap;
                //originalImageBox.ZoomToFit();
                resultImageBox.Image = outputImg.Bitmap;
                //resultImageBox.ZoomToFit();
                differenceImageBox.Image = diffImg.Bitmap;
                //differenceImageBox.ZoomToFit();

                SelectedAlignmentMethodResult = alignmentMethodResultControl.GetAlignmentMethodResult;
            };
        }
        private void TestBtn_Click(object sender, EventArgs e)
        {
            if (testAlignmentPipeline.Count <= 0)
            {
                return;
            }

            List <AlignmentPipelineResults.AlignmentMethodResult> alignmentMethodResults = new List <AlignmentPipelineResults.AlignmentMethodResult>();

            IOutputArray outputImageArr;

            outputImage = testImage;
            CvInvoke.Resize(testImage, outputImage, templateImage.Size);
            //outputImage = testImage.Resize(templateImage.Width, templateImage.Height, Emgu.CV.CvEnum.Inter.Cubic);
            for (int i = 0; i < testAlignmentPipeline.Count; i++)
            {
                Exception exception = null;

                AlignmentPipelineResults.AlignmentMethodResult alignmentMethodResult = null;
                AlignmentMethod alignmentMethod = testAlignmentPipeline[i];

                if (alignmentMethod.PipelineIndex == -1 || ommittedAlignmetMethodIndeces.Contains(alignmentMethod.PipelineIndex))
                {
                    continue;
                }

                if (alignmentMethod.GetAlignmentMethodType == AlignmentMethodType.Anchors)
                {
                    var  aIM         = (AnchorAlignmentMethod)alignmentMethod;
                    bool isSuccess   = aIM.ApplyMethod(outputImage, out outputImageArr, out RectangleF[] detectedAnchors, out RectangleF[] warpedAnchors, out RectangleF[] scaledMainAnchorRegions, out RectangleF scaledMainTestRegion, out Mat homography, out long alignmentTime, out exception);