Roadmap Processamento de Imagens

16 respostas
ViniGodoy

Bom, manipulação de imagens é um tema recorrente aqui, então resolvi postar esse guia para aqueles que estão entrando nesse mundo agora, e querem usar Java.

[size=18]Para manipular imagens com eficiência[/size]

Using Rasters For Image Processing

Java Foundation Classes in a Nutshell:

Jerry’s Java Image Processing Pages

[size=18]Para desenhar no Java 2D[/size]

Ponto V - Java 2D

Painting in AWT and Swing - http://java.sun.com/products/jfc/tsc/articles/painting/#swing
Space Invaders - An Accelerated Tutorial - http://www.cokeandcode.com/info/tut2d.html
Killer Game Programming in Java: http://fivedots.coe.psu.ac.th/~ad/jg/
Lesson: Performing Custom Painting - http://docs.oracle.com/javase/tutorial/uiswing/painting/
Trail: 2D Graphics: Table of Contents - http://docs.oracle.com/javase/tutorial/2d/TOC.html

[size=18]APIs para Processamento de Imagens[/size]

Bindings para APIs não-Java (usam JNI)

[size=18]Sobre performance e ergonomia da JVM[/size]

Visual VM: http://visualvm.java.net/docindex.html
Introduction to Profiling Java Applications: http://netbeans.org/kb/60/java/profiler-intro.html

Brian Goetz Publications:

Tunning Garbage Collection With JVM 5: http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html

Se alguém souber de mais links, sinta-se à vontade para complementar esse post.

16 Respostas

jpcasati

Muuuito bom! Valeu! Trabalho com imagens mas não uso java, vou começar a usar agora.

ViniGodoy

Você usa o que? C++ com opencv?

Dieval_Guizelini

Muito bom Vinicius,

vou contribuir com alguns links de assuntos correlatos que andei brincando (mas faz algum tempo):

API 3D
http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138252.html

http://www.java3d.org/
OpenGL - http://nis-lab.is.s.u-tokyo.ac.jp/~robin/jGL/
jCUDA - http://www.hoopoe-cloud.com/Solutions/jCUDA/Default.aspx
Lg3d - http://java.net/projects/lg3d
Batik SVG Toolkit - http://xmlgraphics.apache.org/batik/

Outros resources
http://www.opengl.org/
http://www.mesa3d.org/

abraços

ViniGodoy

Eu prefiro, para OpenGL, esse binding aqui: http://lwjgl.org/

GraveDigger

Bom Dia Vini,

Boas dicas.

Pretendo começar a estudar manipulação de imagem e vídeo, em especial a parte de reconhecimento de padrões.

Estava pensando em iniciar pelo OpenCV mas agora fiquei na dúvida, você acredita que os recursos citados nesse post atendam essa área que pretendo me dedicar ou OpenCV ainda é o mais indicado para esse caso?

Ressaltando que meu objetivo é a interpretação dos dados de imagem e vídeos já existentes, não geração dos mesmos.

Abs

ViniGodoy

Use o opencv, especialmente para vídeo.
É mais rápido, mais completo e mais fácil de usar.

O java é legal só se vc quiser estudar como esses algoritmos funcionam (implementar seu próprio algorítmo de dilatação, por exemplo).

GraveDigger

Entendi.

Farei isso mesmo então, já tenho até o livro aqui :slight_smile:

Obrigado

ViniGodoy

Se quiser usar o C++, dê uma olhada na nova API do Opencv 2.0.

O legal é que vc pode estudar pelo livro, entender os conceitos, e depois só adaptar a sintaxe.

A lib em C++ é bem mais fácil, orientada a objetos e tão rápida quanto.
http://opencv.willowgarage.com/documentation/cpp/

GraveDigger

Sim, vou partir pro C++ mesmo.

Aproveito e já estudo a linguagem que é algo que estava querendo fazer há algum tempo já.

Valeu

ViniGodoy

Bom, aí vc também pode olhar meu Roadmap C++:
http://www.pontov.com.br/site/index.php/cpp/46-conceitos-basicos/88-roadmap-c

GraveDigger

Oi Vini,

Aproveitando o embalo mas sem desviar muito do tópico.

Qual dos livros citados no roadmap você indica pra quem já programa em outras linguagens(exceto C) ?

Não quero pegar um livro muito básico mas também fico com receio de pular conceitos importantes.

Programo em java e algumas outras linguagens faz um bom tempo já, queria um livro que me permitisse partir desse ponto.

Abs

ViniGodoy

Um desses aqui:
Programação Orientada a Objetos em C++, do prof. André Duarte Bueno (UFSC): Ótimo material, em português e disponível para download gratuitamente aqui.
Programming: Principles and Practice Using C++: Livro básico da linguagem C++, escrito pelo próprio Bjarne Stroustrup, criador da linguagem.
Accelerated C++: Practical Programming by Example, do Andrew Koenig: Para quem não sabe C, e nem quer saber, mas quer aprender C++;[/quote]

Eles são complementares. Ou seja, obtendo um, não precisa comprar o outro.
O Accelerated C++ é o mais “direto” deles. Também é recomendado pelo Stroustrup.

GraveDigger

Opa,

Obrigado novamente pela dica, vou partir pra esse Accelerated C++.

Abs

J

GraveDigger:
Opa,

Obrigado novamente pela dica, vou partir pra esse Accelerated C++.

Abs

É interessante você usar uma lingiuagem simples como java ou pascal para começar a implementar esses algoritmos(para aprender mesmo). Quando precisar criar uma ferramenta relacionada, partir para o c++ para conseguir um bom tempo de resposta deles.

jpcasati

Você usa o que? C++ com opencv?

Uso MatLab.

AssemblyXP

Você usa o que? C++ com opencv?

Seguinte… ViniGodoy, nao tem muito haver mais se puder me responder… ou entao abrirei um topico…

preciso listar as imagens de um banco de dados em minha aplicaçao SWING(Desktop).

Estou usando desta maneira:

public BufferedImage searchFoto(int codFicha) throws SQLException{
		BufferedImage img = null; 
		
		String sql = "SELECT imagem FROM db_recfirma_arquivos.tb_documentos where cod=?"; 
		ResultSet rs = null;
		try {
			PreparedStatement psmt = con.prepareStatement(sql);
			psmt.setInt(1,codFicha);
			rs = psmt.executeQuery();
		} catch (SQLException e) {
			throw new SQLException("Não foi possível obter os dados do banco!",e);
		}
		if(rs.next()){			try {
				img = ImageIO.read(new ByteArrayInputStream(rs.getBytes("imagem")));
			} catch (IOException e) {
					e.printStackTrace();
			}
		}
		return img;
	}

o tipo do campo da minha base de dados e: MEDIUMBLOB

MAIS nao esta trazendo… para meu componente que e um JPanel que recebe um BufferedImage

JPanel im = null;
			try{
				im = new JImagePanel(d); 
			}
			catch (NullPointerException e) {
				e.printStackTrace();
}

porque esses dados foram importados de outra base de dados, e entao o tamanho de cada imagen esta mais ou menos 90kb a 300kb

e quando eu salvo uma imagen com minha webcam em outra tabela com o mesmo tipo de campo (Mediumblob) o tamanho fica em torno de 20kb no maximo, e entao
e listado em meu JPanel. nao sei por que

tem como ajudar?

Criado 15 de junho de 2011
Ultima resposta 13 de fev. de 2012
Respostas 16
Participantes 6