'''
Created on 05/09/2010
@author: tiago buriol
'''
import os
import Image # PIL - Python Image Library (instale via Sinaptyc)
diretorio = "/home/buriol/PYTHON_PROJECTS/CILAMCE2010/src/ReconstrCROPPED"
arquivos = os.listdir(diretorio)
arquivos.sort() #ordena os arquivos pelo nome
n=0
# Corta imagens e salva
for arquivo in arquivos:
fullpath = os.path.join(diretorio,arquivo)
if os.path.isfile(fullpath):
n = n + 1
img = Image.open(fullpath)
print "Lendo arquivo", n, "de", len(arquivos)
im = img.crop([0,0,128,128])
im.save(os.path.join("/home/buriol/Imagens",arquivo), "BMP")
5 de set. de 2010
Visualizando tensores como elipsóides usando VTK e Python
# Biblioteca vtk para python
from vtk import *
# ENTRADA DE DADOS
# Pontos
points = vtkPoints()
points.SetNumberOfPoints(3)
points.InsertPoint(0,76.3221,77.55,6.51956)
points.InsertPoint(1,76.61,77.2565,6.48612)
points.InsertPoint(2,77.2707,76.61,6.44554)
# Tensores
dbar = vtkDoubleArray()
dbar.SetNumberOfTuples(3)
dbar.SetNumberOfComponents(9)
dbar.InsertTuple9(0,-1.15233,0.0831558,0.0469417,0.0831558,-1.25721,0.10167,0.0469417,0.10167,-1.10715)
dbar.InsertTuple9(1,-1.18056,0.0817272,0.016076,0.0817272,-1.32675,0.125833,0.016076,0.125833,-1.15438)
dbar.InsertTuple9(2,-1.18056,0.0817272,0.016076,0.0817272,-1.32675,0.125833,0.016076,0.125833,-1.15438)
# PROCESSAMENTO PARA GERAR OS GLIFOS
# Polydata
indata = vtkPolyData()
indata.SetPoints(points)
indata.GetPointData().SetTensors(dbar)
# Codigo para uma esfera
src = vtkSphereSource()
src.SetThetaResolution(16)
src.SetPhiResolution(16)
# glifos
epp = vtkTensorGlyph()
epp.SetInput(indata)
epp.SetSourceConnection(src.GetOutputPort())
epp.SetScaleFactor(1)
epp.ClampScalingOn()
#epp.SymmetricOn()
epp.ColorGlyphsOff()
epp.ThreeGlyphsOff()
epp.ExtractEigenvaluesOn()
epp.SetColorModeToEigenvalues()
# Mapeador para os dados
map = vtkPolyDataMapper()
map.SetInputConnection(epp.GetOutputPort())
# VISUALIZACAO
# Ator
elactor = vtkActor()
elactor.SetMapper(map)
# Renderizador
renderer = vtkRenderer()
renderer.AddActor(elactor)
# Janela
renderWindow = vtkRenderWindow()
renderWindow.AddRenderer( renderer )
# Interador
interactor = vtkRenderWindowInteractor()
interactor.SetRenderWindow(renderWindow)
interactor.Initialize()
interactor.Start()
from vtk import *
# ENTRADA DE DADOS
# Pontos
points = vtkPoints()
points.SetNumberOfPoints(3)
points.InsertPoint(0,76.3221,77.55,6.51956)
points.InsertPoint(1,76.61,77.2565,6.48612)
points.InsertPoint(2,77.2707,76.61,6.44554)
# Tensores
dbar = vtkDoubleArray()
dbar.SetNumberOfTuples(3)
dbar.SetNumberOfComponents(9)
dbar.InsertTuple9(0,-1.15233,0.0831558,0.0469417,0.0831558,-1.25721,0.10167,0.0469417,0.10167,-1.10715)
dbar.InsertTuple9(1,-1.18056,0.0817272,0.016076,0.0817272,-1.32675,0.125833,0.016076,0.125833,-1.15438)
dbar.InsertTuple9(2,-1.18056,0.0817272,0.016076,0.0817272,-1.32675,0.125833,0.016076,0.125833,-1.15438)
# PROCESSAMENTO PARA GERAR OS GLIFOS
# Polydata
indata = vtkPolyData()
indata.SetPoints(points)
indata.GetPointData().SetTensors(dbar)
# Codigo para uma esfera
src = vtkSphereSource()
src.SetThetaResolution(16)
src.SetPhiResolution(16)
# glifos
epp = vtkTensorGlyph()
epp.SetInput(indata)
epp.SetSourceConnection(src.GetOutputPort())
epp.SetScaleFactor(1)
epp.ClampScalingOn()
#epp.SymmetricOn()
epp.ColorGlyphsOff()
epp.ThreeGlyphsOff()
epp.ExtractEigenvaluesOn()
epp.SetColorModeToEigenvalues()
# Mapeador para os dados
map = vtkPolyDataMapper()
map.SetInputConnection(epp.GetOutputPort())
# VISUALIZACAO
# Ator
elactor = vtkActor()
elactor.SetMapper(map)
# Renderizador
renderer = vtkRenderer()
renderer.AddActor(elactor)
# Janela
renderWindow = vtkRenderWindow()
renderWindow.AddRenderer( renderer )
# Interador
interactor = vtkRenderWindowInteractor()
interactor.SetRenderWindow(renderWindow)
interactor.Initialize()
interactor.Start()
Marcadores:
Python,
Tensor,
Visualização Científica,
VTK
17 de ago. de 2010
Habilitando as três NVidia GeForce GTX280 no Ubuntu 9.04
.
Primeiramente, foi necessário achar o "endereço" do barramento de cada placa fazendo:
$ sudo lspci
que forneceu a seguinte saída (somente a parte que interessa):
...
02:02.0 PCI bridge: nVidia Corporation Device 05b1 (rev a2)
03:00.0 VGA compatible controller: nVidia Corporation GT200 [GTX280] (rev a1)
04:00.0 VGA compatible controller: nVidia Corporation GT200 [GTX280] (rev a1)
05:0b.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306 Fire II IEEE 1394 OHCI Link Layer Controller (rev c0)
06:00.0 Audio device: Creative Labs [X-Fi Titanium series] EMU20k2 (rev 03)
07:00.0 VGA compatible controller: nVidia Corporation GT200 [GTX280] (rev a1)
...
Então alterei o arquivo xorg-config fazendo:
$ sudo gedit /etc/X11/xorg.conf
Alterando as seções "Device" da placa de vídeo como segue:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 280"
BusID "PCI:3:0:0"
Screen 0
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 280"
BusID "PCI:3:0:0"
Screen 1
EndSection
Section "Device"
Identifier "Device2"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 280"
BusID "PCI:4:0:0"
EndSection
Section "Device"
Identifier "Device3"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 280"
BusID "PCI:7:0:0"
EndSection
Para o sistema detectar as 3 placas GTX280 tive que alterar o arquivo menu.lst, do grub, fazendo:
$ sudo gedit /boot/grub/menu.lst
e adicionando a parte em negrito mostrada abaixo
Depois de reiniciar, digitei no console os seguintes comandos
$ sudo nvidia-xconfig --multigpu=on
$ sudo nvidia-xconfig --sli=on
Depois de reiniciar novamente apareceu as três placas no painel de nvidia-settings.
Primeiramente, foi necessário achar o "endereço" do barramento de cada placa fazendo:
$ sudo lspci
que forneceu a seguinte saída (somente a parte que interessa):
...
02:02.0 PCI bridge: nVidia Corporation Device 05b1 (rev a2)
03:00.0 VGA compatible controller: nVidia Corporation GT200 [GTX280] (rev a1)
04:00.0 VGA compatible controller: nVidia Corporation GT200 [GTX280] (rev a1)
05:0b.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6306 Fire II IEEE 1394 OHCI Link Layer Controller (rev c0)
06:00.0 Audio device: Creative Labs [X-Fi Titanium series] EMU20k2 (rev 03)
07:00.0 VGA compatible controller: nVidia Corporation GT200 [GTX280] (rev a1)
...
Então alterei o arquivo xorg-config fazendo:
Alterando as seções "Device" da placa de vídeo como segue:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 280"
BusID "PCI:3:0:0"
Screen 0
EndSection
Section "Device"
Identifier "Device1"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 280"
BusID "PCI:3:0:0"
Screen 1
EndSection
Section "Device"
Identifier "Device2"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 280"
BusID "PCI:4:0:0"
EndSection
Section "Device"
Identifier "Device3"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "GeForce GTX 280"
BusID "PCI:7:0:0"
EndSection
Para o sistema detectar as 3 placas GTX280 tive que alterar o arquivo menu.lst, do grub, fazendo:
$ sudo gedit /boot/grub/menu.lst
e adicionando a parte em negrito mostrada abaixo
title Ubuntu 9.04, kernel 2.6.28-19-generic
uppermem 524288
uuid efe8ac3e-d12d-43b9-9f15-2df7836e7c1d
kernel /boot/vmlinuz-2.6.28-19-generic root=UUID=efe8ac3e-d12d-43b9-9f15-2df7836e7c1d ro quiet splash vmalloc=256MB pci=nommconf
initrd /boot/initrd.img-2.6.28-19-generic
quiet
uppermem 524288
uuid efe8ac3e-d12d-43b9-9f15-2df7836e7c1d
kernel /boot/vmlinuz-2.6.28-19-generic root=UUID=efe8ac3e-d12d-43b9-9f15-2df7836e7c1d ro quiet splash vmalloc=256MB pci=nommconf
initrd /boot/initrd.img-2.6.28-19-generic
quiet
Depois de reiniciar, digitei no console os seguintes comandos
$ sudo nvidia-xconfig --multigpu=on
$ sudo nvidia-xconfig --sli=on
Depois de reiniciar novamente apareceu as três placas no painel de nvidia-settings.
19 de mai. de 2010
Script Python parta mudar extensão e nomes de arquivos em um diretório
#--------------------------------------------------------------------
# renomeia.py
#
# Script Python para modificar a extensao de aquivos em um diretorio
# e mudar o nome
#
# Uso:
# Defina o diretorio, a extensão que quer retirar e a nova extensao, que
# pode ser vazia (" ").
# Por exemplo:
# diretorio = "/home/gildo/imagens"
# extensao = ".*JPEG" (para retirar as extensoes ".dcm", nao esqueca o asterisco)
# novaExtensao = ".jpg" (nesse caso eh vazia, mas poderia ser ".raw", por ex.)
#--------------------------------------------------------------------
import re
import string
import os
# Coloque os seus parametros aqui...
diretorio = "/BACKUP/DICOM_FILES/AMNESIX"
extensao = ".*dcm"
novaExtensao = " " # nesse caso eh vazia
parteQueSai = "IM-0001-"
parteQueSubstitui = "slice"
# Muda extensao
reg = re.compile(extensao)
if os.path.isdir(diretorio) and not os.path.islink(diretorio):
arquivos = os.listdir(diretorio)
for arquivo in arquivos:
newExt = re.compile(extensao).match
if newExt(arquivo):
c = os.path.splitext(arquivo)
b = c[0] + novaExtensao
a = os.path.join(diretorio,arquivo)
b = os.path.join(diretorio,b)
os.rename(a,b)
# Modifica nome
if os.path.isdir(diretorio) and not os.path.islink(diretorio):
arquivos = os.listdir(diretorio)
for arquivo in arquivos:
print arquivo
novoNome = string.replace(arquivo, parteQueSai, parteQueSubstitui)
fullpathOld = os.path.join(diretorio,arquivo)
fullpathNew = os.path.join(diretorio,novoNome)
os.rename(fullpathOld, fullpathNew)
# Hasta...
# renomeia.py
#
# Script Python para modificar a extensao de aquivos em um diretorio
# e mudar o nome
#
# Uso:
# Defina o diretorio, a extensão que quer retirar e a nova extensao, que
# pode ser vazia (" ").
# Por exemplo:
# diretorio = "/home/gildo/imagens"
# extensao = ".*JPEG" (para retirar as extensoes ".dcm", nao esqueca o asterisco)
# novaExtensao = ".jpg" (nesse caso eh vazia, mas poderia ser ".raw", por ex.)
#--------------------------------------------------------------------
import re
import string
import os
# Coloque os seus parametros aqui...
diretorio = "/BACKUP/DICOM_FILES/AMNESIX"
extensao = ".*dcm"
novaExtensao = " " # nesse caso eh vazia
parteQueSai = "IM-0001-"
parteQueSubstitui = "slice"
# Muda extensao
reg = re.compile(extensao)
if os.path.isdir(diretorio) and not os.path.islink(diretorio):
arquivos = os.listdir(diretorio)
for arquivo in arquivos:
newExt = re.compile(extensao).match
if newExt(arquivo):
c = os.path.splitext(arquivo)
b = c[0] + novaExtensao
a = os.path.join(diretorio,arquivo)
b = os.path.join(diretorio,b)
os.rename(a,b)
# Modifica nome
if os.path.isdir(diretorio) and not os.path.islink(diretorio):
arquivos = os.listdir(diretorio)
for arquivo in arquivos:
print arquivo
novoNome = string.replace(arquivo, parteQueSai, parteQueSubstitui)
fullpathOld = os.path.join(diretorio,arquivo)
fullpathNew = os.path.join(diretorio,novoNome)
os.rename(fullpathOld, fullpathNew)
# Hasta...
27 de abr. de 2010
Lista de Peródicos
The MIDAS Journal is an Open Access on-line publication covering different domains from Visualization to Image processing.
The unique characteristics of the MIDAS Journal include:
-Open-access to articles and reviews
-Open peer-review that invites discussion between reviewers and authors
-Support for continuous revision of articles, code, and reviews
http://www.midasjournal.org/
The unique characteristics of the MIDAS Journal include:
-Open-access to articles and reviews
-Open peer-review that invites discussion between reviewers and authors
-Support for continuous revision of articles, code, and reviews
http://www.midasjournal.org/
Assinar:
Postagens (Atom)