Пример #1
0
        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());
        }
Пример #2
0
        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());
        }
Пример #3
0
        private void Erosao_Click(object sender, EventArgs e)
        {
            Imagem B = new Imagem();

            B.Clone(imagens[count - 1]);
            B.Erosao(ElEst.quadrado, 1, 1, null);
            Visualizar(B, "Erosão " + B.NomeArquivo());
        }
Пример #4
0
        private void Fechamento_Click(object sender, EventArgs e)
        {
            Imagem dil = new Imagem();

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

            erod.Clone(imagens[count - 1]);
            erod.Erosao(ElEst.quadrado, 1, 1, null);
            Visualizar(erod, "Fechamento " + erod.NomeArquivo());
        }
Пример #5
0
        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());
        }