[Archive] 강좌게시판

취소
다음에 대한 결과 표시 
다음에 대한 검색 
다음을 의미합니까? 

[myLV.net 집필진 강좌] Biomedical Toolkit 사용하기

 [myLV.net 집필진 강좌 – Goodmaner]

 

이번 강좌에서는 LabVIEW에서 사용할 수 있는 다양한 Add-On Toolkit 중 의료 영상 이미지에 대한 2D/3D 시각화를 손쉽게 할 수 있도록 해주는 BMTK(Biomedical Toolkit)를 소개해 드리겠습니다. 참고로 이번 LabVIEW 코딩 대회에서 관련 Toolkit을 이용하여 VR(Virtual Reality) 프로그램을 개발하였습니다. BMTK는 의료 영상 이미지에 대한 3D 시각화 뿐만 아니라 생체 신호 계측을 위한 데이터 수집, 신호처리를 편리하게 사용할 수 있도록 해줍니다. 즉 ECG 기능 추출, RR주기 분석, EEG, EMG, ECG용 알고리즘이 포함된 라이브러리를 제공합니다. 혹시 생체 신호 계측을 취급하고 있다면 관련 Toolkit을 사용해 보면 좋을 듯 싶습니다. 현재 BMTK Toolkit은 NI 홈페이지에서 다운받을 수 있는 버전이 LabVIEW 2013과 2014이며, VI Package Manager로는 LabVIEW 2015R 버전까지 지원합니다.


아래 링크된 사이트에 접속하면 LabVIEW 2013 또는 2014버전을 다운받아 설치할 수 있습니다.

https://www.ni.com/en/support/downloads/tools-network/download.labview-biomedical-toolkit.html

 

설치를 완료하게 되면 아래와 같이 "NI 예제 탐색기"에서 "툴킷과 모듈" 항목을 검색하면 "의료 이미지" 카테고리에 4개의 예제 코드가 제공됩니다.

 

1.png

 

 

1.3D Image Reconstructor.vi                     
2.Animate 2D Slices.vi                              
3.Medical Image File Format Converter.vi
4.Write and Read DICOM Tags.vi             

위의 예제에 대해서 살펴보기 앞서 BMTK를 설치하고 나면 블록 다이어그램의 함수 팔레트에 아래와 같은 애드온이 추가된 것을 확인할 수 있습니다.

 

2.png

 

3.png

 

4.png

 

5.png

 

6.png

 

 

의료 영상 이미지 시각화와 관련된 API들은 아래 항목들이며, 관련 Toolkit을 이용하여 수십 또는 수백장의 의료영상 이미지들로부터 ISO Surface Rendering 기법을 이용하여 3차원적으로 display해줄 수 있습니다. 이를 구현하기 위하여 아래와 같은 두 개의 API를 사용합니다.

7.png

 

8.png

 

 

이제부터 예제 코드들에 대해서 하나씩 살펴보도록 하겠습니다.

 

1.3D Image Reconstructor.vi

이 예제코드는 2차원 배열의 의료영상 이미지들을 3차원적으로 시각화해 줍니다.

 

9.png

 

 

이때 사용하는 알고리즘은 바로 위에서 언급했었던 ISO Surface Rendering입니다. 일반적으로 3차원 시각화 기법으로 가장 널리 사용되는 기법은 Raycasting 또는 Raytracing 기법이며 이 알고리즘을 적용하는 경우 ISO Surface Rendering 기법보다 훨씬 더 좋은 시각화 이미지를 표현할 수 있습니다. 추후 BMTK가 버전 업되는 경우 더 좋은 3차원 시각화 기법을 사용할 수 있는 솔루션을 제공해주면 좋을 것 같습니다. 아래 링크된 사이트에 관련 예제 코드에 대한 상세 설명이 나와 있으니 관심 있으신 분들은 참고하시면 좋을 것 같습니다. 

https://forums.ni.com/t5/Biomedical-User-Group-Documents/How-to-write-a-3D-Image-Reconstructor-using...

 

2.Animate 2D Slices.vi

이 예제코드는 2차원 배열의 의료영상 이미지들을 슬라이드 방식으로 시각화해 줍니다. 아래는 관련 코드의 프론트패널 입니다.

 

10.png

  

아래 링크된 사이트에 관련 예제 코드에 대한 상세 설명이 나와 있으니 관심 있으신 분들은 참고하시면 좋을 것 같습니다. 

https://forums.ni.com/t5/Biomedical-User-Group-Documents/How-to-Animate-Your-2D-Slices/ta-p/3506998

 

3.Medical Image File Format Converter.vi

다양한 파일 포맷의 이미지들에 대해서 파일 포맷을 변환시켜주는 예제 코드입니다. 지원하는 파일 포맷은 아래와 같습니다.

BMP(.bmp) / JPG(,jpg) / PNG(.png) / DICOM(.dcm)

위의 파일 포맷 중 DICOM(Digital Imaging and Communications in Medicine)은 의료영상 표준 포맷입니다. 아래 링크된 사이트에 관련 예제 코드에 대한 상세 설명이 나와 있으니 관심 있으신 분들은 참고하시면 좋을 것 같습니다. 

https://forums.ni.com/t5/Biomedical-User-Group-Documents/How-to-convert-image-file-types-BMP-JPG-PNG...

 

4.Write and Read DICOM Tags.vi

이 예제 코드는 DICOM 파일의 tag 정보를 읽거나 쓰는 예제 코드입니다.

 

11.png

 

  

아래 링크된 사이트에 관련 예제 코드에 대한 상세 설명이 나와 있으니 관심 있으신 분들은 참고하시면 좋을 것 같습니다. 

https://forums.ni.com/t5/Biomedical-User-Group-Documents/How-to-Read-and-Write-DICOM-tags/ta-p/35068...

이처럼 의료영상 포맷(DICOM)의 이미지와 그밖의 다양한 포맷의 이미지들을 2차원 또는 3차원으로 시각화하고자 하는 경우 BMTK를 사용하면 손쉽게 구현할 수 있습니다. 의료 영상 이미지에서 가장 관심있는 부분이 이미지 정합과 분할(Registration & Segmentation)입니다. 즉, 의료 영상 장비마다 변명을 판독하기 유용한 게 있는데, 이런 경우 다양한 의료 영상 장비로부터 취득한 이미지를 하나로 합쳐서 표현하게 되면, 어느 위치에 어떤 문제가 있는지 확인이 용이하기 때문에 이미지 정합이 매우 중요하며, 특정 부분을 분리해서 표시하는 것도 매우 중요한 후처리 과정입니다. LabVIEW를 사용해도 어느 정도 구현을 할 수 있지만 좀 더 고급스러운 이미지를 표현하고자 하면 ITK(Insight Segmentation and Registration Toolkit)와 VTK(Visualization Toolkit)을 참고하셔도 좋을 것 같습니다. Open-Source이기 때문에 관련 Toolkit들을 이용하여 상용 프로그램 개발도 가능합니다. 첨부파일은 2013년에 NIDays에서 "NI Biomedical Toolkit을 이용한 DICOM 이미지 처리 및 3D 시각화"란 주제로 강연하였던 자료입니다. 관심 있으신 분들은 참고하시면 좋을 것 같습니다.