/// <summary>
        /// Initializes MainWindow and initializes algorithm object
        /// </summary>
        public MainWindow()
        {
            using (var templateImage = new AvlNet.Image())
            {
                try
                {
                    InitializeComponent();

                    AVL.LoadImage(TemplateImagePath, false, templateImage);
                    GasketInspector.Init(templateImage);
                }
                catch (Exception e)
                {
                    startButton.Enabled = false;
                    MessageBox.Show(e.Message);
                }
            }
        }
        /// <summary>
        /// Performs inspection in 500ms interval.
        /// </summary>
        private void timer_Tick(object sender, EventArgs e)
        {
            using (var currentImage = new AvlNet.Image())
            {
                if (currentImageIndex < ImagePaths.Length)
                {
                    AVL.LoadImage(ImagePaths[currentImageIndex], false, currentImage);
                    GasketInspector.Inspect(currentImage, out circles, out arcs, out segments);

                    if (pictureBox1.Image != null)
                    {
                        pictureBox1.Image.Dispose();
                    }

                    pictureBox1.Image = currentImage.CreateBitmap();
                    ++currentImageIndex;
                }
                else
                {
                    timer.Enabled       = false;
                    startButton.Enabled = true;
                }
            }
        }
 /// <summary>
 /// Cleans resources
 /// </summary>
 private void MainWindow_FormClosed(object sender, FormClosedEventArgs e)
 {
     GasketInspector.ClearResources();
 }