Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- procedure
- MRI
- ssl
- FSL
- git
- kernel
- pytorch
- EC2
- coursera
- object detection
- ml
- AWS
- https
- NRMSE
- CT
- Map-reduce
- nodejs
- error
- Dual energy X-ray
- 평가지표
- Cost Function
- 동차좌표계
- Homogeneous Coordinates
- relaxation time
- Anaconda
- x-ray
- MySQL
- pm2
- ubuntu
- Emoji
Archives
- Today
- Total
Pay it Forward
[Python] raw file 열기 및 plot하기 본문
728x90
메디컬 이미징을 다루다보면 raw 형식의 파일을 심심찮게 마주할 수 있습니다.
이 때, 아래와 같은 코드를 사용하여 raw 파일을 열고 plot 및 png형식으로 save할 수 있습니다.
file = './raw_file.raw'
img = np.fromfile(file,dtype='uint16', sep="")
height = int(len(img)**0.5)
width = int(len(img)**0.5)
img = np.reshape(img, (height, width))
plt.imshow(img)
plt.imsave('./raw2png.png', img)
주의해야 할 점은, 아래와 같이 raw file을 load하면 1차원의 배열로 받아지기 때문에
2차원의 이미지로 reshape해주어야 한다는 것입니다.
대개 raw file 길이의 square root 값이 이미지의 height, width값이 되게 되지만
아닐 경우에 file의 출처로부터 이미지 height, width값을 알아내야 합니다.
알아낼 도리가 없다면 1차원 배열의 길이를 인수분해해서 일일이 찾는 방법도 있습니다 :(
위의 예시는 X-ray raw file을 load하여 plot한 것인데,
X-ray의 경우 raw file에서의 bone과 soft tissue간의 contrast가 반대로 되어있습니다.
따라서 아래와 같이 간단한 pixel inversion을 통해 저희가 흔히 보던 X-ray 영상으로 plot할 수 있습니다.
아래는 X-ray raw file plot 코드 전문입니다.
file = './rawfile.raw'
img = np.fromfile(file,dtype='uint16', sep="")
height = int(len(img)**0.5)
width = int(len(img)**0.5)
img = np.reshape(img, (height, width))
img_max = img.max()
img_min = img.min()
img = (img - img_min) / (img_max - img_min)
img = 1 - img
vmin_value = 0.85
plt.imshow(img, cmap='gray', vmax=1, vmin=vmin_value)
plt.imsave('./raw2png.png', img, cmap='gray', vmax=1, vmin=vmin_value)
728x90
'Code Snippet' 카테고리의 다른 글
[Python] print '...' (생략) 없애기, 값 모두 출력하기 (0) | 2022.04.26 |
---|---|
[Python] figure plot 관련 snippets (figure 여러개 띄우기, grid 없애기) (0) | 2021.08.13 |
[C++] Sort의 Sorting Function 만들기 (0) | 2020.01.17 |
Comments