• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Knitter

Biblioteca/Código/Pesquisa para processamento de imagem?

11 mensagens neste tópico

A questão não é bem sobre como fazer mas mais como procurar, já que esta está a ser a parte pior.

Preciso estudar uma forma de como, tendo uma imagem em JPEG, possa identificar uma pequena área, nada mais que um pequeno quadrado/círculo e determinar se a dita área está preenchida ou está em branco.

O problema é como encontrar informação mais especifica na miríade de informação que se encontra sobre processamento de imagem, que em nada está relacionada com o que pretendo fazer.

Conhecem alguma biblioteca que permita fazer o que pretendo? Ou onde possa encontrar informação sobre o assunto?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estive a pesquisar e encontrei algumas coisas que podem ser interessantes, mas não li muito sobre o assunto, por isso, talvez não seja nada de útil para o teu caso.

http://en.wikipedia.org/wiki/Pattern_recognition

http://en.wikipedia.org/wiki/OpenCV

http://stackoverflow.com/questions/25977/how-can-i-measure-the-similarity-between-two-images

http://stackoverflow.com/questions/589144/basic-pixel-cell-counting-algorithm

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Knitter podes explicar melhor o problema pff ?

Pergunto pois já tive que implementar analise de imagem (pathfind, ocr, etc) e talvez possa ajudar...

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já andei de volta da JAI, mas tudo o que encontro é para problemas que, pelo menos para mim, me parecem mais complexos do que o que eu pretendo.

O objectivo é relativamente simples, imaginem uma folha em papel normal, com uma data de campos com assinaturas, em frente de cada assinatura poderá existir um quadrado ou um círculo, não interessa, apenas interessa que será uma área delimitada e que saberei sempre em que coordenada X estará desenhado, a coordenada Y dependerá da localização do primeiro elemento mas poderá ser fixa também, portanto, sei onde estão os elementos, agora quero apenas saber se o elemento está preenchido ou vazio.

O preenchimento pode ser uma cruz ou simplesmente estar o elemento todo riscado, o que for mais simples. A ideia é que além da pessoa assinar, pode fazer a cruz ou preencher o quadrado/círculo que está à frente do seu nome.

Depois esta folha, será digitalizada e chegará ao sistema como um JPG, não interessa de onde esse JPG vem, apenas que na altura de processar o JPG, este estará algures no disco. Depos de ler o JPG quero ver o estado do dito quadrado/círculo.

Não me interessa OCR, nem análises mais elaboradas da imagem, apenas quero saber se determinada área está preenchida ou não, cores também não são importantes.

Pensei que isto se pudesse enquadrar em edge detection, mas o que vejo é sempre algo mais complicado, como detecção de padrões em imagens, e eu quero apenas saber se um elemento está ou não na página, tendo em conta que não vou andar à procura dele em toda a imagem mas que sei onde o dito elemento é suposto existir.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Knitter não podes ler os pixeis da img a comecar em XY ? lês, achas a média RGB de todos os pixeis do "quadrado" e isso vai.te dar uma ideia de se ele está preenchido ou não...

ou talvez não tenha percebido bem... :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Talvez possa fazer isso... é uma ideia.

Aqui está um rabisco do que pretendo, apenas me interessa determinar os ON/OFF, tudo o resto é algo que não interessa ao sistema,

digitalizar0006n.th.png

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já percebi o que pretendes.

Basicamente tens que aplicar algoritmos de processamento digital de imagem.

Convertes a imagem para preto/branco, por forma a não comprometer a informação de que necessitas.

Depois basta apenas detectares os que estão preenchidos, pois estando os outros a branco, não estão preenchidos.

Fazer isso em java é que não sei como, em mathlab era bem mais simples.

Mas tendo a imagem binária (preto e branco) é percorrer o array da imagem a detectares as partes que têm 1.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Coloquei na secção de Java por ser inicialmente onde pretendia fazer alguns testes, a tecnologia final ainda não está definida, nem sei se valerá ou não a pena, dependerá do custo/benefício de tal implementação.

Inicialmente o meu problema é saber o que procurar ou onde procurar informação.

MatLab não será uma opção, preciso de algo que seja livre ou que, a ser pago, tenha valores que sejam razoáveis para os objectivos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas Knitter,

Estando a desenvolver a minha tese de Mestrado no âmbito do processamento de imagens digitais, penso que te posso dar umas dicas...

Pelo que percebi, sabes o lugar exacto onde os quadrados vão aparecer na imagem, o que facilita bastante o problema, visto que não necessitas de andar "à procura" de tais padrões. Algo que não sei se consegues controlar é o tamanho da imagens de input, ou seja, a largura e altura em pixeis. Em todo o caso, podes cortá-las ao teu jeito e de modo a te facilitar a tarefa.

Em JAVA, podes ter acesso aos bytes da imagem tal como num ficheiro txt normal, com a classe BufferedImage, assim como à matriz dos pixeis da imagem.

Após isso, basta acederes às posições da matriz que identificam a posição dos quadrados e obteres o RBG dos pixeis que identificam os quadrados, e verificando a sua cor, podes inferir sobre o "estado" do quadrado.

Se precisares de algo mais sufisticado, dá uma olhadela nos algoritmos de edge detection, nomeadamente aos Operadores de Sobel, que podem ser outra solução.

Espero que te seja útil...

Um abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim foi bastante útil na medida em que me orientou para o que devo procurar. Vou ver o que consigo fazer com isso, para já não quero mais que testar uma possível implementação.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora