สารบัญ:

การวินิจฉัยอัตโนมัติของจอประสาทตาเบาหวานผ่าน MATLAB: 33 ขั้นตอน
การวินิจฉัยอัตโนมัติของจอประสาทตาเบาหวานผ่าน MATLAB: 33 ขั้นตอน

วีดีโอ: การวินิจฉัยอัตโนมัติของจอประสาทตาเบาหวานผ่าน MATLAB: 33 ขั้นตอน

วีดีโอ: การวินิจฉัยอัตโนมัติของจอประสาทตาเบาหวานผ่าน MATLAB: 33 ขั้นตอน
วีดีโอ: ภาวะเบาหวานขึ้นจอประสาทตา : พบหมอรามา ช่วง Big Story 5 ม.ค.60 (2/5) 2024, พฤศจิกายน
Anonim
การวินิจฉัยภาวะเบาหวานขึ้นจอตาแบบอัตโนมัติผ่าน MATLAB
การวินิจฉัยภาวะเบาหวานขึ้นจอตาแบบอัตโนมัติผ่าน MATLAB
การวินิจฉัยภาวะเบาหวานขึ้นจอตาแบบอัตโนมัติผ่าน MATLAB
การวินิจฉัยภาวะเบาหวานขึ้นจอตาแบบอัตโนมัติผ่าน MATLAB

(ดูโครงร่างโค้ดด้านบน)

เบาหวานขึ้นจอตาเป็นโรคตาที่เกี่ยวข้องกับโรคเบาหวานที่เกิดจากระดับน้ำตาลในเลือดสูง ระดับน้ำตาลในเลือดสูงทำให้หลอดเลือดในเรตินาบวม ซึ่งทำให้หลอดเลือดขยายใหญ่ขึ้นและแม้กระทั่งเส้นเลือดรั่ว ซึ่งนำไปสู่จุดด่างดำในภาพม่านตา ด้วยรหัสนี้ เราตั้งเป้าที่จะใช้การปรากฏตัวของจุดรั่วของหลอดเลือดเป็นตัวบ่งชี้ของภาวะเบาหวานขึ้นจอตาในพื้นหลัง แม้ว่าจะต้องใช้เทคนิคการวินิจฉัยเพิ่มเติมในโลกแห่งความเป็นจริง เป้าหมายของรหัสนี้คือการทำให้การประมวลผลภาพอัตโนมัติและวินิจฉัยภาพจอประสาทตาเพื่อระบุสัญญาณของภาวะเบาหวานขึ้นจอตาที่แสดงผ่านจุดมืดในภาพม่านตา

ภาพจอตาปกติ 10 ภาพและภาพจอตาที่ได้รับการวินิจฉัย 10 ภาพได้รับการประมวลผลผ่านโค้ดที่อ่านและกรองภาพก่อน จากนั้นจึงหาปริมาณจุดมืดเพื่อพิจารณาว่ามีอาการแสดงของจอประสาทตาจากเบาหวานหรือไม่ โดยอิงตามเกณฑ์ที่กำหนด ผลลัพธ์จะถูกพิมพ์ลงบนหน้าต่างคำสั่งสำหรับการตีความของผู้ดู

ขั้นตอนที่ 1: ข้อกำหนดเบื้องต้น

ข้อกำหนดเบื้องต้น
ข้อกำหนดเบื้องต้น

1. ตรวจสอบให้แน่ใจว่าคุณได้ดาวน์โหลดโปรแกรม MATLAB บนคอมพิวเตอร์ของคุณแล้ว

2. ดาวน์โหลดไฟล์ txt ที่พบในลิงค์ (กด 'ctrl+s' เพื่อบันทึกลงในไดเร็กทอรีเดียวกันกับรหัส MATLAB)

ขั้นตอนที่ 2: ข้อกำหนดเบื้องต้น (ต่อ)

ข้อกำหนดเบื้องต้น (ต่อ)
ข้อกำหนดเบื้องต้น (ต่อ)
ข้อกำหนดเบื้องต้น (ต่อ)
ข้อกำหนดเบื้องต้น (ต่อ)

4. เปิด MATLAB และพิมพ์ 'uiimport' ลงในหน้าต่างคำสั่ง

5. เลือกไฟล์ officialdiagnoses.txt และนำเข้าสู่ MATLAB เป็นเมทริกซ์เซลล์

6. ตรวจสอบให้แน่ใจว่าคุณเห็น "officialdiagnoses" เป็นตัวแปรในพื้นที่ทำงาน

ขั้นตอนที่ 3: ข้อกำหนดเบื้องต้น (ต่อ)

ข้อกำหนดเบื้องต้น (ต่อ)
ข้อกำหนดเบื้องต้น (ต่อ)

7. ดาวน์โหลดฟังก์ชัน ModWald.m ซึ่งสามารถรับได้จากโค้ดด้านบนหรือดาวน์โหลดจาก Canvas

(รหัสให้โดยศาสตราจารย์คิงและศาสตราจารย์ชอย)

ขั้นตอนที่ 4: ข้อกำหนดเบื้องต้น (ต่อ)

ข้อกำหนดเบื้องต้น (ต่อ)
ข้อกำหนดเบื้องต้น (ต่อ)

8. ดาวน์โหลด 400 ภาพดิบจากส่วนข้อมูลของโครงการ The STARE

ขั้นตอนที่ 5: ล้าง Matlab เพื่อเตรียมการรันโค้ด

ทำความสะอาด Matlab เพื่อเตรียมการรันโค้ด
ทำความสะอาด Matlab เพื่อเตรียมการรันโค้ด

เพิ่มในรหัส:

1. ปิดทั้งหมด (ปิดรูปภาพที่เปิดไว้ก่อนหน้านี้ทั้งหมด)

2. clearvars - ยกเว้น officialdiagnoses (ล้างตัวแปรทั้งหมดยกเว้นไฟล์ txt ที่วินิจฉัยก่อนหน้านี้ที่นำเข้ามาก่อนหน้านี้)

3. cclc (ล้างหน้าต่างคำสั่ง)

ขั้นตอนที่ 6: เลือกภาพตาปกติ 10 ภาพและภาพที่มีอาการจอประสาทตาจากเบาหวาน 10 ภาพ

เลือกภาพตาปกติ 10 ภาพและภาพที่มีอาการเบาหวานขึ้นจอตา 10 ภาพ
เลือกภาพตาปกติ 10 ภาพและภาพที่มีอาการเบาหวานขึ้นจอตา 10 ภาพ
เลือกภาพตาปกติ 10 ภาพและภาพที่มีอาการเบาหวานขึ้นจอตา 10 ภาพ
เลือกภาพตาปกติ 10 ภาพและภาพที่มีอาการเบาหวานขึ้นจอตา 10 ภาพ

1. นำไฟล์ข้อความการวิเคราะห์และแยกชื่อรูปภาพ ชื่อเหล่านี้อยู่ในคอลัมน์แรกของไฟล์ข้อความ ดังนั้นให้พิมพ์ 'officialdiagnoses(:, 1)' เมทริกซ์ของชื่อรูปภาพถูกกำหนดให้กับตัวแปร “all_image_numbers”

2. แปลงตัวแปร all_image_numbers จากอาร์เรย์เซลล์เป็นอาร์เรย์เมทริกซ์โดยใช้ฟังก์ชัน cell2mat

ขั้นตอนที่ 7: เลือกภาพตาปกติ 10 ภาพและภาพที่มีอาการเบาหวานขึ้นจอตา 10 ภาพ (ต่อ)

เลือกภาพตาปกติ 10 ภาพและภาพที่มีอาการเบาหวานขึ้นจอตา 10 ภาพ (ต่อ)
เลือกภาพตาปกติ 10 ภาพและภาพที่มีอาการเบาหวานขึ้นจอตา 10 ภาพ (ต่อ)
เลือกภาพตาปกติ 10 ภาพและภาพที่มีอาการเบาหวานขึ้นจอตา 10 ภาพ (ต่อ)
เลือกภาพตาปกติ 10 ภาพและภาพที่มีอาการเบาหวานขึ้นจอตา 10 ภาพ (ต่อ)

3. เลือกภาพตาปกติ 10 ภาพเพื่อเรียกใช้โค้ด ภาพที่เลือกในกรณีนี้คือ 278, 199, 241, 235, 35, 77, 82, 164, 239, 170.

วางตัวเลขเหล่านี้ในเมทริกซ์และกำหนดให้กับตัวแปรที่จะเรียกเมื่อโหลดภาพ

4. ทำซ้ำขั้นตอนที่ 3 สำหรับภาพจอประสาทตาที่ได้รับการวินิจฉัยว่าเป็นเบาหวานขึ้นจอตา ภาพที่เลือกในกรณีนี้คือ 139, 137, 136, 135, 133, 140, 141, 116, 157, 188

ขั้นตอนที่ 8: สร้าง 2 ตัวแปร (ปกติและวินิจฉัยแล้ว) และตั้งค่าให้แต่ละตัวแปรเท่ากับ0

สร้าง 2 ตัวแปร (ปกติและวินิจฉัยแล้ว) และตั้งค่าให้แต่ละตัวแปรเท่ากับ0
สร้าง 2 ตัวแปร (ปกติและวินิจฉัยแล้ว) และตั้งค่าให้แต่ละตัวแปรเท่ากับ0

สร้างตัวแปรเหล่านี้ก่อน for ลูปเพื่อเริ่มต้นหมายเลขลูป

ขั้นตอนที่ 9: สร้างการวนซ้ำเพื่ออัปโหลดรูปภาพปกติโดยอัตโนมัติ

สร้าง for Loop เพื่ออัปโหลดรูปภาพปกติโดยอัตโนมัติ
สร้าง for Loop เพื่ออัปโหลดรูปภาพปกติโดยอัตโนมัติ

1. สร้าง for ลูป

2. ตั้งค่าตัวแปรการนับ (i ในกรณีนี้) เป็นเมทริกซ์ของค่า 1-10 ตัวแปรการนับนี้จะใช้ในการเรียกแต่ละภาพแยกกัน

3. ใช้องค์ประกอบ i ในเมทริกซ์ของรูปภาพเพื่อแยกและแปลงชื่อรูปภาพจากสตริงเป็นตัวเลขโดยใช้ฟังก์ชัน num2str

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

ขั้นตอนที่ 10: สร้าง for Loop เพื่ออัปโหลดรูปภาพปกติโดยอัตโนมัติ (ต่อ)

สร้าง for Loop เพื่ออัปโหลดรูปภาพปกติโดยอัตโนมัติ (ต่อ)
สร้าง for Loop เพื่ออัปโหลดรูปภาพปกติโดยอัตโนมัติ (ต่อ)

3. สร้างคำสั่ง if ที่มีความเป็นไปได้ทั้งสามอย่างจากขั้นตอนก่อนหน้า หากชื่อภาพมี 1 หลัก ภาพจะเรียกว่า "im000" ถ้ามี 2 หลัก ภาพจะเรียกว่า "im00" และหากมี 3 ภาพจะเรียกว่า "im0"

4. ภายใต้แต่ละคำสั่ง if กำหนดตัวแปรให้ imread "im" ภายใต้ที่สอดคล้องกัน ถ้าคำสั่งที่มีจำนวนศูนย์ที่เหมาะสม (ตามที่อธิบายไว้ข้างต้น) ตามด้วย i

ขั้นตอนที่ 11: ตัดขอบของรูปภาพ

ตัดขอบของภาพ
ตัดขอบของภาพ

ถ่ายภาพต้นฉบับและใช้ฟิลเตอร์แบบอิมครอปเพื่อขจัดขอบสีดำและกำหนดให้กับตัวแปร I_crop สี่เหลี่ยมครอบตัดถูกระบุโดยใช้เมทริกซ์ [95, 95, 500, 410]

ขั้นตอนที่ 12: สร้างภาพระดับสีเทา

สร้างภาพระดับสีเทา
สร้างภาพระดับสีเทา

ถ่ายภาพที่ครอบตัดแล้วใช้ตัวกรอง rbg2gray เพื่อเปลี่ยนภาพเป็นระดับสีเทา กำหนดรูปภาพนี้ให้กับตัวแปร I2

ขั้นตอนที่ 13: สร้างภาพที่ตัดกัน

สร้างภาพที่ตัดกัน
สร้างภาพที่ตัดกัน

ถ่ายภาพ I2 และใช้ imadjust เพื่อปรับขนาดค่าความเข้ม

นำค่าที่อยู่ในช่วง [0.2, 0.7] และปรับขนาดใหม่เป็น [0, 1] แกมมาถูกตั้งค่าเป็น 0.8 เพื่อทำให้ภาพสว่างขึ้น กำหนดรูปภาพใหม่ให้กับ I_adjusted

ขั้นตอนที่ 14: เพิ่มความคมชัดของภาพ

เพิ่มความคมชัดของภาพ
เพิ่มความคมชัดของภาพ

ถ่ายภาพ I_adjusted และใช้ฟังก์ชัน adapthisteq เพื่อเพิ่มคอนทราสต์

ไวยากรณ์ Adapthisteq ต้องการชื่อรูปภาพ, I_adjusted, 'numTiles', ขนาดของ numTiles, 'nBins' และจำนวนถังขยะ ขนาดของ numTiles ถูกตั้งค่าเป็น [8 8] โดยแบ่งรูปภาพออกเป็นไทล์ 8x8 และจำนวนถังขยะตั้งไว้ที่ 28 กำหนดรูปภาพให้กับ I_constrast

ขั้นตอนที่ 15: สร้างตัวกรองเฉลี่ย

สร้างตัวกรองเฉลี่ย
สร้างตัวกรองเฉลี่ย

สร้างตัวแปรชื่อ 'meanfilt' โดยใช้ฟังก์ชัน fspecial ป้อน 'ฟังก์ชันเฉลี่ย' เพื่อสร้างตัวกรองค่าเฉลี่ยและใส่ [90 90] สำหรับขนาดหน้าต่างบานเลื่อน

ขั้นตอนที่ 16: รวมฟิลเตอร์เฉลี่ยกับรูปภาพที่ตัดกัน

รวมฟิลเตอร์เฉลี่ยเข้ากับภาพที่ตัดกัน
รวมฟิลเตอร์เฉลี่ยเข้ากับภาพที่ตัดกัน

สร้างตัวแปรใหม่ชื่อ mask_mean และใช้ฟังก์ชัน imfilter เพื่อถ่ายภาพ I_contrast และใช้ตัวกรองค่าเฉลี่ยที่สร้างไว้ก่อนหน้านี้

ขั้นตอนที่ 17: สร้าง Mean Mask ใหม่โดยลบ Pixels

สร้างมาสก์ Mean ใหม่โดยการลบพิกเซล
สร้างมาสก์ Mean ใหม่โดยการลบพิกเซล

สร้างตัวแปรชื่อ mask_mean2 และใช้ฟังก์ชัน imsubtract เพื่อลบค่าของแต่ละพิกเซลใน I_contrast จากพิกเซลที่เกี่ยวข้องใน mask_mean

ขั้นตอนที่ 18: สร้างภาพที่กรองแบบไบนารี

สร้างภาพที่กรองไบนารี
สร้างภาพที่กรองไบนารี

เปลี่ยนภาพระดับสีเทาเป็นขาวดำโดยใช้ imbinarize ป้อนข้อมูล mask_mean2, 'adaptive', 'ForegroundPolarity', 'dark', 'Sensitivity', 0.6 กำหนดรูปภาพใหม่นี้ให้กับ mask_binarize

ขั้นตอนที่ 19: ลบ Blobs ที่เล็กกว่าที่พบในรูปภาพที่ถูกกรอง

ลบ Blobs ที่เล็กกว่าที่พบในรูปภาพที่ถูกกรอง
ลบ Blobs ที่เล็กกว่าที่พบในรูปภาพที่ถูกกรอง

ลบอ็อบเจ็กต์ที่มีการเชื่อมต่อน้อยกว่า 100 พิกเซลโดยใช้ฟังก์ชัน bwareaopen บน mask_binarize และตั้งค่าขีดจำกัดเป็น 100 กำหนดตัวแปรเป็น bw

ขั้นตอนที่ 20: สร้างองค์ประกอบโครงสร้างดิสก์

สร้างองค์ประกอบโครงสร้างดิสก์
สร้างองค์ประกอบโครงสร้างดิสก์

สร้างองค์ประกอบโครงสร้างดิสก์ (มีรัศมี 2) โดยใช้ฟังก์ชัน strel กำหนดให้ดู

ขั้นตอนที่ 21: ดำเนินการปิดทางสัณฐานวิทยา

ดำเนินการปิดทางสัณฐานวิทยา
ดำเนินการปิดทางสัณฐานวิทยา

ใช้ bw และใช้ฟังก์ชัน imclose กับองค์ประกอบโครงสร้างเพื่อดำเนินการปิดทางสัณฐานวิทยาบนวัตถุ

ขั้นตอนที่ 22: ค้นหาวัตถุที่มีการเชื่อมต่ออย่างน้อย 8

ค้นหาวัตถุที่มีการเชื่อมต่ออย่างน้อย8
ค้นหาวัตถุที่มีการเชื่อมต่ออย่างน้อย8

ใช้ bw และใช้ bwconncomp เพื่อค้นหาวัตถุที่มีการเชื่อมต่ออย่างน้อย 8 ในภาพ กำหนดเอาต์พุตตัวเลขให้กับ cc_1

ขั้นตอนที่ 23: ค้นหาจำนวนพิกเซลที่เชื่อมต่อสูงสุด

ค้นหาจำนวนพิกเซลที่เชื่อมต่อสูงสุด
ค้นหาจำนวนพิกเซลที่เชื่อมต่อสูงสุด
ค้นหาจำนวนพิกเซลที่เชื่อมต่อสูงสุด
ค้นหาจำนวนพิกเซลที่เชื่อมต่อสูงสุด

ใช้ฟังก์ชัน cellfun เพื่อทำหน้าที่ "numel" ในทุกเซลล์ใน CC ค้นหาจำนวนองค์ประกอบในเซลล์ PixelIdxList กำหนดค่าให้กับ “numPixels”

ค้นหาค่าสูงสุดใน numPIxels กำหนดค่าสูงสุดที่ใหญ่ที่สุดเป็น "ใหญ่ที่สุด" และดัชนีของค่าสูงสุดเป็น "idx"

ขั้นตอนที่ 24: ตั้งค่า Max Pixel เป็น 0 และค้นหา Pixels With >=26 Pixel Connectivity

ลบหลอดเลือดใน Image
ลบหลอดเลือดใน Image
การแสดงรูป
การแสดงรูป
ถอดเรือและนับหยดเลือด
ถอดเรือและนับหยดเลือด
วินิจฉัยภาพเรตินาตามจำนวนลิ่มเลือดที่ระบุ
วินิจฉัยภาพเรตินาตามจำนวนลิ่มเลือดที่ระบุ

ตั้งค่าพิกเซลที่มีค่ามากที่สุดในรูปภาพ "bw" เป็น 0 ทำให้พิกเซลเป็นสีดำ

ค้นหาวัตถุที่มีการเชื่อมต่ออย่างน้อย 26 พิกเซลในภาพโดยใช้ bwconncomp กำหนดให้กับตัวแปร cc_1

ขั้นตอนที่ 25: ลบหลอดเลือดใน Image

นำหลอดเลือดที่ยังคงอยู่ในภาพออกโดยใช้ฟังก์ชัน bwpropfilt ที่มีช่วง [0, 0.9]

[0.9, 1] ถูกยกเว้นเนื่องจากค่าที่ใกล้กับ 1 หมายถึงเส้น กำหนดให้ "RemoveVessels"

ขั้นตอนที่ 26: การแสดงรูป

แสดงภาพที่กรองแล้วในโครงเรื่องย่อย อิมโชว์ ด้วยอินพุต 'เส้นขอบ' และ 'แน่น' จะแสดงแต่ละภาพในโครงสร้างแผนย่อย เพิ่มชื่อให้กับแต่ละภาพเพื่อแยกแยะว่ามีการใช้ตัวกรองใด

ขั้นตอนที่ 27: นำเรือออกและนับหยดเลือด

1. ใช้ “RemoveVessels” และใช้ฟีเจอร์ 'Centroid' ในอุปกรณ์ประกอบฉากเพื่อระบุเซนทรอยด์ของวัตถุในภาพ วัตถุเหล่านี้ควรสอดคล้องกับลิ่มเลือดที่ปรากฏในภาพ

2. นับจำนวนลิ่มเลือดที่ระบุโดยหาความยาวของเซนทรอยด์เมทริกซ์

ขั้นตอนที่ 28: วินิจฉัยภาพจอประสาทตาตามจำนวนลิ่มเลือดที่ระบุ

ใช้คำสั่ง if เพื่อวินิจฉัยภาพตามจำนวนลิ่มเลือดที่ระบุ

หากจำนวนเซนทรอยด์ที่ระบุน้อยกว่าหรือเท่ากับ 5 ภาพจะถูกระบุตามปกติ

หากจำนวนเซนทรอยด์มากกว่า 5 ภาพจะวินิจฉัยว่าเป็นภาวะเบาหวานขึ้นจอตา

ผลลัพธ์จะถูกพิมพ์ลงบนหน้าต่างคำสั่งโดยใช้ fprintf

ขั้นตอนที่ 29: หากมีมากกว่า 5 Blobs…

หากมีมากกว่า 5 Blobs…
หากมีมากกว่า 5 Blobs…

ทำซ้ำคำแนะนำด้านบนสำหรับภาพที่ได้รับการวินิจฉัยว่าเป็นคำสั่งอื่น ส่วนนี้จะรันถ้าจำนวน blobs มากกว่า 5

จบคำสั่ง if

ขั้นตอนที่ 30: ทำซ้ำขั้นตอนการกรองสำหรับรูปภาพปกติด้วยค่าตัวเลขรูปภาพเป็น 2 และ 3

ทำซ้ำขั้นตอนการกรองสำหรับภาพปกติด้วยค่าตัวเลขของภาพเป็น 2 และ 3
ทำซ้ำขั้นตอนการกรองสำหรับภาพปกติด้วยค่าตัวเลขของภาพเป็น 2 และ 3
ทำซ้ำขั้นตอนการกรองสำหรับภาพปกติด้วยค่าตัวเลขของภาพเป็น 2 และ 3
ทำซ้ำขั้นตอนการกรองสำหรับภาพปกติด้วยค่าตัวเลขของภาพเป็น 2 และ 3

ทำซ้ำขั้นตอนสำหรับส่วนที่เหลือของต้นฉบับ if คำสั่งเมื่อ numel (จำนวนหลักในหมายเลขรูปภาพ) เท่ากับ 2 และ 3 การดำเนินการ for loop สำหรับรูปภาพปกติจะเสร็จสมบูรณ์

สิ้นสุดการวนรอบ

ขั้นตอนที่ 31: ทำซ้ำขั้นตอนทั้งหมดสำหรับรูปภาพที่ได้รับการวินิจฉัย

ทำซ้ำขั้นตอนทั้งหมดสำหรับรูปภาพที่ได้รับการวินิจฉัย
ทำซ้ำขั้นตอนทั้งหมดสำหรับรูปภาพที่ได้รับการวินิจฉัย

ทำซ้ำขั้นตอนทั้งหมดโดยใช้รูปภาพที่ได้รับการวินิจฉัยซึ่งแสดงโดยเมทริกซ์ “numbers_to_extract_diagnosed”

ตรวจสอบให้แน่ใจว่าได้ผ่านทุกตัวเลข (i) และเปลี่ยนเป็นตัวเลข (i+10) เพื่อให้ตัวเลขที่ได้รับการวินิจฉัยจะปรากฏขึ้นเป็นภาพที่ 11 ถึง 20

ขั้นตอนที่ 32: การวิเคราะห์ทางสถิติ

การวิเคราะห์ทางสถิติ
การวิเคราะห์ทางสถิติ

1. 'Actual_Diagnosis_Matrix' ใช้เพื่อเปรียบเทียบผลลัพธ์กับการวินิจฉัยอย่างเป็นทางการที่พบในไฟล์ txt ศูนย์ 10 ตัวแรกระบุว่า 10 ภาพแรกควรเป็นปกติ 10 ภาพสุดท้ายระบุว่า 10 ภาพสุดท้ายควรจัดเป็นเบาหวานขึ้นจอตา

2. เครื่องหมายเท่ากับสองเท่าที่ใช้ในการสร้าง 'number_correct' สร้างอาร์เรย์แบบลอจิคัลโดยเปรียบเทียบค่าขององค์ประกอบที่สอดคล้องกันของ 'Actual_Diagnosis_Matrix' กับ 'Diagnosis_Matrix' ที่สร้างจากลูป for

สำหรับแต่ละองค์ประกอบที่ตรงกับการวินิจฉัย จะมีการเพิ่ม 1 ซึ่งหมายความว่ารหัสจะวินิจฉัยภาพนั้นอย่างถูกต้อง หากไม่ถูกต้องจะเพิ่ม 0 ให้กับเมทริกซ์

จากนั้นนำผลรวมของสิ่งนั้นมารวมกันทั้งหมด กล่าวคือจะพบผลรวมของภาพที่วินิจฉัยอย่างถูกต้อง

3. 'Final_percentage_correct' คือเปอร์เซ็นต์ที่คำนวณว่ารหัสวินิจฉัยภาวะเบาหวานขึ้นจอตาได้แม่นยำเพียงใด จำนวนภาพที่วินิจฉัยอย่างถูกต้องจะถูกหารด้วย 20 (จำนวนภาพทั้งหมด) และคูณด้วย 100 เพื่อหาเปอร์เซ็นต์ของการวินิจฉัยที่สำเร็จ

ขั้นตอนที่ 33: ค้นหาช่วงความเชื่อมั่น

การหาช่วงความเชื่อมั่น
การหาช่วงความเชื่อมั่น

1. ตรวจสอบให้แน่ใจว่าคุณได้ดาวน์โหลด ModWald.m เพื่อเรียกใช้เป็นฟังก์ชัน หากไม่มีฟังก์ชัน คุณจะต้องคำนวณช่วงความเชื่อมั่นโดยใช้วิธี Wald ที่แก้ไขด้วยตนเอง

2. ฟังก์ชัน ModWald มีอินพุต 2 ช่อง โดยช่องแรกคือจำนวนรูปภาพที่ระบุอย่างถูกต้อง และช่องที่สองคือจำนวนรูปภาพทั้งหมด

3. ฟังก์ชัน ModWald จะส่งออกขอบเขตล่างและบนของช่วงความเชื่อมั่นของสัดส่วนเพื่อความถูกต้องของข้อมูลตัวอย่าง กล่าวอีกนัยหนึ่ง คุณจะให้ช่วงเวลาของเปอร์เซ็นต์ที่เปอร์เซ็นต์ที่แท้จริงของความถูกต้องของรหัสจะอยู่

4. ใช้ fprintf ด้านล่างเพื่อส่งออกสถิติและช่วงความเชื่อมั่นไปยังหน้าต่างคำสั่ง

> fprintf('%.0f เปอร์เซ็นต์ของภาพจอประสาทตาได้รับการวินิจฉัยอย่างถูกต้องตามการวินิจฉัยอย่างเป็นทางการ \n\n', Final_percentage_correct)

> fprintf('เปอร์เซ็นต์ที่แท้จริงที่โค้ดของเราจะวินิจฉัยภาวะเบาหวานขึ้นจอตาอย่างถูกต้อง\n จะอยู่ในช่วง [%.3f, %.3f] โดยอิงจากภาพตัวอย่าง 20 ภาพ \n', lower_bound, upper_bound)

แนะนำ: