Wartości intensywności

Analiza obrazów biomedycznych w Pythonie

Stephen Bailey

Instructor

Piksele i woksele

  • Piksele to elementy obrazu 2D
  • Woksele to elementy objętości 3D
  • Dwie właściwości: intensywność i położenie

rentgen stopy

Analiza obrazów biomedycznych w Pythonie

Typy danych a rozmiar obrazu

Typ danych tablicy określa zakres możliwych intensywności

Typ Zakres Liczba wart.
uint8 0, 255 256
int8 -128, 127 256
uint16 0, 2$^{16}$ 2$^{16}$
int16 -2$^{15}$, 2$^{15}$ 2$^{16}$
float16 ~-2$^{16}$, ~2$^{16}$ >>2$^{16}$
import imageio.v2 as imageio

im=imageio.imread('foot-xray.jpg')

im.dtype
    dtype('uint8')

im.size
153600
im_int64 = im.astype(np.uint64)
im_int64.size
1228800
Analiza obrazów biomedycznych w Pythonie

Histogramy

  • Histogramy: zliczają piksele dla każdej wartości intensywności.
  • Zaimplementowane w scipy.ndimage
    • tablice wielowymiarowe
    • dane z maską
  • Zaawansowane funkcje w scikit-image.
plt.plot(hist)
plt.show()
import scipy.ndimage as ndi

hist=ndi.histogram(im, min=0, max=255, bins=256)
hist.shape
(256,)

Histogram

Analiza obrazów biomedycznych w Pythonie

Wyrównywanie histogramu

  • Rozkłady często są skośne w kierunku niskich intensywności (tło).

  • Wyrównywanie histogramu: redystrybucja wartości w celu optymalizacji pełnego zakresu intensywności.

  • Dystrybuanta (CDF): pokazuje udział pikseli w danym zakresie.

Histogram+CDF

Analiza obrazów biomedycznych w Pythonie

Wyrównywanie histogramu

import scipy.ndimage as ndi
hist = ndi.histogram(im, min=0, 
                         max=255,
                        bins=256)

cdf = hist.cumsum() / hist.sum() cdf.shape
(256,)
im_equalized = cdf[im] * 255

fig, axes = plt.subplots(2, 1) axes[0].imshow(im) axes[1].imshow(im_equalized) plt.show()

wyrównany obraz

Analiza obrazów biomedycznych w Pythonie

Czas na ćwiczenia!

Analiza obrazów biomedycznych w Pythonie

Preparing Video For Download...