สารบัญ:
- ขั้นตอนที่ 1: เริ่มต้นส่วนต่อประสานกราฟิกกับผู้ใช้ (GUI)
- ขั้นตอนที่ 2: การโหลดและอ่านภาพ MRI ใน MATLAB
- ขั้นตอนที่ 3: การกรองภาพ
- ขั้นตอนที่ 4: การแยกเนื้องอกผ่านหน้ากากรูปไข่
- ขั้นตอนที่ 5: โครงร่างเนื้องอก
- ขั้นตอนที่ 6: การวิเคราะห์คุณสมบัติทางกายภาพของเนื้องอก
วีดีโอ: การตรวจ MRI เนื้องอกในสมองโดยใช้ Matlab: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
โดย: Madhumita Kannan, Henry Nguyen, Ashley Urrutia Avila, Mei Jin
รหัส MATLAB นี้เป็นโปรแกรมที่ใช้ตรวจหาขนาด รูปร่าง และตำแหน่งของเนื้องอกที่พบในการสแกน MRI ในสมองของผู้ป่วย โปรแกรมนี้ออกแบบมาเพื่อทำงานร่วมกับการตรวจหาเนื้องอกในการสแกนด้วย MRI ของสมองในขั้นต้น แต่ยังสามารถใช้สำหรับการวินิจฉัยโรคมะเร็งในการสแกนอวัยวะอื่นๆ ได้เช่นกัน
ขั้นแรก คำแนะนำต่อไปนี้จะอธิบายวิธีการวิเคราะห์ภาพผ่านการกรองและทำความสะอาดการสแกน MRI ผ่านการแบ่งไบนารี การกรองค่ามัธยฐาน และหน้าต่างบานเลื่อน ต่อไป จะสอนวิธีแยกเนื้องอกโดยใช้หน้ากากรูปไข่ที่สร้างไว้ล่วงหน้า และกรองเพิ่มเติมเพื่อร่างเส้นรอบวงของรูปร่างของเนื้องอก
เมื่อตรวจพบเนื้องอกแล้ว คำแนะนำจะอธิบายเพิ่มเติมถึงวิธีการรวมโปรแกรมนี้เข้ากับอินเทอร์เฟซผู้ใช้แบบกราฟิก (GUI) ตลอดคำแนะนำเหล่านี้ จะมีการแนบโค้ดและไฟล์ที่เหมาะสมเพื่อช่วยอธิบายว่าการวิเคราะห์การสแกนด้วย MRI นี้ทำงานอย่างไร
สิ่งที่ควรทราบ ดาวน์โหลด และเตรียมให้พร้อมก่อนที่คุณจะดำเนินการตามคำแนะนำนี้:1. ตรวจสอบให้แน่ใจว่าได้ดาวน์โหลด MATLAB เวอร์ชันล่าสุดแล้ว คุณสามารถติดตั้ง R2018b ได้ที่นี่:
2. ในการเรียกใช้โปรแกรมนี้ คุณต้องมีสิทธิ์เข้าถึงไฟล์สแกนสมองด้วย MRI แม้ว่าบางภาพจะพบได้เสมอจากรูปภาพของ Google แต่การวิเคราะห์อย่างละเอียดและแม่นยำสามารถทำได้จากภาพที่เหมาะสมของการสแกนสมองหลายชั้นสำหรับผู้ป่วยแต่ละราย คุณสามารถเข้าถึงไฟล์สำหรับผู้ป่วย 20 รายที่มี glioblastoma ก่อนและหลังการรักษาได้จากฐานข้อมูลนี้:
3. จุดเน้นของโปรแกรมนี้และวิธีการต่าง ๆ ที่เป็นแนวทางในโครงการนี้มีโครงร่างอยู่ในเอกสารการวิจัยนี้:
ขั้นตอนที่ 1: เริ่มต้นส่วนต่อประสานกราฟิกกับผู้ใช้ (GUI)
ขั้นตอนแรกคือการสร้างและเริ่มต้นส่วนต่อประสานกราฟิกกับผู้ใช้ GUI สามารถทำได้โดยพิมพ์ guide ในหน้าต่างคำสั่ง กด Enter และสร้าง GUI ใหม่ เมื่อขั้นตอนนี้เสร็จสิ้น คุณจะสามารถเริ่มสร้างฟังก์ชันต่างๆ เช่น แกน ข้อความคงที่ แก้ไขข้อความ และปุ่มกดที่จะแสดงขึ้นเมื่อโปรแกรมทำงานและผู้ใช้สามารถโต้ตอบได้ ฟังก์ชันเหล่านี้สามารถแก้ไขได้และจัดการผ่านตัวตรวจสอบคุณสมบัติ อย่างไรก็ตาม คุณลักษณะที่สำคัญที่สุดที่ต้องเปลี่ยนแปลงเมื่อสร้างฟังก์ชันเหล่านี้คือชื่อแท็ก สิ่งสำคัญคือต้องเปลี่ยนชื่อแท็กของแต่ละฟังก์ชันที่มีการใช้งาน เนื่องจากจะทำให้เราสร้างฟังก์ชันเรียกกลับที่แยกความแตกต่างได้ เมื่อคุณพอใจกับเลย์เอาต์ของ GUI แล้ว คุณสามารถไปยังการโหลดไฟล์ DICOM ที่จะแสดงภายใน GUI
ขั้นตอนที่ 2: การโหลดและอ่านภาพ MRI ใน MATLAB
ในการโหลดไฟล์ DICOM คุณจะต้องเริ่มต้นฟังก์ชันการโทรกลับอย่างถูกต้องซึ่งจะดำเนินการเมื่อกดปุ่ม "โหลดภาพ MRI" เมื่อเสร็จสิ้น คุณต้องสร้างตัวแปรส่วนกลางที่จะแสดงภาพบนแกนจัดการที่คุณต้องการให้แสดงภาพ MRI ดั้งเดิม ภาพสแกน MRI ที่ดาวน์โหลดจากฐานข้อมูลเป็นไฟล์รูปแบบ DICOM ทั้งหมดที่ต้องโหลดลงในไดเร็กทอรี MATLAB ของคุณ ค้นหาไฟล์โดยใช้ imgetfile เพื่อโหลดลงในโปรแกรม ภาพจะถูกอ่านโดยใช้ฟังก์ชัน 'dicomread' ของ MATLAB ที่สร้างขึ้น และภาพดิบแรกสำหรับแต่ละไฟล์จะถูกฝังลงในแกน GUI ด้านซ้ายโดยใช้ imshow
ฟังก์ชัน 'dicominfo' ของ MATLAB ในตัวยังมีประโยชน์อย่างมากในการจัดการกับข้อมูลทั้งหมดของไฟล์ดิคอม MRI แต่ละไฟล์ เราใช้ฟังก์ชันนี้เพื่อดึงข้อมูลทั้งหมดของผู้ป่วย เช่น เพศ อายุ น้ำหนัก และส่วนสูง ฟังก์ชันนี้ยังให้ลำดับสแต็กแก่คุณซึ่งเป็นประโยชน์สำหรับการนำโปรแกรมไปใช้ในส่วนติดต่อผู้ใช้แบบกราฟิก เราได้สร้างตัวแปรสำหรับข้อมูลเชิงพรรณนาของผู้ป่วยแต่ละราย ซึ่งจะถูกใช้สำหรับ GUI เมื่อกดปุ่มตรวจจับ
ขั้นตอนที่ 3: การกรองภาพ
เมื่อโหลดและอ่านไฟล์ DICOM ของภาพดิบแล้ว รูปภาพจะต้องแปลงจากระดับสีเทาให้อยู่ในรูปแบบไบนารีที่ประกอบด้วยพิกเซลขาวดำเท่านั้น เราใช้ฟังก์ชัน 'imbinarize' เพื่อสร้างภาพไบนารีจากภาพดิบโดย ลักษณะการควบคุมของการกำหนดเกณฑ์แบบปรับได้ที่ค่าความไว 0.59 ปัจจัยความไวตามเกณฑ์เริ่มต้นคือ 0.5 ต่ำและไม่สามารถตรวจจับจุดสีและจุดสว่างจากภาพได้ เราจึงเพิ่มเป็น 0.59
ภาพไบนารีจะถูกประมวลผลผ่านตัวกรองค่ามัธยฐานโดยใช้ฟังก์ชัน 'medfilt2' เนื่องจากภาพไบนารีเป็นแบบสองมิติ เราตั้งค่าพิกเซลเอาต์พุตแต่ละพิกเซลให้มีค่ามัธยฐานในย่าน 5 x 5 รอบพิกเซลที่เกี่ยวข้องในภาพไบนารีอินพุต วิธีนี้ช่วยลดสัญญาณรบกวนและรักษาขอบให้เป็นสี่เหลี่ยมจัตุรัสขนาด 5 x 5 รอบแต่ละพิกเซล ต่อไป เราใช้หน้าต่างบานเลื่อนโดยใช้ 'strel' เพื่อสร้างองค์ประกอบโครงสร้างแบบแบนที่มีรูปทรงดิสก์ซึ่งมีรัศมีย่านใกล้เคียง 2 เพื่อระบุพิกเซลศูนย์กลางแต่ละจุดกำเนิดในแต่ละพื้นที่ใกล้เคียงของดิสก์ เราใช้องค์ประกอบการจัดโครงสร้างดิสก์เพราะเรากำลังวิเคราะห์จุดวงกลมแต่ละจุดและพิกเซลภายในแต่ละจุด ดังนั้นองค์ประกอบรูปร่างของดิสก์จึงมีประโยชน์มากกว่า
เมื่อภาพได้รับการกรองแล้ว ก็สามารถทำความสะอาดได้โดยใช้ฟังก์ชัน "ปิด" เพื่อลบจุดสีดำระหว่างพิกเซลสีขาวที่กรองแล้วในภาพ และปิดช่องว่างทั้งหมดรอบๆ รูปภาพที่ประมวลผลอย่างสมบูรณ์แล้วสามารถลงจุดในแผนผังย่อยที่สองของตัวเลขที่จัดสรรไว้ล่วงหน้า ทำให้สามารถเปรียบเทียบระหว่างภาพดิบและภาพที่กรองแล้ว
ขั้นตอนที่ 4: การแยกเนื้องอกผ่านหน้ากากรูปไข่
จากนั้นจึงแยกจุดสว่างของเนื้องอกออกจากภาพที่กรองหลักผ่านหน้ากากรูปไข่ที่สร้างไว้ล่วงหน้า ในการสร้างมาสก์นี้ คุณควรทราบขนาดของภาพสแกน MRI ดิบต้นฉบับ และใช้ความยาวของแถวและคอลัมน์เป็นพิกัด x และ y ตามลำดับ จัดสรรพิกัดศูนย์กลางสำหรับวงรี เราตั้งค่าแกน y เป็นแกนหลักที่มีรัศมี 50 หน่วยจากจุดศูนย์กลาง และแกนรองที่มีรัศมี 40 หน่วยจากจุดศูนย์กลาง
เราใช้ฟังก์ชัน MATLAB 'meshgrid' เพื่อสร้างระนาบคาร์ทีเซียนที่มีพิกัดกริดสองมิติตามพิกัดที่มีอยู่ในเวกเตอร์ตั้งแต่ 1 ถึงความยาวของแกน x และจาก 1 ถึงความยาวของแกน y ของภาพ. Col คือเมทริกซ์ที่แต่ละแถวเป็นสำเนาของแกน x และ Row คือเมทริกซ์ที่แต่ละคอลัมน์เป็นสำเนาของแกน y ตารางคาร์ทีเซียนที่แสดงโดยพิกัด Col และ Row มีความยาว (1:Y_Size) แถวและความยาว (1:X_Size) คอลัมน์ ใช้ดัชนี Col และ Row ที่สร้างโดยตารางคาร์ทีเซียนเพื่อกำหนดสมการของวงรีขึ้นอยู่กับรัศมีที่กำหนดไว้ล่วงหน้าและพิกัดศูนย์กลาง โครงร่างวงรีสามารถเติมด้วยพิกเซลสีขาวที่พบในจุดเนื้องอกได้แล้ว
การใช้มาสก์รูปไข่ที่สร้างไว้ล่วงหน้า เราสามารถครอบตัดเนื้องอกเฉพาะที่คุณต้องการวิเคราะห์จากภาพที่กรองแล้ว มาสก์รูปวงรีจะตรวจจับจุดที่เหมาะสมภายในโครงร่างของวงรี และยอมรับว่าเป็นจุดบนภาพที่กรองเพื่อให้ยอมรับได้ว่าเป็นเนื้องอก ฟังก์ชัน 'bwareafilt' จะกรองวัตถุอื่นๆ ทั้งหมดที่อยู่นอกเนื้องอกที่ตรวจพบออกจากรูปภาพ เราใช้หน้าต่างเฉพาะขนาด 500 x 4000 ตามขนาดของภาพทั้งหมด จากนั้นเราใช้หน้าต่างบานเลื่อนอื่นที่มี 'strel' เป็นองค์ประกอบโครงสร้างรูปทรงดิสก์แบนที่มีรัศมีใกล้เคียงมากกว่า 6 เพื่อปิดช่องว่างระหว่างแต่ละพิกเซลสีขาวตรงกลางภายในเนื้องอกที่ตรวจพบ จุดเนื้องอกที่ตรวจพบจะถูกทำความสะอาดเพิ่มเติมโดยใช้ 'imclose' เพื่อกำจัดพิกเซลสีดำเพิ่มเติมและเติมหลุมทั้งหมดด้วย 'imfill' เนื้องอกที่ผ่านการประมวลผลนี้สามารถแสดงในแผนย่อยที่สามในแผนภาพที่จัดสรรล่วงหน้าเพื่อให้การเปรียบเทียบระหว่างเนื้องอกที่แยกได้กับภาพต้นฉบับและภาพที่กรองแล้วของการสแกนด้วย MRI
ขั้นตอนที่ 5: โครงร่างเนื้องอก
เมื่อแยกเนื้องอกออกจากหน้ากากแล้ว ก็สามารถร่างโครงร่างและแสดงบนภาพต้นฉบับเพื่อแสดงตำแหน่งที่แน่นอนได้ ในการทำเช่นนี้ เราใช้ฟังก์ชัน 'bwboundaries' เพื่อติดตามเนื้องอกที่ตรวจพบก่อนหน้านี้ด้วยโครงร่าง เราระบุโครงร่างเพื่อไม่รวมรูภายในวัตถุเนื้องอกตามที่ร่างไว้ สามารถพล็อตลงบนภาพต้นฉบับที่เป็นภาพดิบได้ โดยใช้วง 'for' ที่วาดโครงร่างรอบๆ เนื้องอกโดยใช้ดัชนีของเส้นที่มีความกว้าง 1.5 พิกเซล จากนั้นโครงร่างนี้จะถูกพล็อตลงบนภาพดิบ โดยแสดงขนาดและตำแหน่งของเนื้องอกที่แน่นอน สัมพันธ์กับการสแกน MRI ดั้งเดิม
ขั้นตอนที่ 6: การวิเคราะห์คุณสมบัติทางกายภาพของเนื้องอก
จุดที่แยกออกมาและระบุไว้สามารถให้ข้อมูลที่เป็นประโยชน์เกี่ยวกับขนาด พื้นที่ และตำแหน่งของเนื้องอก เราใช้ฟังก์ชัน 'regionprops' เพื่อตรวจหาคุณสมบัติของเนื้องอกที่เกี่ยวข้องกับพื้นที่ ปริมณฑล เซนทรอยด์ และค่าดัชนีพิกเซล ค่าดัชนีพิกเซลนี้ทำให้เรามีหน่วยโลกแห่งความเป็นจริงสำหรับแต่ละพิกเซลของแต่ละภาพ เฉพาะสำหรับการสแกนแต่ละครั้ง คุณสมบัติเหล่านี้สามารถแปลงเป็นหน่วยมิลลิเมตรในโลกแห่งความเป็นจริงได้ ข้อมูลเชิงประจักษ์ที่โปรแกรมให้เรานั้นไม่ซ้ำกันสำหรับการสแกน MRI แต่ละครั้ง และมีประโยชน์อย่างมากในการกำหนดขนาด ตำแหน่ง และประเภทของเนื้องอก ที่ผู้ใช้สามารถวิเคราะห์และรวมเข้ากับส่วนต่อประสานกราฟิกกับผู้ใช้
แนะนำ:
การแบ่งส่วน MatLab Lung: 5 ขั้นตอน
การแบ่งส่วน MatLab Lung: โดย: Phuc Lam, Paul Yeung, Eric Reyes ------------------------------ ------------------------------------- การยอมรับว่าข้อผิดพลาดในการแบ่งส่วนปอดจะทำให้เกิดข้อมูลเท็จเกี่ยวกับการระบุตัวตน ของพื้นที่โรคและสามารถ
MATLAB การตรวจจับใบหน้าอย่างง่าย: 4 ขั้นตอน
MATLAB Easy Face Detection: จุดประสงค์หลักของคำแนะนำนี้คือเพื่อแสดงให้เห็นว่าการประมวลผลภาพจะง่ายเพียงใด ด้วยความช่วยเหลือของ MATLABFace การตรวจจับและติดตามเป็นสาขาการวิจัยที่สำคัญและกระตือรือร้น นั่นคือเหตุผลที่ฉันจะอธิบาย จะทำได้อย่างไร
วิธีเขียนโค้ดและเผยแพร่ Matlab 2016b เป็น Word (คู่มือสำหรับผู้เริ่มต้น): 4 ขั้นตอน
How to Code and Publish Matlab 2016b to Word (Beginners Guide): Matlab เป็นโปรแกรมภาษาประสิทธิภาพสูงที่ใช้ในการคำนวณผลลัพธ์ทางเทคนิค มีความสามารถในการรวมภาพ การคำนวณ และการเขียนโปรแกรมในลักษณะที่เป็นมิตรต่อผู้ใช้ ด้วยโปรแกรมนี้ ผู้ใช้สามารถเผยแพร่ปัญหาและแนวทางแก้ไข
การควบคุม Raspberry Pi โดยใช้ Matlab: 5 ขั้นตอน
การควบคุม Raspberry Pi โดยใช้ Matlab: เฮ้ บทช่วยสอนนี้เกี่ยวกับการควบคุม Raspberry Pi ที่ไม่มีหัวของคุณโดยใช้ Matlab คุณอาจต้องติดตั้ง matlab เป็นเวอร์ชันล่าสุดเพื่อรองรับบอร์ด raspberry pi ที่ใหม่กว่า
ROS Robotic Controller ที่ใช้ Matlab: 9 ขั้นตอน
ROS Robotic Controller ที่ใช้ Matlab: ตั้งแต่ฉันยังเป็นเด็ก ฉันใฝ่ฝันที่จะเป็น Iron Man และยังคงทำเช่นนั้น Iron Man เป็นหนึ่งในตัวละครเหล่านั้นซึ่งเป็นไปได้อย่างสมจริง และเพียงแค่ทำให้ฉันปรารถนาที่จะเป็น Iron Man สักวันหนึ่ง แม้ว่าผู้คนจะหัวเราะเยาะฉันหรือบอกว่ามันเป็นไปไม่ได้