การแปลงเชิงพื้นที่

การวิเคราะห์ภาพทางชีวการแพทย์ด้วย Python

Stephen Bailey

Instructor

ฐานข้อมูล OASIS

โลโก้ OASIS

การวิเคราะห์ภาพทางชีวการแพทย์ด้วย Python

ความแปรปรวนที่มีนัยสำคัญ

อาร์เรย์ภาพสมองหลายภาพ

การวิเคราะห์ภาพทางชีวการแพทย์ด้วย Python

Registration

  • จัดภาพให้ตรงกับเทมเพลต
  • ลดความแปรปรวนเชิงพื้นที่

  • เทมเพลต:

    • อาจแทนกลุ่มผู้ถูกทดสอบหลายคน
    • อาจเป็นภาพ "เฉลี่ย"
  • ต้องใช้การแปลงเชิงพื้นที่หลายขั้นตอน

ภาพสามภาพกำลัง registration

การวิเคราะห์ภาพทางชีวการแพทย์ด้วย Python

Affine transformation รักษาจุด เส้น และระนาบ

ตัวอย่างการแปลง

การวิเคราะห์ภาพทางชีวการแพทย์ด้วย Python

การเลื่อน (Translation)

ภาพหัวที่ถูกเลื่อน

import imageio.v2 as imageio
import scipy.ndimage as ndi

im=imageio.imread('OAS1036-2d.dcm')
im.shape
(256, 256)
com = ndi.center_of_mass(im)

d0 = 128 - com[0] d1 = 128 - com[1]
xfm = ndi.shift(im, shift=[d0, d1])
การวิเคราะห์ภาพทางชีวการแพทย์ด้วย Python

การหมุน (Rotation)

ndi.rotate(im,
           angle=25,
           axes=(0,1))

ภาพหัวที่ถูกหมุน

การวิเคราะห์ภาพทางชีวการแพทย์ด้วย Python

การหมุนภาพ

xfm = ndi.rotate(im, angle=25)

xfm.shape
(297, 297)

ภาพหมุนที่ถูกปรับรูปทรง

xfm = ndi.rotate(im, angle=25, 
              reshape=False)
xfm.shape
(256, 256)

ภาพหมุนปกติ

การวิเคราะห์ภาพทางชีวการแพทย์ด้วย Python

เมทริกซ์การแปลง

เมทริกซ์การแปลง: ใช้กับภาพหนึ่งภาพเพื่อทำ registration

สมาชิกของเมทริกซ์บรรจุ "คำสั่ง" สำหรับ affine transformation รูปแบบต่าง ๆ

ภาพที่แสดงการแปลงสี่รูปแบบ

การวิเคราะห์ภาพทางชีวการแพทย์ด้วย Python

การใช้งานเมทริกซ์การแปลง

# Identity matrix
mat = [[1, 0, 0],
       [0, 1, 0],
       [0, 0, 1]]

xfm = ndi.affine_transform(im, mat)

ภาพต้นฉบับ

# Translate and rescale
mat = [[0.8, 0,   -20],
       [0,   0.8, -10],
       [0,   0,   1]]
xfm = ndi.affine_transform(im,
                           mat)

ภาพที่ผ่านการแปลงแล้ว

การวิเคราะห์ภาพทางชีวการแพทย์ด้วย Python

มาฝึกกันเถอะ!

การวิเคราะห์ภาพทางชีวการแพทย์ด้วย Python

Preparing Video For Download...