Estou fazendo um trabalho sobre Processamento de Imagens e preciso juntamente com meu colega de dupla tentar criar um programa que aplique filtros na imagem, faça equalização de histograma e por aí.
Para aplicar os filtros, tenho que transformar a imagem numa matriz de pixels. Depois, de acordo com o filtro, eu vou percorrer cada pixel da imagem e modifico o valor deste pixel de acordo com o valor dos seus pixels vizinhos combinado com os valores de matriz responsável pelo filtro (máscara).
Principalmente nos filtros, para que esse processamento seja possível eu preciso percorrer os pixels da imagem.
Eu peço ajuda pra que possam me indicar alguma classe, ou trecho de código, que me ajude a ler a imagem e jogar seus pixels numa matriz. Ou seja, eu crio uma matriz com o mesmo tamanho da imagem e o valor do pixel P(x, y) da imagem é escrito na posição M[x, y] da matriz. Assim, eu aplico o filtro nos pixels da matriz, seus valores serão mudados e pinto os valores de pixels novos na tela para o usuário, como resultado do filtro…
Eu procurei material do google, achei algumas coisas mas não é o que eu preciso… Eu peço ajuda de vocês.
Desde já agradeço muito
public static void main( String[] args ) {
new CarregaImagem().carregar();
}
public void carregar() {
try {
BufferedImage bufi = ImageIO.read( getClass().getResourceAsStream( "imagem.bmp" ) );
Color c = null;
for ( int i = 0; i < bufi.getHeight(); i++ ) {
for ( int j = 0; j < bufi.getWidth(); j++ ) {
c = new Color( bufi.getRGB( i, j ) );
System.out.print( c + " " );
}
System.out.println();
}
} catch ( IOException exc ) {
exc.printStackTrace();
}
}
}[/code]
Dê uma olhada nos pacotes java.awt, java.awt.image (+subpacotes) e javax.imageio (+subpacotes) que você vai encontrar tudo que você precisa. Dê uma olhada na documentação para ver o modo que é obtido o pixel usando o getRGB que usei. No caso é usando o modo TYPE_INT_ARGB.
Vc pode criar uma matriz de Colors, usando como esqueleto o método carregar…
Puxa, valeu
Já tá ótimo , nossa , e felizmente vouprecisar trabalhar apenas com imagens em tons de cinza; já estou achando como se faz p/ mandar os RGBs para grayscale. Obrigada também pelas classes; eu vou “futricar” nelas
P/ o pessoal do fórum, quando o trabalho ficar pronto eu vou postá-lo aqui, p/ outras pessoas que precisarem de uma empurrada que nem eu precisei
Valeu, david Falo, galera
Se suas imagens já são salvas em escalas de cinza, não tem problema, usa da mesma forma. Caso contrário é só mudar o modo das cores para TYPE_BYTE_GRAY.
oi gente!! =)
espero q estejam tds bem, trabalhando mt, estudando mt, enfim… tudo o que é bom custa muito esforço mas vale muito a pena!
Vou postar finalmente depois de quase um ano o código-fonte do trabalho de imagens… eu estava mexendo nele mas não estou tendo tempo mais… então, como é uma coisa que pedem bastante, tô postando… ajudou muito quando precisei e espero ajudar tambem a outras pessoas <=) isso sem contar os verdadeiros milagres <3<3<3<3<3<3<3 que este trabalho trouxe a minha vida…
enfim, está aí… qualquer duvida me avisem ou postem no forum ,q tem mta gente legal aqui pra dar uma mão…
beijos grandes, fiquem todos bem*
até mais!! =)
"ACREDITAR SEMPRE E DESISTIR JAMAIS! VIDA E VITÓRIA POSSUEM O MESMO SIGNIFICADO!" =DDDDDDD
Existe uma biblioteca chamada opencv para linguagem c e também c++. É desenvolvida pela intel e é usada em sistema de tempo real. É muito otimizada mesmo.
Caso queira praticar peocessamento de imagens aconselho usar o framework qt para c++. O set de classes para processamento de imagens é muito bom e simples de utilizar, além de ser muito rápido e exigir um runtime leve(poucas bibliotecas carregadas na memória ram). Existem versões para msc++ ,mingw e set de compiladores gnu em linux.
O método scanline da classe Qimage: uchar* QImage::scanline(int i) volta um apontador para a linha i da imagem. Você pode percorrer a linha processando seus pixel.
Estou fazendo um trabalho, que creio que eu tenha que percorrer cada pixel da imagem e transformá-lo em uma outra imagem de tamanho maior. No caso fazer um foto mosaico.
Pelo que olhei talvez seu trabalho me ajude um pouco, gostaria de saber como acessar cada pixel da imagem e substituir…tb usarei imagens em tom de cinza
[quote=yasminemalafaia]Estou fazendo um trabalho, que creio que eu tenha que percorrer cada pixel da imagem e transformá-lo em uma outra imagem de tamanho maior. No caso fazer um foto mosaico.
Pelo que olhei talvez seu trabalho me ajude um pouco, gostaria de saber como acessar cada pixel da imagem e substituir…tb usarei imagens em tom de cinza
Obrigada!![/quote]
Exatamente como já está postado no exemplo desse tópico que você ressuscitou!
Veja o post do DavidBuzatto!