private void LaplaceToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Imagem imagem = new Imagem();

            imagem.Clone(imagens[count - 1]);
            imagem.Bordas(EdgeDetection.Laplace);
            Visualizar(imagem, "Bordas Laplace " + imagem.NomeArquivo());
        }
        private void BordasIsotropico_Click(object sender, EventArgs e)
        {
            Imagem imagem = new Imagem();

            imagem.Clone(imagens[count - 1]);
            imagem.Bordas(EdgeDetection.Isotropico);
            Visualizar(imagem, "Bordas Isotrópico " + imagem.NomeArquivo());
        }
        private void PassaAltaToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Imagem imagem = new Imagem();

            imagem.Clone(imagens[count - 1]);
            imagem.FiltroPassaAlta();;
            Visualizar(imagem, "Filtro Passa-Alta " + imagem.NomeArquivo());
        }
        private void InverterCores_Click(object sender, EventArgs e)
        {
            Imagem imagem = new Imagem();

            imagem.Clone(imagens[count - 1]);
            imagem.InverterCores();
            Visualizar(imagem, "Inverso " + imagem.NomeArquivo());
        }
        private void wavefrontToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Imagem B = new Imagem();

            B.Clone(imagens[count - 1]);
            B.Wavefront();
            B.CorrecaoMinMax(Correcao.proporcao);
            Visualizar(B, "Erosão " + B.NomeArquivo());
        }
        private void DilatacaoCinza_Click(object sender, EventArgs e)
        {
            Imagem B = new Imagem();

            B.Clone(imagens[count - 1]);
            B.DilatacaoCinza(ElEst.quadradoCinza, 1, 1);
            B.CorrecaoMinMax(Correcao.proporcao);
            Visualizar(B, "Erosão " + B.NomeArquivo());
        }
        private void Gradiente_Click(object sender, EventArgs e)
        {
            Imagem dil  = new Imagem();
            Imagem erod = new Imagem();

            erod.Clone(imagens[count - 1]);
            dil.Clone(imagens[count - 1]);

            dil.DilatacaoCinza(ElEst.quadradoCinza, 1, 1);
            dil.CorrecaoMinMax(Correcao.proporcao);
            Visualizar(dil, "Dilatação " + dil.NomeArquivo());

            erod.ErosaoCinza(ElEst.quadradoCinza, 1, 1);
            erod.CorrecaoMinMax(Correcao.proporcao);
            Visualizar(erod, "Erosão " + erod.NomeArquivo());

            dil.MathOp(MathOperationType.subtracao, erod);
            dil.CorrecaoMinMax(Correcao.proporcao);
            Visualizar(dil, "Gradiente " + dil.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 FechamentoCinza_Click(object sender, EventArgs e)
        {
            Imagem dil = new Imagem();

            dil.Clone(imagens[count - 1]);
            dil.DilatacaoCinza(ElEst.quadradoCinza, 1, 1);
            dil.CorrecaoMinMax(Correcao.proporcao);
            Visualizar(dil, "Dilatação " + dil.NomeArquivo());
            Imagem erod = new Imagem();

            erod.Clone(imagens[count - 1]);
            erod.ErosaoCinza(ElEst.quadradoCinza, 1, 1);
            Visualizar(erod, "Fechamento " + erod.NomeArquivo());
        }
        private void Abertura_Click(object sender, EventArgs e)
        {
            Imagem erod = new Imagem();

            erod.Clone(imagens[count - 1]);
            erod.Erosao(ElEst.quadrado, 1, 1, null);
            Visualizar(erod, "Erosão " + erod.NomeArquivo());
            Imagem dil = new Imagem();

            dil.Clone(imagens[count - 1]);
            dil.Dilatacao(ElEst.quadrado, 1, 1, null);
            dil.CorrecaoMinMax(Correcao.limiar);
            Visualizar(dil, "Abertura " + dil.NomeArquivo());
        }
        private void BordaExterna_Click(object sender, EventArgs e)
        {
            Imagem dil = new Imagem();

            dil.Clone(imagens[count - 1]);
            dil.Dilatacao(ElEst.quadrado, 1, 1, null);
            Visualizar(dil, "Dilatação " + dil.NomeArquivo());
            Imagem borda = new Imagem();

            borda.Clone(imagens[count - 1]);
            borda.MathOp(MathOperationType.subtracao, imagens[count - 2]);
            borda.CorrecaoMinMax(Correcao.limiar);
            Visualizar(borda, "Borda Externa " + borda.NomeArquivo());
        }
        private void BordaInterna_Click(object sender, EventArgs e)
        {
            Imagem erod = new Imagem();

            erod.Clone(imagens[count - 1]);
            erod.Erosao(ElEst.quadrado, 1, 1, null);
            Visualizar(erod, "Erosão " + erod.NomeArquivo());
            Imagem borda = new Imagem();

            borda.Clone(imagens[count - 2]);
            borda.MathOp(MathOperationType.subtracao, imagens[count - 1]);
            borda.CorrecaoMinMax(Correcao.limiar);
            Visualizar(borda, "Borda Interna " + borda.NomeArquivo());
        }
        private void StRaizQuadrada_Click(object sender, EventArgs e)
        {
            Stretching stretching = new Stretching();
            Imagem     imagem     = new Imagem();

            imagem.Clone(imagens[count - 1]);
            if (stretching.ShowDialog() == DialogResult.OK)
            {
                imagem.Stretching(StretchingType.linear, stretching.A, stretching.B);
                if (stretching.correcaoProporcional)
                {
                    imagem.CorrecaoMinMax(Correcao.proporcao);
                }
                else
                {
                    imagem.CorrecaoMinMax(Correcao.limiar);
                }
                Visualizar(imagem, "Stretching Raiz Quadrada " + imagem.NomeArquivo());
            }
        }