255, 240, 0, sua cor inversa e o RGB 0, 15, 255.Mediana: filtro usado para eliminar ruidos da imagem. O algoritmo faz um calculo da media de cores de uma certa regiao de pixels e determina a cor media daquele trecho da imagem. Se houver um pixel preto (ruido) em meio ha varios pixels brancos a aplicacao do filtro eliminara este pixel preto, tirando o ruido da imagem.Saiba mais sobre tratamento digital de imagens: PDIConheca os principais filtros do Adobe Photoshop: Filtros PhotoshopBom, agora vamos ao que interessa: criar os filtros utilizando a linguagem JAVA!Vou criar uma classe chamada App1 que simplesmente vai aplicar o filtro para deixar uma imagem em escala de cinza, e outra classe chamada Filtro que contera os algoritmos dos filtros. A classe Exibicao servira apenas para exibir as imagens utilizadas em um componente JFrame, nada muito funcional, apenas para deixar o exemplo mais bonitinho.fonte (oxenteexception)App1.java123456789101112131415161718192021222324252627282930public class App1 { public static void main(String[] args) throws IOException { try { //carrega nova imagem BufferedImage imagem1 = ImageIO.read(new File("images/imagem1.jpg")); //instancia um filtro e aplica a escala de cinza Filtro filtro = new Filtro(); filtro.escalaDeCinza(imagem1); //gera uma nova imagem a partir da imagem1 ImageIO.write(imagem1,"jpg",new File("images/imagem2.jpg")); //aqui apenas para demonstracao, //carreguei novamente as duas imagens para exibi-las dentro de um JFrame imagem1 = ImageIO.read(new File("images/imagem1.jpg")); BufferedImage imagem2 = ImageIO.read(new File("images/imagem2.jpg")); Exibicao show = new Exibicao(); show.exibirImagem(imagem1, imagem2); System.out.println("Filtro aplicado com sucesso!"); } catch(IOException e){ System.out.println("Erro! Verifique se o arquivo especificado existe e tente novamente."); } catch(Exception e){ System.out.println("Erro! " + e.getMessage()); } } }Filtro.java1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465public class Filtro { //metodo de aplicacao do filtro escala de cinza //recebe como parametro uma imagem public static BufferedImage escalaDeCinza(BufferedImage imagem) { //pegar largura e altura da imagem int width = imagem.getWidth(); int height = imagem.getHeight(); int media = 0; //laco para varrer a matriz de pixels da imagem for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { //rgb recebe o valor RGB do pixel em questao int rgb = imagem.getRGB(i, j); int r = (int)((rgb&0x00FF0000)>>>16); //R int g = (int)((rgb&0x0000FF00)>>>8); //G int b = (int) (rgb&0x000000FF); //B //media dos valores do RGB //sera o valor do pixel na nova imagem media = (r + g + b) / 3; //criar uma instancia de Color Color color = new Color(media, media, media); //setar o valor do pixel com a nova cor imagem.setRGB(i, j, color.getRGB()); } } return imagem; } public static BufferedImage negativo(BufferedImage image) { int width = image.getWidth(); int height = image.getHeight(); for (int i = 0; i < width; i++) { for (int j = 0; j < height; j++) { int rgb = image.getRGB(i, j); //a cor inversa e dado por 255 menos o valor da cor int r = 255 - (int)((rgb&0x00FF0000)>>>16); int g = 255 - (int)((rgb&0x0000FF00)>>>8); int b = 255 - (int) (rgb&0x000000FF); Color color = new Color(r, g, b); image.setRGB(i, j, color.getRGB()); } } return image; } public static BufferedImage threshold(BufferedImage image, int limiar) { int width = image.getWidth(); int height = image.getHeight(); for (int i = 0; i <