TI/Programowanie dla Fizyków Medycznych/Manipulacja obrazem: Różnice pomiędzy wersjami

Z Brain-wiki
(Utworzono nową stronę "==Maniplacja obrazem== tralala... "Programowanie dla Fizyków Medycznych"")
 
Linia 1: Linia 1:
 
==Maniplacja obrazem==
 
==Maniplacja obrazem==
tralala...
+
Ćwiczenia z mainuplacji obrazem rozpocznijmy od wczytania pliku który będziemy przetwarzać. Dla fizyków medycznych naturalnie będzie to plik DICOM.
 +
<source lang="python">
 +
import dicom
 +
import numpy as np
 +
import pylab as py
 +
 
 +
plik=dicom.read_file('I00001.dcm')
 +
pixel=plik.pixel_array
 +
print pixel.shape
 +
>>>(2964, 2364)
 +
</source>
 +
Stworzona w ten sposób tablica ma dosyć duże rozmiary. O ile wyświetlenie takiego pliku nie jest problemem dla znajdujących się w pracowni komputerów, to bardziej złożona modyfikacja takiej grafiki mogła by z czasem obliczeń znacznie wykraczać poza czas przewidziany na zajęcia. Wyłącznie dla celów dydaktycznych, by ułatwić i przyspieszyć pracę zmniejszymy rozmiar badanego obrazu.
 +
<source lang="python">
 +
pixel=pixel[::5,::5]
 +
print min(pixel.flatten()),max(pixel.flatten())
 +
>>> 0 3907
 +
</source>
 +
Wartości zapisane w tablicy odpowiadającej zmniejszonemu obrazowi mają wartości w przedziale [0,3907]. Metoda wyświetlając imshow najwyższej wartości czyli 3908 przypisze kolor biały, wartości 0 kolor czarny. Aby ułatwić  sobie manipulacje kolorami przypiszmy im wartości z zakresu [0,1].
 +
<source lang="python">
 +
pixel=pixel*1.0/max(pixel.flatten())
 +
</source>
 +
Tak powstały obraz możemy dowolnie modyfikować. Aby lepiej widoczne były skutki manipulacji obrazem dodajmy u góry obrazka þlynne przejście od czerni do bieli
 +
<source lang="python">
 +
def dodajPasek(tablica, n):
 +
    tablica[:n,:]=np.linspace(0,1,tablica.shape[1])
 +
dodajPasek(pixel,30)
 +
py.imshow(pixel,cmap=py.cm.gray,interpolation='nearest')
 +
py.show()
 +
</source>
 +
 
 +
[[Plik:dicom2.png]]
 +
 
 
[["Programowanie dla Fizyków Medycznych"]]
 
[["Programowanie dla Fizyków Medycznych"]]

Wersja z 22:33, 8 cze 2015

Maniplacja obrazem

Ćwiczenia z mainuplacji obrazem rozpocznijmy od wczytania pliku który będziemy przetwarzać. Dla fizyków medycznych naturalnie będzie to plik DICOM.

import dicom
import numpy as np
import pylab as py

plik=dicom.read_file('I00001.dcm')
pixel=plik.pixel_array
print pixel.shape
>>>(2964, 2364)

Stworzona w ten sposób tablica ma dosyć duże rozmiary. O ile wyświetlenie takiego pliku nie jest problemem dla znajdujących się w pracowni komputerów, to bardziej złożona modyfikacja takiej grafiki mogła by z czasem obliczeń znacznie wykraczać poza czas przewidziany na zajęcia. Wyłącznie dla celów dydaktycznych, by ułatwić i przyspieszyć pracę zmniejszymy rozmiar badanego obrazu.

pixel=pixel[::5,::5]
print min(pixel.flatten()),max(pixel.flatten())
>>> 0 3907

Wartości zapisane w tablicy odpowiadającej zmniejszonemu obrazowi mają wartości w przedziale [0,3907]. Metoda wyświetlając imshow najwyższej wartości czyli 3908 przypisze kolor biały, wartości 0 kolor czarny. Aby ułatwić sobie manipulacje kolorami przypiszmy im wartości z zakresu [0,1].

pixel=pixel*1.0/max(pixel.flatten())

Tak powstały obraz możemy dowolnie modyfikować. Aby lepiej widoczne były skutki manipulacji obrazem dodajmy u góry obrazka þlynne przejście od czerni do bieli

def dodajPasek(tablica, n):
    tablica[:n,:]=np.linspace(0,1,tablica.shape[1])
dodajPasek(pixel,30)
py.imshow(pixel,cmap=py.cm.gray,interpolation='nearest')
py.show()

Dicom2.png

"Programowanie dla Fizyków Medycznych"