Início > Programação, Visao Computacional > Find Circular Objects in images

Find Circular Objects in images

Olá pessoal !

Bom vamos falar hoje sobre como identificar objetos dentro de imagens ..

Fiz alguns testes para identificar objetos circulares pelo método “covariance matrix” existem outros métodos por exemplo a transformada de  Hough pode ser modificado para identificar circulos!

Mas vamos aos testes

vamos iniciar por uma imagem geometrica mais simples como esta

A idéia é encontrar todos os objetos da figura para depois comparar suas propriedades !

Para isso vamos tentar encontrar todos os objetos conectados dentro de uma figura utilizado Label …

Apos isso teremos que percorrer todos os objetos e aplicar a formula  covariance matrix !

Se todas as propriedades forem verdadeiras teremos um circulo na imagem …

Segue código que faz tudo isso:

#Eng Eder de Souza Find Circular Objects Example Source
from __future__ import division
from scipy.misc.pilutil import imread
from scipy import ndimage
from pymorph import add4dilate, binary, blob
from numpy import *
import pylab
import math

f = imread(‘hgjkdngm.GIF’, flatten=True)
f = binary(f, k=110)
arr=asarray(f)
l, n = ndimage.label(arr)
ObjectsAreas = blob(l, ‘area’, output=’data’)
ObjectsAreas = asarray(ObjectsAreas)
ObjectsBoundingbox = blob(l,’boundingbox’, output=’data’)
NumberOfCircles = 0
fo = ndimage.find_objects(l)

for i in range(n):

# Squares or Retangular Objects
(x1, y1, x2, y2) = ObjectsBoundingbox[i]
RegionArea = (x1 – x2) * (y1 – y2)
Area = ObjectsAreas[i]

x = array(where(arr[fo[i]] == 1))
# compute mean
m = x.mean(axis=1)
# compute covariance matrix
# http://en.wikipedia.org/wiki/Estimation_of_covariance_matrices
Sxx = (1.0/n)*sum((x[0]-m[0])*(x[0]-m[0]))
Sxy = (1.0/n)*sum((x[0]-m[0])*(x[1]-m[1]))
Syy = (1.0/n)*sum((x[1]-m[1])*(x[1]-m[1]))
if Syy > Sxx:

div = float(Syy/Sxx)
result = (div -1) * 100

else:

div = float(Sxx/Syy)
result = (div -1) * 100

#test conditions for objects circules!
if RegionArea != Area and Sxy < 5 and result < 100:

NumberOfCircles += 1

print NumberOfCircles

  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: