<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>http://wiki.nosdigitais.teia.org.br/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=David</id>
	<title>Pontão Nós Digitais - Contribuições do usuário [pt-br]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.nosdigitais.teia.org.br/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=David"/>
	<link rel="alternate" type="text/html" href="http://wiki.nosdigitais.teia.org.br/Especial:Contribui%C3%A7%C3%B5es/David"/>
	<updated>2026-04-21T16:25:39Z</updated>
	<subtitle>Contribuições do usuário</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>http://wiki.nosdigitais.teia.org.br/index.php?title=PyCCA&amp;diff=8306</id>
		<title>PyCCA</title>
		<link rel="alternate" type="text/html" href="http://wiki.nosdigitais.teia.org.br/index.php?title=PyCCA&amp;diff=8306"/>
		<updated>2013-03-20T15:36:19Z</updated>

		<summary type="html">&lt;p&gt;David: /* Dividir uma imagem em canais RGB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Python, Computação Científica e Aplicações =&lt;br /&gt;
&lt;br /&gt;
FAQ/Tutorial sobre achados e notas nas aplicações de Python para Computação Científica.&lt;br /&gt;
&lt;br /&gt;
== Redes Complexas ==&lt;br /&gt;
&lt;br /&gt;
'''((( Ver também [[ARS]] )))'''&lt;br /&gt;
&lt;br /&gt;
=== Como simular agentes difusores aleatorios ? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
numero_de_nos = 50; # numero de agentes&lt;br /&gt;
total_time = 500; # total time steps&lt;br /&gt;
a = np.random.randint(0,2,(numero_de_nos,numero_de_nos)); # random graph (4*)&lt;br /&gt;
randomnet =  (a + a.T)/2 + (a + a.T)%2 - np.diag(np.diag((a + a.T)/2 + (a + a.T)%2)); # symmetrical adjacency matrix or it will be a digraph, diagonal subtracted for no auto interactions (4*)&lt;br /&gt;
fields = np.random.rand(numero_de_nos); # node fields, or agents atributs (2*)&lt;br /&gt;
nonz = randomnet.nonzero(); # 2 dim-tuple with array counting indexes of connected nodes&lt;br /&gt;
nonznum = len(nonz[0][:]); # number of edges&lt;br /&gt;
edges = [(nonz[0][v],nonz[1][v]) for v in range(nonznum)]; # the edges of the random graph&lt;br /&gt;
interact = 0; # interaction process, the mean of the two field in this case&lt;br /&gt;
&lt;br /&gt;
while total_time &amp;gt; 0:&lt;br /&gt;
    sorteio_interacao = np.random.randint(0,nonznum,(1)); # the edge(interaction) sampling process  (1*)&lt;br /&gt;
    interact = float(fields[edges[sorteio_interacao[0]][0]]+fields[edges[sorteio_interacao[0]][1]])/2; # (3*)&lt;br /&gt;
    fields[edges[sorteio_interacao[0]][0]] = float(fields[edges[sorteio_interacao[0]][0]] + interact)/2; # (2*) (3*)&lt;br /&gt;
    fields[edges[sorteio_interacao[0]][1]] = float(fields[edges[sorteio_interacao[0]][1]] + interact)/2; # (2*) (3*)&lt;br /&gt;
    print fields;&lt;br /&gt;
    total_time = total_time - 1;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notas&lt;br /&gt;
*1* Neste exemplo agentes interagem com igual probabilidade P = 1/(numero de arestas na rede), ou seja igual probabilidade;&lt;br /&gt;
*2* Cada agente tem uma propriedade, numero real, alocado em fields;&lt;br /&gt;
*3* A interacao eh um filtro de altas frequencias no atributo do no/agente, ou seja a interacao e homofilica/homogeinizadora;&lt;br /&gt;
*4* A rede eh aleatoria.&lt;br /&gt;
*5* Para gerar modelo de agentes em redes complexas diferente, mais realista, eh necessario generalizar qualquer um destes pontos no local indicado no codigo atraves dos numeros das notas.&lt;br /&gt;
&lt;br /&gt;
== Processamento de Imagens ==&lt;br /&gt;
&lt;br /&gt;
'''((( Ver também [[PythonImagem]] )))'''&lt;br /&gt;
&lt;br /&gt;
=== Como abrir uma imagem? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from PIL import Image&lt;br /&gt;
im = Image.open('foo.jpg')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como converter em escala de cinza? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
im_cinza = im.convert('L')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como acessar cada canal de cor da imagaem? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
im_r = im.split()[0]&lt;br /&gt;
im_g = im.split()[1]&lt;br /&gt;
im_b = im.split()[2]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como equalizar uma imagem por histograma? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from PIL import ImageOps&lt;br /&gt;
im_eq = ImageOps.equalize(im_cinza)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como aplicar uma função qualquer com janelamento de 3x3? Ou, como aplicar um filtro qualquer com janelamento? ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from scipy import ndimage&lt;br /&gt;
&lt;br /&gt;
def entropia(viz):&lt;br /&gt;
    viz = list(viz)&lt;br /&gt;
    qtd = [viz.count(x) for x in viz]&lt;br /&gt;
    prob = [viz[i]/qtd[i] for i in range(len(viz))]&lt;br /&gt;
    return n.sum([-x*n.log(x) for x in prob if x != 0])&lt;br /&gt;
&lt;br /&gt;
im_entropia = ndimage.generic_filter(im_cinza, entropia, size=3)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como calcular o valor de entropia de uma imagem inteira? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def entropia(im, nbr_bins=256):&lt;br /&gt;
    hist = im.histogram()&lt;br /&gt;
    hist_length = sum(hist)&lt;br /&gt;
    samples_probability = [float(h) / hist_length for h in hist]&lt;br /&gt;
    return sum([-p * log(p) for p in samples_probability if p != 0])&lt;br /&gt;
&lt;br /&gt;
v_entropia = entropia(im_cinza)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como calcular os valores de energia de uma imagem? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from scipy import fftpack&lt;br /&gt;
energias = fftpack.fft2(im_cinza).real**2 + fftpack.fft2(im_cinza).imag**2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processamento de Áudio e Música ==&lt;br /&gt;
&lt;br /&gt;
'''((( Ver também [[PythonMusica]], [[AudioArt]], [[Massa]] )))'''&lt;br /&gt;
&lt;br /&gt;
[[Category:Lab_Macambira, AudioArt, Python]]&lt;br /&gt;
&lt;br /&gt;
=== Dividir uma imagem em canais RGB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import Image&lt;br /&gt;
lena = Image.open(&amp;quot;lena.png&amp;quot;)&lt;br /&gt;
r, g, b = lena.split()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
em alguns casos, as imagens vem com o canal alpha adicionado. Nesse caso faca:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
r,g,b,alpha = lena.split()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ou &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lena = lena.convert(&amp;quot;RGB&amp;quot;)&lt;br /&gt;
r, g, b = lena.split()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>David</name></author>
	</entry>
	<entry>
		<id>http://wiki.nosdigitais.teia.org.br/index.php?title=PyCCA&amp;diff=8305</id>
		<title>PyCCA</title>
		<link rel="alternate" type="text/html" href="http://wiki.nosdigitais.teia.org.br/index.php?title=PyCCA&amp;diff=8305"/>
		<updated>2013-03-20T15:35:43Z</updated>

		<summary type="html">&lt;p&gt;David: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Python, Computação Científica e Aplicações =&lt;br /&gt;
&lt;br /&gt;
FAQ/Tutorial sobre achados e notas nas aplicações de Python para Computação Científica.&lt;br /&gt;
&lt;br /&gt;
== Redes Complexas ==&lt;br /&gt;
&lt;br /&gt;
'''((( Ver também [[ARS]] )))'''&lt;br /&gt;
&lt;br /&gt;
=== Como simular agentes difusores aleatorios ? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
numero_de_nos = 50; # numero de agentes&lt;br /&gt;
total_time = 500; # total time steps&lt;br /&gt;
a = np.random.randint(0,2,(numero_de_nos,numero_de_nos)); # random graph (4*)&lt;br /&gt;
randomnet =  (a + a.T)/2 + (a + a.T)%2 - np.diag(np.diag((a + a.T)/2 + (a + a.T)%2)); # symmetrical adjacency matrix or it will be a digraph, diagonal subtracted for no auto interactions (4*)&lt;br /&gt;
fields = np.random.rand(numero_de_nos); # node fields, or agents atributs (2*)&lt;br /&gt;
nonz = randomnet.nonzero(); # 2 dim-tuple with array counting indexes of connected nodes&lt;br /&gt;
nonznum = len(nonz[0][:]); # number of edges&lt;br /&gt;
edges = [(nonz[0][v],nonz[1][v]) for v in range(nonznum)]; # the edges of the random graph&lt;br /&gt;
interact = 0; # interaction process, the mean of the two field in this case&lt;br /&gt;
&lt;br /&gt;
while total_time &amp;gt; 0:&lt;br /&gt;
    sorteio_interacao = np.random.randint(0,nonznum,(1)); # the edge(interaction) sampling process  (1*)&lt;br /&gt;
    interact = float(fields[edges[sorteio_interacao[0]][0]]+fields[edges[sorteio_interacao[0]][1]])/2; # (3*)&lt;br /&gt;
    fields[edges[sorteio_interacao[0]][0]] = float(fields[edges[sorteio_interacao[0]][0]] + interact)/2; # (2*) (3*)&lt;br /&gt;
    fields[edges[sorteio_interacao[0]][1]] = float(fields[edges[sorteio_interacao[0]][1]] + interact)/2; # (2*) (3*)&lt;br /&gt;
    print fields;&lt;br /&gt;
    total_time = total_time - 1;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notas&lt;br /&gt;
*1* Neste exemplo agentes interagem com igual probabilidade P = 1/(numero de arestas na rede), ou seja igual probabilidade;&lt;br /&gt;
*2* Cada agente tem uma propriedade, numero real, alocado em fields;&lt;br /&gt;
*3* A interacao eh um filtro de altas frequencias no atributo do no/agente, ou seja a interacao e homofilica/homogeinizadora;&lt;br /&gt;
*4* A rede eh aleatoria.&lt;br /&gt;
*5* Para gerar modelo de agentes em redes complexas diferente, mais realista, eh necessario generalizar qualquer um destes pontos no local indicado no codigo atraves dos numeros das notas.&lt;br /&gt;
&lt;br /&gt;
== Processamento de Imagens ==&lt;br /&gt;
&lt;br /&gt;
'''((( Ver também [[PythonImagem]] )))'''&lt;br /&gt;
&lt;br /&gt;
=== Como abrir uma imagem? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from PIL import Image&lt;br /&gt;
im = Image.open('foo.jpg')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como converter em escala de cinza? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
im_cinza = im.convert('L')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como acessar cada canal de cor da imagaem? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
im_r = im.split()[0]&lt;br /&gt;
im_g = im.split()[1]&lt;br /&gt;
im_b = im.split()[2]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como equalizar uma imagem por histograma? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from PIL import ImageOps&lt;br /&gt;
im_eq = ImageOps.equalize(im_cinza)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como aplicar uma função qualquer com janelamento de 3x3? Ou, como aplicar um filtro qualquer com janelamento? ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from scipy import ndimage&lt;br /&gt;
&lt;br /&gt;
def entropia(viz):&lt;br /&gt;
    viz = list(viz)&lt;br /&gt;
    qtd = [viz.count(x) for x in viz]&lt;br /&gt;
    prob = [viz[i]/qtd[i] for i in range(len(viz))]&lt;br /&gt;
    return n.sum([-x*n.log(x) for x in prob if x != 0])&lt;br /&gt;
&lt;br /&gt;
im_entropia = ndimage.generic_filter(im_cinza, entropia, size=3)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como calcular o valor de entropia de uma imagem inteira? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def entropia(im, nbr_bins=256):&lt;br /&gt;
    hist = im.histogram()&lt;br /&gt;
    hist_length = sum(hist)&lt;br /&gt;
    samples_probability = [float(h) / hist_length for h in hist]&lt;br /&gt;
    return sum([-p * log(p) for p in samples_probability if p != 0])&lt;br /&gt;
&lt;br /&gt;
v_entropia = entropia(im_cinza)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como calcular os valores de energia de uma imagem? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from scipy import fftpack&lt;br /&gt;
energias = fftpack.fft2(im_cinza).real**2 + fftpack.fft2(im_cinza).imag**2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processamento de Áudio e Música ==&lt;br /&gt;
&lt;br /&gt;
'''((( Ver também [[PythonMusica]], [[AudioArt]], [[Massa]] )))'''&lt;br /&gt;
&lt;br /&gt;
[[Category:Lab_Macambira, AudioArt, Python]]&lt;br /&gt;
&lt;br /&gt;
=== Dividir uma imagem em canais RGB ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import Image&lt;br /&gt;
lena = Image.open(&amp;quot;lena.png&amp;quot;)&lt;br /&gt;
r, b, b = lena.split()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
em alguns casos, as imagens vem com o canal alpha adicionado. Nesse caso faca:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
r,g,b,alpha = lena.split()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ou &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lena = lena.convert(&amp;quot;RGB&amp;quot;)&lt;br /&gt;
r, g, b = lena.split()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>David</name></author>
	</entry>
	<entry>
		<id>http://wiki.nosdigitais.teia.org.br/index.php?title=PyCCA&amp;diff=8304</id>
		<title>PyCCA</title>
		<link rel="alternate" type="text/html" href="http://wiki.nosdigitais.teia.org.br/index.php?title=PyCCA&amp;diff=8304"/>
		<updated>2013-03-20T15:33:35Z</updated>

		<summary type="html">&lt;p&gt;David: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Python, Computação Científica e Aplicações =&lt;br /&gt;
&lt;br /&gt;
FAQ/Tutorial sobre achados e notas nas aplicações de Python para Computação Científica.&lt;br /&gt;
&lt;br /&gt;
== Redes Complexas ==&lt;br /&gt;
&lt;br /&gt;
'''((( Ver também [[ARS]] )))'''&lt;br /&gt;
&lt;br /&gt;
=== Como simular agentes difusores aleatorios ? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import numpy as np&lt;br /&gt;
&lt;br /&gt;
numero_de_nos = 50; # numero de agentes&lt;br /&gt;
total_time = 500; # total time steps&lt;br /&gt;
a = np.random.randint(0,2,(numero_de_nos,numero_de_nos)); # random graph (4*)&lt;br /&gt;
randomnet =  (a + a.T)/2 + (a + a.T)%2 - np.diag(np.diag((a + a.T)/2 + (a + a.T)%2)); # symmetrical adjacency matrix or it will be a digraph, diagonal subtracted for no auto interactions (4*)&lt;br /&gt;
fields = np.random.rand(numero_de_nos); # node fields, or agents atributs (2*)&lt;br /&gt;
nonz = randomnet.nonzero(); # 2 dim-tuple with array counting indexes of connected nodes&lt;br /&gt;
nonznum = len(nonz[0][:]); # number of edges&lt;br /&gt;
edges = [(nonz[0][v],nonz[1][v]) for v in range(nonznum)]; # the edges of the random graph&lt;br /&gt;
interact = 0; # interaction process, the mean of the two field in this case&lt;br /&gt;
&lt;br /&gt;
while total_time &amp;gt; 0:&lt;br /&gt;
    sorteio_interacao = np.random.randint(0,nonznum,(1)); # the edge(interaction) sampling process  (1*)&lt;br /&gt;
    interact = float(fields[edges[sorteio_interacao[0]][0]]+fields[edges[sorteio_interacao[0]][1]])/2; # (3*)&lt;br /&gt;
    fields[edges[sorteio_interacao[0]][0]] = float(fields[edges[sorteio_interacao[0]][0]] + interact)/2; # (2*) (3*)&lt;br /&gt;
    fields[edges[sorteio_interacao[0]][1]] = float(fields[edges[sorteio_interacao[0]][1]] + interact)/2; # (2*) (3*)&lt;br /&gt;
    print fields;&lt;br /&gt;
    total_time = total_time - 1;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notas&lt;br /&gt;
*1* Neste exemplo agentes interagem com igual probabilidade P = 1/(numero de arestas na rede), ou seja igual probabilidade;&lt;br /&gt;
*2* Cada agente tem uma propriedade, numero real, alocado em fields;&lt;br /&gt;
*3* A interacao eh um filtro de altas frequencias no atributo do no/agente, ou seja a interacao e homofilica/homogeinizadora;&lt;br /&gt;
*4* A rede eh aleatoria.&lt;br /&gt;
*5* Para gerar modelo de agentes em redes complexas diferente, mais realista, eh necessario generalizar qualquer um destes pontos no local indicado no codigo atraves dos numeros das notas.&lt;br /&gt;
&lt;br /&gt;
== Processamento de Imagens ==&lt;br /&gt;
&lt;br /&gt;
'''((( Ver também [[PythonImagem]] )))'''&lt;br /&gt;
&lt;br /&gt;
=== Como abrir uma imagem? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from PIL import Image&lt;br /&gt;
im = Image.open('foo.jpg')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como converter em escala de cinza? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
im_cinza = im.convert('L')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como acessar cada canal de cor da imagaem? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
im_r = im.split()[0]&lt;br /&gt;
im_g = im.split()[1]&lt;br /&gt;
im_b = im.split()[2]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como equalizar uma imagem por histograma? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from PIL import ImageOps&lt;br /&gt;
im_eq = ImageOps.equalize(im_cinza)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como aplicar uma função qualquer com janelamento de 3x3? Ou, como aplicar um filtro qualquer com janelamento? ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from scipy import ndimage&lt;br /&gt;
&lt;br /&gt;
def entropia(viz):&lt;br /&gt;
    viz = list(viz)&lt;br /&gt;
    qtd = [viz.count(x) for x in viz]&lt;br /&gt;
    prob = [viz[i]/qtd[i] for i in range(len(viz))]&lt;br /&gt;
    return n.sum([-x*n.log(x) for x in prob if x != 0])&lt;br /&gt;
&lt;br /&gt;
im_entropia = ndimage.generic_filter(im_cinza, entropia, size=3)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como calcular o valor de entropia de uma imagem inteira? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def entropia(im, nbr_bins=256):&lt;br /&gt;
    hist = im.histogram()&lt;br /&gt;
    hist_length = sum(hist)&lt;br /&gt;
    samples_probability = [float(h) / hist_length for h in hist]&lt;br /&gt;
    return sum([-p * log(p) for p in samples_probability if p != 0])&lt;br /&gt;
&lt;br /&gt;
v_entropia = entropia(im_cinza)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Como calcular os valores de energia de uma imagem? ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
from scipy import fftpack&lt;br /&gt;
energias = fftpack.fft2(im_cinza).real**2 + fftpack.fft2(im_cinza).imag**2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Processamento de Áudio e Música ==&lt;br /&gt;
&lt;br /&gt;
'''((( Ver também [[PythonMusica]], [[AudioArt]], [[Massa]] )))'''&lt;br /&gt;
&lt;br /&gt;
[[Category:Lab_Macambira, AudioArt, Python]]&lt;br /&gt;
&lt;br /&gt;
=== Dividir uma imagem em canais RGB ===&lt;br /&gt;
&lt;br /&gt;
import Image&lt;br /&gt;
lena = Image.open(&amp;quot;lena.png&amp;quot;)&lt;br /&gt;
r, b, b = lena.split()&lt;br /&gt;
&lt;br /&gt;
em alguns casos, as imagens vem com o canal alpha adicionado. Nesse caso faca:&lt;br /&gt;
r,g,b,alpha = lena.split()&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
lena = lena.convert(&amp;quot;RGB&amp;quot;)&lt;br /&gt;
r, g, b = lena.split()&lt;/div&gt;</summary>
		<author><name>David</name></author>
	</entry>
</feed>