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

Knitter

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

Recommended Posts

Knitter

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?

Share this post


Link to post
Share on other sites
Triton

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


<3 life

Share this post


Link to post
Share on other sites
joseerodrigues

Knitter podes explicar melhor o problema pff ?

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

Cumprimentos

Share this post


Link to post
Share on other sites
Knitter

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.

Share this post


Link to post
Share on other sites
joseerodrigues

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

Share this post


Link to post
Share on other sites
Knitter

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

Share this post


Link to post
Share on other sites
cheires

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.

Share this post


Link to post
Share on other sites
Knitter

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.

Share this post


Link to post
Share on other sites
NameException

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

Share this post


Link to post
Share on other sites
Knitter

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.