강도 값

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

Stephen Bailey

Instructor

픽셀과 복셀

  • 픽셀은 2D 이미지 요소입니다
  • 복셀은 3D 부피 요소입니다
  • 두 가지 속성: 강도와 위치

발 엑스레이

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

데이터 타입과 이미지 크기

배열의 데이터 타입이 가능한 강도 범위를 결정합니다

타입 범위 값 수
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
Python을 활용한 생의학 영상 분석

히스토그램

  • 히스토그램: 각 강도 값의 픽셀 수를 계산합니다.
  • scipy.ndimage에서 구현
    • 고차원 배열
    • 마스크된 데이터
  • 고급 기법은 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,)

히스토그램

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

균등화

  • 분포가 낮은 강도(배경값) 쪽으로 치우치는 경우가 많습니다.

  • 균등화: 전체 강도 범위를 최적화하도록 값을 재분배합니다.

  • 누적 분포 함수(CDF): 범위 내 픽셀 비율을 나타냅니다.

히스토그램+CDF

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

균등화

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()

균등화된 이미지

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

연습해 봅시다!

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

Preparing Video For Download...