Image File Reading

Import Medical Images into MATLAB

การอ่านไฟล์และการนำเข้ารูปภาพทางการแพทย์เพื่อใช้ในโปรแกรม MATLAB

Objective

  1. เพื่อให้สามารถเริ่มต้นทำการศึกษาการทำ Image processing ใน Biomedical field
  2. เพื่อศึกษาวิธีการทำ Image processing กับไฟล์ชนิดต่างๆ เช่น DICOM, AVI, LSM
  3. เพื่อเปิดโอกาสให้นักศึกษาได้หาความรู้นอกห้องเรียน

Medthods

  1. LSM File

    เป็นไฟลท์ภาพที่ได้มาจากกล้องจุลทรรศน์ Confocal Scanning Microscopes โดยภาพถ่ายที่ได้จะเป็นภาพ .lsm

    Keyword
    fucntion : A = imread(filename, fmt)
    

    ภาพนามสกุล LSM จะประกอบ 2 ส่วนคือ header (meta data) และ tiff จึงสามารถเปิดโดย LSM ToolBox และฟังชั่นใน Matlab ที่ชื่อว่า imread ตามลำดับ

  2. DICOM File

    DICOM หรือ Digital Imaging and Communications in Medicine เป็นมาตรฐานของไฟล์รูปภาพทางการแพทย์ เช่น MRI, CT scan, CR และ Ultrasound เป็นต้น โดยอุปกรณ์เครื่องมือแพทย์รุ่นใหม่ๆจะสนับสนุนมาตรฐานนี้ และเมื่อภาพถ่ายทางการแพทย์มีมาตรฐานเดียวกัน จึงทำให้สามารถส่ง แลกเปลี่ยน และใช้ได้ในเครื่องมือแพทย์ และโปรแกรมที่ใช้ในการแพทย์ แม้มาจากต่างบริษัทกัน โดย DICOM จะประกอบด้วย header ของไฟล์ ซึ่งจะบอกถึงข้อมูลของภาพ เช่น ความกว้าง ความยาว ชนิดของภาพ และข้อมูลของผู้ป่วย เช่น ชื่อ นามสกุล หรืออื่นๆ

    DICOM file เป็นภาพทางการแพทย์ที่ matlab สนับสนุนในการอ่าน จึงสามารถอ่านไฟล์ประเภทนี้ได้ง่าย โดยจะเพิ่มลูกเล่นได้มากมาย เพราะ matlab มีฟังก์ชั่นสนับสนุนเยอะ รับค่าข้อมูลทั้งหมดของ Dicom

    Keyword
    fucntion : X = dicomread(filename)
    

  3. Video .AVI

    ไฟล์ avi หรือ Audio Video Interleave เป็นฟอร์แมตของไฟล์วิดีโอที่ถูกพัฒนาโดย Microsoft โดย avi จะสามารถเก็บได้ทั้งไฟล์วิดีโอและเสียง โดยจะเล่นพร้อมกัน ไฟล์ avi สามารถสร้างได้โดยไม่มีการบีบอัดไฟล์ จึงทำให้ไฟล์มีขนาดใหญ่แต่ไม่สูญเสียคุณภาพของไฟล์ ทำให้ไม่จำเป็นต้องติดตั้ง codecs

    Keyword
    fucntion : obj = VideoReader(filename)
    

    อ่านไฟล์วิดีโอทั้งหมดที่รองรับ รับค่าข้อมูลทั้งหมดของวิดีโอ แล้วสามารถนำไปประยุกต์ใช้ทำงานได้ เพื่อเล่นกับฟังก์ชั่นในimage processingต่างๆได้มากมาย

  4. WEBCAM

    กล้อง Webcam เป็นกล้องที่ใช้บันทึกวิดีโอ เชื่อมต่อกับคอมพิวเตอร์ และสามารถบันทึกได้แบบ real-time มีทั้งแบบ มีสายและแบบไร้สาย ราคาก็มีตั้งแต่หลักร้อยขึ้นไป เซ็นเซอร์รับภาพที่ใช้จะมีแบบ CCD และ CMOS

    Keyword
    fucntion : obj = videoinput(adaptorname)
    

    ตัวช่วยเพื่อให้เปิดกล้องในคอมพิวเตอร์ เพียงแค่จะมีค่าพารามิเตอน์หลายตัวที่ต้องใช้ประกอบ ต้องตั้งค่าพารามิเตอร์หน้าจอให้ตรงกับคอมพิวเตอร์ จึงจะใช้งานได้ และสามารถปรับความใหญ่ของจอที่แสดง


Results

  1. LSM File

    การเปิดภาพที่ใช้จะทำเป็นฟังก์ชั่น ซึ่งผู้ใช้ควร set path ของ lsm.zip ที่ให้ดาวน์โหลดข้างล่างนี้ไปด้วย โดยเมื่อใช้โค้ดจะใช้เหมือนฟังก์ชั่นทั่วไป ฟังก์ชั่นนี้จะนำข้อมูลภาพมาเก็บเป็น array แล้วแสดงผลออกมาเป็นภาพ RGB ที่ทับซ้อนกันให้เห็นเป็นภาพปกติ

    ภาพ 1 เปิดภาพนามสกุล lsm ที่เป็นภาพตัวอย่าง

  2. DICOM

    เมื่อนำภาพตัวอย่างมาเปิดใน matlab จะเป็นภาพตัดขวางของสมอง ซึ่งโค้ดจะที่ออกแบบจะทำการเปิดภาพออกมา และใช้ image processing 2 แบบ คือ 1) ปรับความคมชัดของภาพ สามารถปรับความคมชัดของภาพได้ตามต้องการ 2) ปรับด้านกว้างยาวของภาพที่แสดง ตามขนาดภาพที่รับมา

    ภาพ 2 : เปิดภาพ DICOM ที่เป็นภาพตัวอย่าง
    ภาพ 3 : ภาพจากโค้ดหนึ่ง เป็นภาพที่ปรับแต่งความคมชัดของภาพ DICOM ตัวอย่าง
    ภาพ 4 : ภาพจากโค้ดสอง เป็นภาพเหมือนตัวอย่าง สามารถปรับขนาดรูปด้านกว้างด้านยาว
  3. AVI, MPG

    matlabมีระบบที่สนับสนุนการเปิดไฟล์วิดีโอ ทำให้สามารถเปิดได้หลายนามสกุล เช่น avi mp4 mov เป็นต้น จึงอยู่ที่ลูกเล่นในเรื่องimage processing ในที่นี้ใส่การกำหนดเฟรมภาพที่ต้องการถ่ายภาพออกมา เพื่อให้ได้ภาพที่ผู้ใช้ต้องการ

    ภาพ 5 : เปิดไฟล์วิดีโอนามสกุลmpg เป็นวิดีโอตัวอย่างในmatlab
    ภาพ 6 : เปิดไฟล์วิดีโอนามสกุลavi เป็นวิดีโอตัวอย่าง
  4. WEBCAM

    ทำการสั่งเปิดกล้องของคอมพิวเตอร์ โดยจะมี 3 แบบ 1) สั่งเปิดกล้องธรรมดา เหมือนกดโปรแกรมกล้องตามปกติ 2) เมื่อเปิดกล้องจะทำการถ่ายรูปทันที โดยจะแสดงเป็นภาพที่ถ่ายให้เห็น 3) สั่งเปิดกล้อง โดยจะแทรก image processing เป็นการตรวจจับการเคลื่อนไหวทั้งหมด ในขอบเขตที่กล้องเห็น

    ภาพ 7 : เปิดกล้อง webcam เพื่ออัดภาพวิดีโอ
    ภาพ 8 : แสดงผ่าน webcam และตรวจจับตำแหน่งเคลื่อนไหวเป็นสีแดง
    ภาพ 9 : เมื่อเจอสีโทนแดง จะแสดงสีตรงข้าม(สีน้ำเงิน)

Discussion

ผลจาการศึกษาเกี่ยวกับนำไฟล์ภาพที่ใช้ในด้านวิทยาศาตร์การแพทย์ และสามารถนำไปพัฒนา software ให้มีประสิทธิภาพซึ่ง ในการทำรายงานครั้งนี้จะเป็นวิธีการใช้เบื้องต้นสำหรับการนำภาพและวิดีโอไปใช้ ความรู้ที่ได้จะเป็นประโยชน์สำหรับการอ่านโค้ดเบื้องต้นสำหรับนักพัฒนาด้าน image processing เพื่อให้ภาพและวิดีโอมีความละเอียดสำหรับผู้ใช้งาน สำหรับผู้เขียนได้ใช้ MATLAB ในการใช้งานสำหรับการทดลองนี้ ซึ่งมีทั้งข้อดึและข้อเสียสำหรับการใช้งาน ถ้าเราสามารถนำไปประยุกต์กับโปรแกรมอื่น เช่น Python JAVAเป็นต้น เพื่อให้เหมาะสมและพัฒนา user interface ให้ง่ายต่อการใช้งานในอนาคต


Conclusion and Future Study

ในหัวข้อที่ได้ทำการศึกษาในครั้งนี้คือ การนำเข้าภาพ DICOM, ไฟล์ .lsm, video และ การบันทึกวิดีโอจาก webcam เพื่อให้ทราบข้อแตกต่างของข้อมูลที่เก็บอยู่ในไฟล์แต่ละประเภท และสามารถทำ image processing กับไฟล์แต่ละประเภท เพื่อให้ได้ข้อมูลภาพทางการแพทย์ที่มีความเหมาะสมต่อการใช้งาน

จากหัวข้อที่ได้ศึกษานั้นสามารถนำไปพัฒนาต่อยอดได้ทั้งในทาง Biomedical หรือทางอื่นๆ เช่น การพัฒนาซอฟท์แวร์ทางการแพทย์ โดยนำภาพ CR หรือภาพ CT scan มาทำ image processing เพื่อตรวจหามะเร็งหรือเนื้อร้ายต่างๆ หรือการทำ Real-time motion analysis ให้กับคนไข้ ซึ่งจะเป็นประโยชน์ต่อการทำงานของบุคลากรทางการแพทย์


Q&A

Question 1:
จะสามารถนำการใช้ Webcam มาใช้ในทาง Biomedical อย่างไร
Answer:
โดยการนำวิดีโอที่บันทึกมาทำการประมวลผล เช่น การทำ Motion tracking ของคนไข้ แบบ real-time

Question 2:
หลักการเลือกใช้ webcam
Answer:
ควรเลือกใช้ให้เหมาะสมกับประเภทงานที่จะใช้ โดยอาจดูจาก fps(frame per second) หรือราคา โดยทั่วๆไป กล้อง webcam จะมี fps = 30 โดยหากเป็นงานที่จะต้องจับภาพการเคลื่อนไหวที่ไม่เร็วมากนักก็สามารถใช้ได้ แต่หากใช้กับงานที่ต้องจับภาพที่มีการเคลื่อนไหวที่รวดเร็วนั้น อาจจะต้องใช้กล้อง high speed camera

Question 3:
ปรับ contrast ของภาพ DICOM ทำอย่างไร แล้วมีวิธีการอย่างไร?
Answer:
การปรับ contrast ของภาพ DICOM สามารถทำได้โดยใช้คำสั่ง ‘imcontrast’ ในโปรแกรม matlab จากนั้นโปรแกรมจะแสดงผลดังรูป
รูปที่ 9 แถบหน้าต่างก่อนการปรับ contrast
รูปที่ 10 แถบหน้าต่างหลังการปรับ contrast
รูปที่ 11 ภาพ DICOM ก่อนการปรับ contrast
รูปที่ 12 ภาพ DICOM หลังการปรับ contrast