Processamento Digital de Imagens  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Online

VantuilJose wrote:Demorei um tempão pra postar... mas...
juliocbq, como funcionaria essa rede neural? Existe implementação em Java? Que bilbiografia você me sugere?

E vc nasper1904? conseguiu alguma coisa? Desenvolveu alguma parte? E quanto ao sistema que pega do Scanner, funcionar com qualquer Scanner? ou tem que ser especificamente com ele?


http://www.jeffheaton.com/ai/

www.citrox.com.br
nasper1904
Debugger
[Avatar]

Membro desde: 17/03/2005 20:38:18
Mensagens: 69
Offline

VantuilJose wrote:
E vc nasper1904? conseguiu alguma coisa? Desenvolveu alguma parte? E quanto ao sistema que pega do Scanner, funcionar com qualquer Scanner? ou tem que ser especificamente com ele?


OMR
Bom, a solução para leitura OMR fiz na mão, usando os recursos do JAVA. Eu estabeleço a posição de cada questão na imagem (que devem ter sempre a mesma resolução) e em seguida recorto cada questão em ou outro BufferedImage, dessa forma faço a verificação pixel a pixel na questão para saber se está marcada ou desmarcada, então é só fazer o mesmo para todas as questões.

TRATAMENTO DA IMAGEM
O problema de rotação da imagem e remoção das bordas resolvi com o Kofax VRS, que faz esse trabalho durante o escaneamento, ou seja, durante o escaneamento o kofax vrs faz o tratamento da imagem e a aplicação Java pega a imagem só no ponto de fazer a leitura das questões.

LEITURA DE CÓDIGO DE BARRAS
Porém a dificuldade que estou tendo agora é para leitura de código de barras.
Consegui algumas APIs pagas (Rvision e barcodereader), mas que não dão 100% de confiança na leitura, sempre vem algum código com número errado.
Se alguém poder ajudar com alguma solução para leitura de código de barras, agradeço desde já.

SCANNER
Quanto à comunicação com o scanner, a api JTwain funciona para os principais scanners do mercado, inclusive para Webcams, segundo o site do fornecedor asprise.com/product/jtwain.



Segue em anexo a classe que estou desenvolvendo para leitura dos cartões


As pessoas boas devem amar seus inimigos. (chaves)

"Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crer não pereça, mas tenha a vida eterna" (Jo 3:16)
[MSN]
VantuilJose
JavaChild
[Avatar]

Membro desde: 15/09/2008 11:47:53
Mensagens: 101
Offline

Gostei da sua implementação, o problema é que ela é só pra um tipo de cartão, precisava de uma genérica, ou melhor, meu maior problema é criar modelos de gabaritos sabe? tipo template?

juliocbq, aquele material sobre Inteligência artificial em Java é muito bom!!! Recomendo pra quem precisa...

Vantuil Oliveira
Tecnólogo em Análise e Desenvolvimento de Sistemas - IFMG Bambuí
Mestrando em Ciência da Computação - UFOP
-
"I am the maniac serial killer that knows where you live who will maintain your code!"
[MSN]
nasper1904
Debugger
[Avatar]

Membro desde: 17/03/2005 20:38:18
Mensagens: 69
Offline

é verdade, eu fiz assim porque aqui na empresa só tem um tipo de cartão de vestibular.
Na verdade eu "roubei" um pouco da idéia Kofax (Ascent Capture), porque ele usa essa lógica. Primeiro você faz o mapeamento das questões no cartão digitalizado criando um template. Então, a partir deste template, você faz a leitura do lote de cartões gerando um arquivo com o resultado.
Só que no kofax tem uma interface gráfica para mapear o cartão, e na minha implementação fiz direto no código porque ainda tô em fase de teste.
Mas por enquanto é isso...

As pessoas boas devem amar seus inimigos. (chaves)

"Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crer não pereça, mas tenha a vida eterna" (Jo 3:16)
[MSN]
LucianCaetano
Smalltalk

Membro desde: 10/09/2010 02:01:18
Mensagens: 1
Offline

nasper1904 seu algoritmo tem um problema pois ele valida conforme a quantidade de cores desejadas dos pixeis da imagem(Imagine se preenchesse porfora e der a quantidade desejada) o interessante seria você pegar essa área selecionada e achar o ponto médio do centro em relação a área da parte da figura e procurar em um raio menor que o da bolota baseando no centro da imagem recortada para assim qualificar o alvo da também da para fazer uma zona de correção na qual teria menos relevância na porcentagem total do preenchimento da bolota mais pode significativamente aumentar a precisão.

Alias seu algoritmo me ajudou a aprender a trabalhar com imagens em java já que existe pouca documentação.

Boa sorte ai.
nasper1904
Debugger
[Avatar]

Membro desde: 17/03/2005 20:38:18
Mensagens: 69
Offline

o interessante seria você pegar essa área selecionada e achar o ponto médio do centro em relação a área da parte da figura e procurar em um raio menor que o da bolota baseando no centro da imagem recortada para assim qualificar o alvo da também da para fazer uma zona de correção na qual teria menos relevância na porcentagem total do preenchimento da bolota mais pode significativamente aumentar a precisão.


Não entendi muito bem sua idéia...
Já faz tempo que parei de mexer nesse sistema também.
Mas resumidamente, a idéia do código que eu fiz é:
selecionar uma zona da imagem (zona da bolota da questão do cartão) e verificar quantos pixels brancos e pretos existem nesta zona. Então depois eu verifico a porcentagem de pixels pretos, se for maior que o valor X eu considero que a zona foi marcada.

O que é ruim é porque eu pego a zona da bolota de forma estática (estabelecendo a posição dela, em pixels, no código) só que a cada digitalização, cada cartão (são mts cartões) apresenta uma leve variação na posição (fica um pouco torno, etc), e isso atrapalha na leitura dessas bolotas.
Pra solucionar, teria que ter um código para localizar os 4 cantos do cartão e ajustar, caso a imagem esteja um pouco torna, ou afastada da posiçao certa.
Porém, como eu saí da empresa que eu estava, não dei mais continuidade neste projeto.

Mas se alguém fizer algo do tipo, eu gostaria muito de ver este código.


As pessoas boas devem amar seus inimigos. (chaves)

"Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crer não pereça, mas tenha a vida eterna" (Jo 3:16)
[MSN]
juliocbq
GUJ Expert
[Avatar]

Membro desde: 13/11/2008 12:10:18
Mensagens: 3927
Online

LucianCaetano wrote:nasper1904 seu algoritmo tem um problema pois ele valida conforme a quantidade de cores desejadas dos pixeis da imagem(Imagine se preenchesse porfora e der a quantidade desejada) o interessante seria você pegar essa área selecionada e achar o ponto médio do centro em relação a área da parte da figura e procurar em um raio menor que o da bolota baseando no centro da imagem recortada para assim qualificar o alvo da também da para fazer uma zona de correção na qual teria menos relevância na porcentagem total do preenchimento da bolota mais pode significativamente aumentar a precisão.

Alias seu algoritmo me ajudou a aprender a trabalhar com imagens em java já que existe pouca documentação.

Boa sorte ai.


O que mais tem por aí é documentação de processamento de imagens.
Normalmente associado a alguma linguagem não se encontra mesmo não. O que se encontra é a teoria. A prática vai de qualquer um na linguagem que escolher para trabalhar.

exemplos com java exisstem na hipr.
http://homepages.inf.ed.ac.uk/rbf/HIPR2/

www.citrox.com.br
VantuilJose
JavaChild
[Avatar]

Membro desde: 15/09/2008 11:47:53
Mensagens: 101
Offline

Galera, conclui meu projeto e ele permite que o usuário configure o cartão da forma que achar necessário e exporta os dados em xml, o que facilita muito as coisas.
Se alguém precisar me manda uma MP.

Tenho um artigo falando sobre o projeto: http://vantuiloliveira.blogspot.com/2011/07/enquanto-nao-cumpro-minha-promessa-de.html

Abraço

This message was edited 1 time. Last update was at 20/07/2011 13:58:03


Vantuil Oliveira
Tecnólogo em Análise e Desenvolvimento de Sistemas - IFMG Bambuí
Mestrando em Ciência da Computação - UFOP
-
"I am the maniac serial killer that knows where you live who will maintain your code!"
[MSN]
AssemblyXP
Debugger
[Avatar]

Membro desde: 24/05/2009 21:15:35
Mensagens: 51
Localização: Brasil / Valparaízo-GO
Offline

nasper1904 wrote:
SCANNER
Quanto à comunicação com o scanner, a api JTwain funciona para os principais scanners do mercado, inclusive para Webcams, segundo o site do fornecedor asprise.com/product/jtwain.






cara, por favor. tem como me ajudar, estou em processo de finalizaçao do sistema que estou desenvolvendo aqui na empresa, so preciso conectar minha scanner
em minha aplicaçao, se puder...

estou usando o JTwain, porem nao esta encontrando a .dll ja coloquei no system32 do windos, no meu projeto, ja li o tutorial e nada.. o tutorial diz

pra recompilar a classe twain.cpp em C++ para uso no JAVA JNI mais nao estou conseguindo.. .de uma força ai cara? vlws..

Make your own way - <pedro> Pedro - UNIDESC 2011 </pedro>
[Email] [MSN]
nasper1904
Debugger
[Avatar]

Membro desde: 17/03/2005 20:38:18
Mensagens: 69
Offline

Olá boa tarde, desculpe a demora para responder.

você consegue scannear normalmente pela aplicação do scanner?

Faz tempo que fiz esse sistema, então não lembro exatamente qual foi a configuração que fiz.

Mas eu lembro que você roda um applet, que tem até no proprio site do Jtwain, se não me falha a memória.
E nesse applet tem a opção para instalar essa DLL.

você pode rodar esse applet localmente também, baixando o zip da API Jwain.
lá tem um html com esse applet, se não me falha a memória.

Bom, que eu me lembre é basicamente isso.. no proprio applet ele te dá uma opção para scannear, ou seja, você já pode fazer um teste depois de instalar a DLL.

As pessoas boas devem amar seus inimigos. (chaves)

"Deus amou o mundo de tal maneira que deu seu filho unigênito para que todo aquele que nele crer não pereça, mas tenha a vida eterna" (Jo 3:16)
[MSN]
AssemblyXP
Debugger
[Avatar]

Membro desde: 24/05/2009 21:15:35
Mensagens: 51
Localização: Brasil / Valparaízo-GO
Offline

nasper1904 wrote:Olá boa tarde, desculpe a demora para responder.

você já pode fazer um teste depois de instalar a DLL.


pois bem.. voce ta certo é isso mesmo..


mais já tinha feito isso, baixei do proprio site, rodei o Aplet e instalei a DLL no System32 do windows.. mais ainda assim da falha de comunicação com a DLL

quando vai executar o

da esse erro.

erro:


já fiz quase tudo e nada...

outro detale, já consegui integrar uma web cam em minha aplicação, usando outra Framework chamada JMF[Java Media Framework] baixa o pacote instala e importa

e so por curiosidade, tava funcionando beleza essa conexão com a camera, mais no processo de teste do sistema, foi desinstalado o programa JavaMediaFramework e executei
a aplicação e não funcionou lógico, so que depois que instalei denovo nao rodou mais. E com o mesmo erro:

se souber...

mesmo assim obrigado pela força.

Make your own way - <pedro> Pedro - UNIDESC 2011 </pedro>
[Email] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team