private void MediaImagens_Click(object sender, EventArgs e) { Imagem imagem = new Imagem(); imagem.Clone(imagens[count - 1]); bool cond = true; int k = 1; while (k < count && cond) { cond = imagem.MatrizCor.Width >= imagens[k].MatrizCor.Width && imagem.MatrizCor.Height >= imagens[k++].MatrizCor.Height; } if (cond) { for (k = 1; k < count; k++) { imagem.MathOp(MathOperationType.adicao, imagens[k]); } Imagem divisor = new Imagem(); divisor.CreatePlainImage(imagem.MatrizCor.Width, imagem.MatrizCor.Height, count); imagem.MathOp(MathOperationType.divisao, divisor); Visualizar(imagem, "Média de " + (count) + " imagens"); } else { MessageBox.Show("Imagens possuem resoluções diferentes!"); } }
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 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 Divisao_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.MathOp(MathOperationType.divisao, imagens[k]); } imagem.CorrecaoMinMax(Correcao.proporcao); Visualizar(imagem, "Divisão"); }
private void SubtracaoMedia_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.MathOp(MathOperationType.subtracao, imagens[k]); } imagem.CorrecaoMinMax(Correcao.proporcao); Visualizar(imagem, "Subtração Corrigida"); }
private void Adicao_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.MathOp(MathOperationType.adicao, imagens[k]); } imagem.CorrecaoMinMax(Correcao.limiar); Visualizar(imagem, "Soma Limiar"); }
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()); }