PyCCA: mudanças entre as edições

De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
Sem resumo de edição
Sem resumo de edição
Linha 6: Linha 6:


'''((( Ver também [[ARS]] )))'''
'''((( Ver também [[ARS]] )))'''
=== Como simular agentes difusores aleatorios ? ===
<pre>
numero_de_nos = 50; # numero de agentes
total_time = 33300; # total time steps
a = np.random.randint(0,2,(numero_de_nos,numero_de_nos)); # random graph
randomnet = a + a.T; # must be symmetrical or it will be a digraph
fields = np.random.rand(numero_de_nos); # node fields, or agents atributs
nonz = randomnet.nonzero(); # 2 dim-tuple with array counting indexes of connected nodes
nonznum = len(nonz[0][:]); # number of edges
edges = [(nonz[0][v],nonz[1][v]) for v in range(nonznum)]; # the edges of the random graph
interact = 0; # interaction process, the mean of the two field
while total_time > 0:
    sorteio_interacao = np.random.randint(0,nonznum,(1)); # the edge(interaction) sampling process
    interact = float(fields[edges[sorteio_interacao[0]][0]]+fields[edges[sorteio_interacao[0]][1]])/2;
    fields[edges[sorteio_interacao[0]][0]] = float(fields[edges[sorteio_interacao[0]][0]] + interact)/2;
    fields[edges[sorteio_interacao[0]][1]] = float(fields[edges[sorteio_interacao[0]][1]] + interact)/2;
    print fields;
    total_time = total_time - 1;
</pre>


== Processamento de Imagens ==
== Processamento de Imagens ==

Edição das 22h02min de 13 de março de 2013

Python, Computação Científica e Aplicações

FAQ/Tutorial sobre achados e notas nas aplicações de Python para Computação Científica.

Redes Complexas

((( Ver também ARS )))

Como simular agentes difusores aleatorios ?

numero_de_nos = 50; # numero de agentes
total_time = 33300; # total time steps
a = np.random.randint(0,2,(numero_de_nos,numero_de_nos)); # random graph
randomnet = a + a.T; # must be symmetrical or it will be a digraph
fields = np.random.rand(numero_de_nos); # node fields, or agents atributs
nonz = randomnet.nonzero(); # 2 dim-tuple with array counting indexes of connected nodes
nonznum = len(nonz[0][:]); # number of edges
edges = [(nonz[0][v],nonz[1][v]) for v in range(nonznum)]; # the edges of the random graph
interact = 0; # interaction process, the mean of the two field

while total_time > 0:
    sorteio_interacao = np.random.randint(0,nonznum,(1)); # the edge(interaction) sampling process
    interact = float(fields[edges[sorteio_interacao[0]][0]]+fields[edges[sorteio_interacao[0]][1]])/2;
    fields[edges[sorteio_interacao[0]][0]] = float(fields[edges[sorteio_interacao[0]][0]] + interact)/2;
    fields[edges[sorteio_interacao[0]][1]] = float(fields[edges[sorteio_interacao[0]][1]] + interact)/2;
    print fields;
    total_time = total_time - 1;

Processamento de Imagens

((( Ver também PythonImagem )))

Como abrir uma imagem?

from PIL import Image
im = Image.open('foo.jpg')

Como converter em escala de cinza?

im_cinza = im.convert('L')

Como equalizar uma imagem por histograma?

from PIL import ImageOps
im_eq = ImageOps.equalize(im_cinza)

Como aplicar uma função qualquer com janelamento de 3x3? Ou, como aplicar um filtro qualquer com janelamento?

No caso, vamos aplicar a função entropia em cada pixel da imagem. A função entropia recebe como argumento os 9 vizinhos do pixel, já que o tamanho da janela (argumento size da função generic_filter) é equivalente a 3. A função entropia retorna o novo valor do pixel.

from scipy import ndimage

def entropia(viz):
    viz = list(viz)
    qtd = [viz.count(x) for x in viz]
    prob = [viz[i]/qtd[i] for i in range(len(viz))]
    return n.sum([-x*n.log(x) for x in prob if x != 0])

im_entropia = ndimage.generic_filter(im_cinza, entropia, size=3)

Como calcular o valor de entropia de uma imagem inteira?

def entropia(im, nbr_bins=256):
    hist = im.histogram()
    hist_length = sum(hist)
    samples_probability = [float(h) / hist_length for h in hist]
    return sum([-p * log(p) for p in samples_probability if p != 0])

v_entropia = entropia(im_cinza)

Como calcular os valores de energia de uma imagem?

from scipy import fftpack
energias = fftpack.fft2(im_cinza).real**2 + fftpack.fft2(im_cinza).imag**2

Processamento de Áudio e Música

((( Ver também PythonMusica, AudioArt, Massa )))