2010년 3월 24일 수요일

의학관련 이미지 처리 프로그램 ImageJ

어제 천씨의 연구 주제를 구경하다 멋진 프로그램을 몇개 알게되었다.

우선 천씨가 소개한 Scion. NIH에서 imaging processing 연구에 사용하는 프로그램 NIH Image를 기반으로 한 프로그램이다. 또한 여기에 같이 ImageJ란 프로그램도 소개되어있다.

천씨는 Scion 프로그램을 선택했고, 메뉴얼도 뽑아놔서 내가 빌려보는 중. 근데, 알아보니 ImageJ를 사용하는게 좋을 듯. 우선 release note를 살펴보면 Scion의 경우 최신판인 Scion Image for Windows Beta 4.02가 2000년 4월 9일날 release 되었다. NIH Image는 V1.63이 2002년 11월 9일날 release된후 2년간 새로 release 된 것이 없다. 반면 ImageJ는 V1.31v가 2004년 2월 4일날 release 되었다. NIH Image를 가장 먼저 개발하여 사용하다가 Scion사에서 다른 이종OS에도 사용 가능하게 각각의 OS별용 프로그램을 개발한 듯하다. 하지만 NIH에서 자체 개발한 ImageJ역시 Scion처럼 NIH Image를 기반으로 했으며 현재까지 계속 버전업을 해오고 있다.

Scion 프로그램 매뉴얼을 보고 굉장히 놀랐는데, 아마도 우리가 교과서에서 보는 전자 현미경 컬러사진(전자 현미경은 원칙적으로 흑백이라 후작업을 해야 컬러로 보인다.)을 만드는 일이나 각종 2D sliced 3D 사진 같은 것들이 모두 이런 프로그램을 사용한 것 처럼 보인다. 천씨 말로는 김우호 선생님께서 상용 프로그램이 있다고 말씀하셨다는데, 내가 보기엔 NIH Image류 프로그램만으로도 충~분한 결과물을 얻을 수 있을 것 같다.

Scion사의 프로그램은 너무 낡았다. BMP나 TIFF화일(그것도 압축 안된 것으로)만 읽을 수 있으며 놀라운 Macro 기능이 있긴 한데 파스칼 언어 문법을 따르는 것 같다. (따로 배워야하니 부담되겠지. 요즘 델파이가 각광받는 중이라지만 자바나 C/C++처럼 광범위 사용되는 언어가 아닌 새로운 언어를 배운다는 건 부담이 될테니)

하지만 ImageJ는 지속적인 개발이 진행되고 있는 정말 멋진 프로그램이다. 프로그램의 구성을 잠깐만 봐도 '아.. 이건 엔지니어가 개발한게 아니라 리서쳐가 개발 한거군!' 하는 느낌이 가득했다.
우선, 오픈 소스.
상업용 프로그램이 난무한 가운데, 이런 훌륭한 프로그램이 오픈 소스로 존재한 다는 건 정말 리서쳐에겐 축복이다. 특히나 이런류의 프로그램의 경우 개발의 어려움과 수요의 부족으로 인해 터무니 없이(뭐 개발의 어려움을 생각하면 터무니 없는 가격은 아니지만 부담임엔 틀림없다. 모~든 기능이 필요한 건 아닌데 한번에 지불해야하니 말이다.) 더군다나 새로이 이러한 프로그램을 개발하고자 하는 사람에게 소스가 참고가 될 수도 있고(물론 분석하는 일은 거의 새로 만드는 일만큼이나 고역일 것이다.). 아무튼 요즘에서 오픈소스의 바람이 거세지고 있는 마당에 오랜 시간 이러한 프로그램이 있었다는게 정말 든든하다.

다양한 플러그인
플러그인이란 부족한 기능을 보충하기 위한 추가 기능 확장 같은 거다. 대충 둘려본 플러그인의 갯수가 장난이 아니다. 어~지간한 기능은 모두 이미 다 구현이 되어 있지 않을까 하는 생각이 든다. 물론 그 플러그인도 많은 부분이 open되어 있다는 점이 매우 반갑다. 어떤식으로 내부적으로 돌아가는지 궁금한 경우 소스를 직접 뒤져볼 수 있기 때문이다. Scion이나 NIH Image도 플러그인 기능이 있지만, ImageJ의 왕성한 활동력에 ImageJ가 단연 돋보인다고 할 수 있다.
이러한 플러그인 기반의 설개는 정말 SPSS와 비견된다 하겠다. 뭐, SPSS를 완벽히 아는 건 아니지만, 메뉴의 구성으로 볼 때 SPSS는 확장성보다는 편의성을 선택한 프로그램이다. SPSS와 같은 통계패키지와 ImageJ와 같은 이미지처리 프로그램을 비교하는게 어색할 수도 있지만 일단 둘다 리서쳐에게 '컴퓨터의 존재 이유'를 갖게 하는 중요한 프로그램이란 공통점으로 볼 때 충분히 비교할만 하다. SPSS의 경우 기능 확장이 까다롭지만, ImageJ는 프로그램 자체는 매~우 기초적인 기능만을 (거의 플랫폼만 제공하는 수준) 제공하지만 필요한 기능들을 플러그인으로 넣어 두었다. SPSS의 경우 프로그램이 무거운 반면 ImageJ가 매우 가벼운 이유도 이러한 기본 골격 차이에서 기인하는게 아닐까 생각해본다.

마지막으로 JAVA
세상에.. Java를 사용하여 개발했다. 이미지 프로세싱에 걸리는 연산 부하를 고려하면 충분히 C/C++를 고려했을 수도 있지만, 편리한 이식성과 설계의 장점으로 Java를 선택한 NIH Image 프로그램 개발자들의 선구안에 감탄을 보낸다. 만약 그들이 엔지니어였다면 알짤없이 C/C++을 선택했을 것이다. Java의 사용으로 OOP를 이용한 API 접근이 가능하고, 또한 Java의 특징한 '문법은 하나만 배우면 된다!'에 입각해서 플러그인도 ImageJ 프로그램을 작성한 것과 동일한 문법이 사용되고 있다. marco도 거의 Java문법을 이용하고 있어서 프로그래밍 언어를 따로 배우는 부담이 적다.(뭐 Java는 워낙 범용 언어이니.) 예전에 NIH산하 NLM(National Library of Medicine)의 Imaging 관련 프로젝트에서 PACS시스템에 응용할 수 있는 환자 검사 이미지 입력 프로그램을 본 적이 있는데, 바로 웹상에서 실행 가능한 Java를 사용해서 '와~' 감탄한 적이 있는데, ImageJ 역시 JRE가 깔려있으면(Java 인터프리팅 플랫폼의 일종) 800kb남짓한 실행파일로 실행이 가능하다.(어느 OS에서든 똑같은 파일로!!!) 웹상에서도 실행이 가능하다. OS에 관계없이 완전히 똑같은 프로그램을 사용할 수 있다는 장점이 있다.!! (음.. 프로세싱 시간을 테스트해보지 않아서 잘 모르겠지만, 요즘 Java JRE가 많이 버전업 되어서 연산수행 능력도 C/C++ 못지 않게 발달했다고 들었다.)

출처 : http://niceview.egloos.com/209956

댓글 없음:

댓글 쓰기