Reconhecimento simples de objetos

=== RESOLVIDO ===

Obrigado por suas sugestões e comentários. Trabalhando no algoritmo flood_fill fornecido emVisualização inicial do Python book (Chapter 9 - Image Processing) Eu implementei o que eu queria. Eu posso contar os objetos, obtendo retângulos para cada objeto (portanto, altura e largura) e, por último, posso construir matrizes NumPy ou matrizes para cada um deles.

Embora não seja uma abordagem otimizada, ela faz o que eu quero. O código fonte (lab2.py) e o arquivo png (lab2-particles.png) que eu uso foram colocados sobhttp://code.google.com/p/ccnworks/source/browse/#svn/trunk/AtSc450.

Você precisa do NumPy e PIL instalados e do matplotlib para ver o histograma. O núcleo do código está dentro da função objfind onde a principal ação de busca de objeto recursiva ocorre.

Mais uma atualização:

SciPy'sndimage.label () faz exatamente o que eu quero também.

Felicidades paraDavid-Warde Farley eZachary Pincus das listas de discussão NumPy e SciPy para apontar isso diretamente para os meus olhos :)

=============

Olá,

Eu tenho uma imagem que contém as sombras das partículas de gelo medidas por um espectrômetro de partículas. Eu quero ser capaz de identificar cada objeto, para que eu possa depois classificá-los e usá-los ainda mais em meus cálculos.

Em essência, o que estou disposto a fazer é simplesmente implementar uma ferramenta de seleção fuzzy onde eu possa simplesmente selecionar cada entidade.

Como eu poderia facilmente resolver este problema? (De preferência usando Python)

Obrigado.

NOTA: Na minha pergunta eu estou me referindo a cada pixels específicos conectados como objetos ou entidades. Minha intenção é extraí-los e criar representações do array NumPy, como mostrado abaixo. (Aqui eu estou usando o objeto top-left; se um pixel existir use 1 se não usar 0's. A forma deste objeto é 3 por 3 que correspondentemente 3 pixels de altura por 3 pixels de largura. Estas são projeções de partículas de gelo reais no domínio 2D , sob a suposição de que eles são esféricos e o raio equivalente é (altura + largura) / 2, e mais tarde alguns escalonamentos - de pixels a tamanhos reais e cálculos de volume seguirão)

import numpy as np

np.array([[1,1,1], [1,1,1], [0,0,1]])

array([[1, 1, 1],
       [1, 1, 1],
       [0, 0, 1]])

Aqui está uma seção da imagem que eu vou usar.

captura de tela http://img43.imageshack.us/img43/2327/particles.png

questionAnswers(5)

yourAnswerToTheQuestion