
TI/Programowanie dla Fizyków Medycznych/Manipulacja obrazem: Różnice pomiędzy wersjami
(Utworzono nową stronę "==Maniplacja obrazem== tralala... "Programowanie dla Fizyków Medycznych"") |
|||
| Linia 1: | Linia 1: | ||
==Maniplacja obrazem== | ==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. | |
| + | <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()
