private void Esqueleto_Click(object sender, EventArgs e)
        {
            Imagem process = new Imagem();
            Imagem entrada = new Imagem();
            Imagem op      = new Imagem();
            Imagem saida   = new Imagem();

            saida.CreatePlainImage(imagens[count - 1].MatrizCor.Width, imagens[count - 1].MatrizCor.Height, 0);
            process.Clone(imagens[count - 1]); //armazena a saida
            entrada.Clone(imagens[count - 1]); //armazena a entrada erodida
            op.Clone(imagens[count - 1]);      //Imagem que sofre abertura

            while (!entrada.IsNull())
            {
                op.Erosao(ElEst.quadrado, 1, 1, null); op.Dilatacao(ElEst.quadrado, 1, 1, null);
                process.MathOp(MathOperationType.subtracao, op);
                saida.LogicOp(LogicOperationType.or, process);
                entrada.Erosao(ElEst.quadrado, 3, 3, null);
                process.Clone(entrada);
                op.Clone(entrada);
            }
            Imagem combo = new Imagem();

            combo.Clone(imagens[count - 1]);
            Visualizar(saida, "Esqueletização " + saida.NomeArquivo());
            combo.MathOp(MathOperationType.subtracao, saida);
            combo.CorrecaoMinMax(Correcao.limiar);
            Visualizar(combo, "Esqueletização " + saida.NomeArquivo());
        }
        private void AcertoEErro_Click(object sender, EventArgs e)
        {
            Imagem A  = new Imagem();
            Imagem Ac = new Imagem();

            A.Clone(imagens[count - 1]);
            Ac.Clone(A);
            Ac.LogicOp(LogicOperationType.not, null);
            Imagem B = GetImagemB();

            B.ToInt();
            Visualizar(B);
            Imagem B1 = new Imagem();
            Imagem B2 = new Imagem();

            B1.Clone(B);
            B2.Clone(B);
            B2.AddBorder(1, 1, 0);
            B2.LogicOp(LogicOperationType.not, null);
            A.Erosao(ElEst.quadrado, 1, 1, B1);
            Ac.Erosao(ElEst.quadrado, 1, 1, B2);
            A.LogicOp(LogicOperationType.and, Ac);
            A.Dilatacao(ElEst.quadrado, 1, 1, null);
            Visualizar(A);

            //W.MathOp(MathOperationType.subtracao, B, 1);
            //Visualizar(B, "Teste");
            //A.Dilatacao(ElEst.quadrado, 1, 1, null);
            //A.CorrecaoMinMax(Correcao.limiar);
            //Visualizar(A, "Dilatação " + A.NomeArquivo());
        }
        private void LogicNot_Click(object sender, EventArgs e)
        {
            var count2 = count;

            for (int k = 0; k < count2; k++)
            {
                Imagem imagem = new Imagem();
                imagem.Clone(imagens[k]);
                imagem.LogicOp(LogicOperationType.not, null);
                Visualizar(imagem, "NOT " + imagem.NomeArquivo());
            }
        }
        private void LogicSub_Click(object sender, EventArgs e)
        {
            Imagem imagem = new Imagem();

            imagem.Clone(imagens[0]);
            if (count == 1)
            {
                Visualizar(GetImagemB());
            }
            for (int k = 1; k < count; k++)
            {
                imagem.LogicOp(LogicOperationType.sub, imagens[k]);
            }
            Visualizar(imagem, "SUB");
        }