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 Smoothing_Click(object sender, EventArgs e) { Imagem erod = new Imagem(); erod.Clone(imagens[count - 1]); erod.ErosaoCinza(ElEst.quadradoCinza, 1, 1); Visualizar(erod, "Erosão " + erod.NomeArquivo()); Imagem dil = new Imagem(); dil.Clone(imagens[count - 1]); dil.DilatacaoCinza(ElEst.quadradoCinza, 1, 1); dil.CorrecaoMinMax(Correcao.proporcao); Visualizar(dil, "Abertura " + dil.NomeArquivo()); Imagem dil2 = new Imagem(); dil2.Clone(imagens[count - 1]); dil2.DilatacaoCinza(ElEst.quadradoCinza, 1, 1); dil2.CorrecaoMinMax(Correcao.proporcao); Visualizar(dil2, "Dilatação " + dil2.NomeArquivo()); Imagem erod2 = new Imagem(); erod2.Clone(imagens[count - 1]); erod2.ErosaoCinza(ElEst.quadradoCinza, 1, 1); Visualizar(erod2, "Fechamento -> Smoothing" + erod2.NomeArquivo()); }
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 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 Visualizar(Imagem imagem, string text) { if (imagem != null) { if (imagem.MatrizCor.Matriz != null) { imagem.ToImage(); } PictureBox pb = new PictureBox { Height = imagem.ImagemBMP.Height, Width = imagem.ImagemBMP.Width, Image = imagem.ImagemBMP, MaximumSize = new Size(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height), SizeMode = PictureBoxSizeMode.Zoom }; imagens.Add(imagem); count++; Visualizador visualizador = new Visualizador { Text = text, AutoSize = true }; visualizador.Controls.Add(pb); visualizador.Show(); pictureBox1.Image = imagens[count - 1].ImagemBMP; } }
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()); }
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 Histograma_Click_1(object sender, EventArgs e) { Imagem imagem = new Imagem(); imagem.Clone(imagens[count - 1]); imagem.CorrecaoHistograma(); Visualizar(imagem, "Histograma Corrigido " + imagem.NomeArquivo()); }
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 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 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 DilataçãoToolStripMenuItem_Click(object sender, EventArgs e) { Imagem B = new Imagem(); B.Clone(imagens[count - 1]); B.Dilatacao(ElEst.quadrado, 1, 1, null); Visualizar(B, "Dilatação " + B.NomeArquivo()); }
private void TonsDeCinzaToolStripMenuItem_Click(object sender, EventArgs e) { Imagem imagem = new Imagem(); imagem.Clone(imagens[count - 1]); imagem.ToGray(); Visualizar(imagem); }
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 DtAperiodicoDispersao_Click(object sender, EventArgs e) { Dithering dithering = new Dithering(); Imagem B = new Imagem(); B.Clone(imagens[count - 1]); if (dithering.ShowDialog() == DialogResult.OK) { B.ToAperiodicoDispersao(dithering.Vizinhos); Visualizar(B, "Dithering " + dithering.Dispersao + "X" + dithering.Dispersao + " " + imagens[count - 1].NomeArquivo() + imagens[count - 1].ExtensaoArquivo()); } }
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 Limiar_Click(object sender, EventArgs e) { Dithering dithering = new Dithering(); Imagem B = new Imagem(); B.Clone(imagens[count - 1]); if (dithering.ShowDialog() == DialogResult.OK) { B.ToLimiar(dithering.Limiar); Visualizar(B); } }
private void OpQuantizacao_Click(object sender, EventArgs e) { Quantizacao quant = new Quantizacao(); Imagem imagem = new Imagem(); imagem.Clone(imagens[count - 1]); if (quant.ShowDialog() == DialogResult.OK) { imagem.ToQuant(quant.niveis); Visualizar(imagem); } }
private void FiltroMediana_Click(object sender, EventArgs e) { var raioFiltro = new RaioFiltro(); Imagem imagem = new Imagem(); imagem.Clone(imagens[count - 1]); if (raioFiltro.ShowDialog() == DialogResult.OK) { imagem.FiltroMediana(raioFiltro.raio); Visualizar(imagem); } }
private void LimiarComRuido_Click(object sender, EventArgs e) { Dithering dithering = new Dithering(); Imagem B = new Imagem(); B.Clone(imagens[count - 1]); if (dithering.ShowDialog() == DialogResult.OK) { B.ToLimiarAleatorio(dithering.Limiar, dithering.Rinf, dithering.Rsup); Visualizar(B); } }
private void PeriodicoPorAglomeracao_Click(object sender, EventArgs e) { Dithering dithering = new Dithering(); Imagem B = new Imagem(); B.Clone(imagens[count - 1]); if (dithering.ShowDialog() == DialogResult.OK) { B.ToQuant(dithering.Dispersao * dithering.Dispersao + 1); B.ToPeriodicoAglomeracao(dithering.Dispersao); Visualizar(B, "Dithering Aglomeração" + dithering.Dispersao + "X" + dithering.Dispersao + " " + imagens[count - 1].NomeArquivo() + imagens[count - 1].ExtensaoArquivo()); } }
public int[,] GetEE(Imagem B) { int x, y; int[,] EE = new int[B.MatrizCor.Width, B.MatrizCor.Height]; for (x = 0; x < B.MatrizCor.Width; x++) { for (y = 0; y < B.MatrizCor.Height; y++) { EE[x, y] = B.MatrizCor.Matriz[x, y, 0]; } } return(EE); }
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()); }
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 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"); }
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 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 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"); }