2. Image File 구조

  • 여러분이 다룰 Image File의 구조를 간략하게 살펴보겠습니다.
  • 최대한 간결하게 필수적인 지식만 전달하고자 합니다.

Reference

A Fiji Scripting Tutorial #2. Your first Fiji script

2.1. Image File 구조

  • ImageJ로 다룰 image는 bitmap 형식입니다.

  • 전체 이미지는 pixel이라 불리는 점의 집합으로 이루어져 있습니다.

  • 원점은 좌측 상단이며 아래 이미지는 256x256개의 pixel을 가지고 있습니다.


  • 이미지 파일에는 Channels, Slices, Frames 속성이 있습니다.
    Channel: 하나의 pixel을 몇 가지의 데이터로 표현하는지.
    Slices: 입체적인 시료를 몇 개의 층으로 나누어 분석했는지.
    Frames: 몇 장의 연속된 이미지를 합쳤는지.



2.2. ImageJ에서 Image File 읽기.

  • ImageJ에서는 다른 프로그램처럼 [File] > [Open]을 통해서 이미지 파일을 열 수 있습니다.
  • 각자 파일은 조금 나중에 열어보기로 하고, 여기서는 동일한 설명을 위해 같은 파일을 열어보겠습니다.
  • ImageJ에서 제공하는 Sample Image를 다음과 같이 열 수 있습니다.
  • [File] > [Open Samples]로 가면 다양한 그림들이 있는데, 여기서 Boats (356K)를 선택합시다.



2.3. Image File 정보 읽기.

  • Image File에 담긴 정보를 읽는 방법을 알아봅시다.
    가로세로 몇 개의 pixel로 구성되어 있는지, Greyscale은 몇 단계로 구성되어 있는지 등입니다.

2.3.1. GUI

  • 아래 왼쪽과 같이 흑백 배 사진을 보실 수 있습니다.

  • 사진 왼쪽 위를 자세히 보시면 720x576 pixels; 8-bit, 405K라는 정보가 나와 있습니다만 조금 더 자세히 알아봅시다.

  • [Image] > [Show Info]를 클릭하시면 이미지의 전체적인 정보를 보실 수 있습니다.

  • 이미지 창에서 Ctrl + I 단축키를 입력하셔도 됩니다.


  • 그럼, 아래와 같은 Image File의 정보가 요약된 창이 뜹니다.


  • Title 은 파일명, Width은 이미지의 폭, Height는 이미지의 높이, Size는 파일 크기를 말하며,
    Bits per pixelDisplay range는 한 pixel이 담을 수 있는 데이터의 크기를 말합니다.

  • n bit는 $ 2^{n} $개의 정보를 담을 수 있으므로, 8 bit는 한 pixel의 데이터를 $ 2^{8} = 256 $ 단계로 표현할 수 있습니다.
    따라서 Display range는 0(black)-255(white)까지의 값을 가질 수 있습니다.

  • Channels, Slices, Frames 속성은 [Image] > [Properties...] 에서 다음과 같이 확인 가능합니다.


  • 다른 예제를 통해 복잡한 이미지의 기본 정보를 살펴봅시다.

  • [File] > [Open Samples]에서 mitosis.tif를 선택합니다.
    2 channel, 5 slice, 51 frames를 가진 171 x 196 image 입니다.


  • Image Info: 파일명, 이미지 크기, Bits per pixel, Frame 관련 정보입니다.


  • Image Properties...: Channels, Slices, Frames 정보입니다.


2.3.2. ImageJ Python Script.

  • 우리의 목적은 python script를 이용해서 이미지를 처리하는 것입니다.

  • python 명령어를 이용해서 이미지에 드러난 형상과 pixel 데이터를 처리하는 연습을 해 보겠습니다.

  • 다시 Boats를 화면에 띄우고 script 창을 열어봅시다. [File] > [New] > [Script..]를 클릭하면 됩니다.


  • 단축키 [를 누르면 한 번에 아래와 같은 창을 띄울 수 있습니다.

  • ImageJ는 상당히 많은 언어를 제공합니다. [상세링크]
    우리는 python을 이용한 스크립트를 작성할 것이므로 이 중에서 python을 선택합시다.


  • 엄밀히 말하면, ImageJ에서 지원하는 것은 Python이 아니라 Jython입니다.
    JythonJAVA 플랫폼에서 Python을 구현한 것으로, JAVA class를 불러올 수 있습니다. [Link]

  • JAVA 기능을 활용해 UI를 제작할 수 있습니다.
    이미지 분석 및 조작 부분은 python의 문법을 따릅니다. [Link]

  • script 창에 아래와 같은 명령을 입력하고 실행해 봅시다.
    실행 단축키는 Ctrl + R 입니다.


2.3.3. ImageJ Python Script 설명.

  1. package ij로부터 IJ를 불러옵니다.

    1
    from ij import IJ
    • imagej가 제공하는 package ij 안에는 IJ외에도 다양한 class가 있습니다. [Link]
      이 중 지금 우리가 호출할 명령어는 IJ 안에만 있으므로 다른 것들은 두고 IJ만 불러오는 것입니다.
  2. 현재 열려 있는 그림을 잡아옵니다.

    1
    imp = IJ.getImage()
    • IJ.getImage()는 열려 있거나 마우스가 최근에 클릭한 이미지를 데이터로 메모리에 담는 명령입니다.
      imp =이 앞에 있으므로, 지금 열린 Boat 이미지를 통째로 imp라는 변수에 넣겠다는 뜻입니다.
    • 이제 imp에서 읽는 정보는 Boat 이미지의 정보이고, imp를 수정하면 Boat이미지가 수정됩니다.
  3. 그림의 정보를 출력합니다.

    1
    print imp
    • pythonprint명령은 뒤에 오는 변수의 내용물을 출력하라는 뜻입니다.
      예를 들어 a = 1 이라고 선언한 뒤에 print a를 하면 a에 담긴 1을 출력합니다.
    • 여기서는 imp에 담긴 내용을 출력하라는 명령이므로 아래 창에 출력된 것 처럼
      img["boats.gif" (-5), 8-bit, 720x576x1x1x1] 이라는 결과물이 나옵니다.
      • img : “image data이고, 상세 정보는 []와 같음”.
      • "boats.gif" : 파일명
      • (-5) : ID
      • 8-bit : pixel의 data level ($ 2^{8} = 256 $)
      • 720x576 : width x height
      • 첫번째 x1 : channels
      • 두번째 x1 : slices
      • 세번째 x1 : frames
    • width, height, channels, slices, frames 는 이미지 데이터에 접근하는 주소가 됩니다.

2.4. Image Meta Data 읽기.

  • Image Data가 Image가 어떻게 구성되어 있는지에 대한 정보라면,
    Image Meta Data는 Image가 어떻게 형성되어 있는지에 대한 정보입니다.
  • SEM이나 TEM같은 현미경 사진 분석에 중요한 nm/pixel, 논문 작성시 필요한 가속전압 등이 있습니다.

2.4.1. TEM Image (.dm3)

  • ImageJ에서는 Gatan Digital Micrographdm3 format을 지원합니다.
  • 별도의 옵션이나 설치 없이 [File] > [Open]을 통해 dm3파일을 열 수 있고,
    Show Info를 하면 다음과 같은 meta data 전체를 볼 수 있습니다.
  • Resolution, Pixel size, Voltage, Magnification등의 정보가 보입니다.

2.4.2. SEM Image (.tif)

  • ImageJ에서 .tif파일을 연 후, Show Info를 하면 ResolutionPixel Size정도만 보입니다.


  • ImageJ에서 tif의 meta data 전체를 보기 위해서는 별도의 플러그인을 설치해야 합니다.

  • 다운로드 링크에서 tiff_tags.jar를 다운받은 후 ImageJ를 재시작합니다.

  • 그리고 [Plugins] > [TIFF Tags]를 선택하면 파일 열기 창이 뜨는데, 여기에서 파일을 선택합니다.



  • 그리고 작은 창에서 한 줄에 몇 글자를 보여줄 지를 선택하면,


  • 아래와 같은 창이 뜨는데, 모든 중요 정보가 한 줄로 나타나서 별로 유용하지 않아 사용을 권하지 않습니다.



도움이 되셨나요? 카페인을 투입하시면 다음 포스팅으로 변환됩니다

Share