Python을 활용한 생의학 영상 분석
Stephen Bailey
Instructor

배열의 데이터 타입이 가능한 강도 범위를 결정합니다
| 타입 | 범위 | 값 수 |
|---|---|---|
| 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
scipy.ndimage에서 구현scikit-image 사용.plt.plot(hist)
plt.show()
import scipy.ndimage as ndihist=ndi.histogram(im, min=0, max=255, bins=256)hist.shape
(256,)

분포가 낮은 강도(배경값) 쪽으로 치우치는 경우가 많습니다.
균등화: 전체 강도 범위를 최적화하도록 값을 재분배합니다.
누적 분포 함수(CDF): 범위 내 픽셀 비율을 나타냅니다.

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] * 255fig, axes = plt.subplots(2, 1) axes[0].imshow(im) axes[1].imshow(im_equalized) plt.show()

Python을 활용한 생의학 영상 분석