ปลั๊กอิน DICOM

ดูภาพการแพทย์ด้วย DicomPlugin

ปลั๊กอิน DICOM เพิ่มความสามารถในการดูภาพการแพทย์ให้กับ Doconut: ไฟล์ DICOM แบบหลายเฟรมจะแสดงเป็นภาพเคลื่อนไหว, เฟรมเดี่ยว, หรือทั้งสองอย่างพร้อมกัน DICOM เป็น รูปแบบที่ต้องใช้ปลั๊กอินเท่านั้น — หากไม่มีปลั๊กอินนี้ (และความสามารถด้านใบอนุญาต) ไฟล์ .dcm จะไม่สามารถเปิดได้เลย

ติดตั้งแพ็กเกจ

bash
dotnet add package Doconut.NET6.Dicom

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

bash
dotnet add package Doconut.NET6.Dicom --version 26.7.0

ให้รักษาแพ็กเกจ DICOM ให้เป็นเวอร์ชันเดียวกับ Doconut.NET6 ID ของแพ็กเกจคือ Doconut.NET6.Dicom; .26.7.0 ปรากฏเฉพาะในชื่อไฟล์ .nupkg ที่ดาวน์โหลดมา

ลงทะเบียนปลั๊กอิน

csharp
builder.Services.AddDoconut(options =>
{
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

ปลั๊กอิน (Name: "Doconut DICOM Viewer") ลงทะเบียนตัวดูสำหรับส่วนขยาย .dcm และ .ima โดยอาศัยความสามารถ Dicom หากไม่มีหรือมีสิทธิ์ชั่วคราวที่ไม่เพียงพอ จะล้มเหลวในขั้นตอน AddDoconut() เนื่องจากไม่มีตัวดูในตัวจัดการรูปแบบเหล่านี้ ประตูตรวจสอบเวลาเรียกใช้ก็จะล้มเหลวอย่างรุนแรงหากความสามารถนั้นหายไปในภายหลัง:

text
LicenseException: This document type requires the 'Dicom' plugin license.

เปิดไฟล์ DICOM

csharp
var token = await viewer.OpenDocumentAsync(path, new DicomConfig
{
    DisplayMode = DicomDisplayMode.AnimationAndFrames
});

โหมดการแสดงผล

ไฟล์ DICOM แบบหลายเฟรมสามารถนำเสนอได้สามวิธี (DicomDisplayMode):

โหมดหน้าที่สร้างการใช้งาน
AnimationOnlyหน้า 1 = GIF เคลื่อนไหววนซ้ำทุกเฟรมการตรวจสอบแบบภาพยนตร์สั้น
FramesOnlyหน้า 1..N = PNG คงที่หนึ่งไฟล์ต่อเฟรมการนำทางเชิงวินัยเฟรมต่อเฟรม
AnimationAndFrames (default)หน้า 1 = GIF เคลื่อนไหว, หน้า 2..N = เฟรมคงที่ภาพรวม + รายละเอียดในเอกสารเดียวกัน

เวลาการเคลื่อนไหวควบคุมโดย AnimationFrameDelayMs (ค่าเริ่มต้น 100 ms = 10 FPS; ความละเอียดของ GIF คือหน่วย 10 ms) และ LoopCount (0 = วนซ้ำตลอดไป)

ความละเอียด

DicomConfig เรนเดอร์ที่ 100 DPI ต่อแกนโดยค่าเริ่มต้น คุณสมบัติความละเอียดมีลำดับสำรองที่ควรทราบ: หากไม่ได้ตั้งค่า HorizontalResolution/VerticalResolution อย่างชัดเจน จะใช้ค่า BaseConfig.ImageResolution หากมีการกำหนดไว้ และหากไม่มีจะย้อนกลับไปที่ 100

csharp
// Uniform bump via the base property…
new DicomConfig { ImageResolution = 150 };

// …or per-axis control
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };

ความพร้อมใช้งานเมตาดาต้า DICOM บน .NET 6

การเรนเดอร์หน้า DICOM, เฟรมเดี่ยว, การเคลื่อนไหว, การแปลงรูป, และการใส่ลายน้ำทั้งหมดได้รับการสนับสนุน แต่ข้อมูลเมตาแท็กทางเทคนิคไม่พร้อมใช้งานในแพ็กเกจ .NET 6 เนื่องจากตัวอ่านเมตาไม่มีการสร้างสำหรับ .NET 6

Viewer.GetDicomMetadataAsync(token) จึงคืนค่า null สำหรับเซสชัน DICOM และบันทึกคำเตือนครั้งเดียว คำขอ middleware ?token=…&meta จะตอบกลับด้วย HTTP 501 Not Implemented พร้อมรหัสข้อผิดพลาดคงที่ dicom_metadata_unsupported ใช้แพ็กเกจ .NET 8 เมื่อเมตา DICOM ทางเทคนิคเป็นข้อกำหนดที่จำเป็น

อ้างอิงการกำหนดค่าครบถ้วน

ตารางคุณสมบัติ DicomConfig ทั้งหมดอยู่ใน API Reference → Format Configs ตัวอย่างการกำหนดค่าในแอปอ้างอิงตามส่วนขยาย:

csharp
".DCM" or ".IMA" => new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames },

พฤติกรรมลายน้ำและหน่วยความจำ

การตัดสินใจใส่ลายน้ำบนหน้าแบบปกติก็ใช้กับผลลัพธ์ DICOM ด้วย สำหรับผลลัพธ์แบบเคลื่อนไหว ทุกเฟรม GIF จะถูกประทับลายน้ำเพื่อให้มาร์คยังคงมองเห็นตลอดการเล่น DocOptions.Watermark ที่กำหนดเองจะใช้ได้เฉพาะเมื่อเส้นทางใบอนุญาตอนุญาตลายน้ำแบบกำหนดเอง; ไม่สามารถแทนที่ลายน้ำแบบประเมินได้

การศึกษาที่มีหลายเฟรมสามารถสร้างทั้งภาพเคลื่อนไหวและหน้าแบบคงที่ต่อเฟรม AnimationAndFrames ให้การนำทางที่ละเอียดที่สุดแต่ก็มีค่าใช้จ่ายด้านการเรนเดอร์และแคชสูงสุด สำหรับการศึกษาขนาดใหญ่:

  • ใช้ FramesOnly เมื่อการตรวจสอบเฟรมสำคัญกว่าการเล่นภาพยนตร์;
  • หลีกเลี่ยงการเพิ่มความละเอียดของแกนทั้งสองโดยไม่วัดหน่วยความจำ;
  • ปิดเซสชันอย่างชัดเจนเมื่อการศึกษาไม่เปิดอยู่แล้ว;
  • เปิด CachePages เฉพาะเมื่อประโยชน์จากการเข้าถึงซ้ำเกินกว่าภาพที่เก็บไว้

แก้ไขปัญหา

อาการการตรวจสอบ
รายงานว่าไฟล์ .dcm ไม่รองรับการลงทะเบียน DicomPlugin และการปรับใช้แพ็กเกจ
การเริ่มต้นล้มเหลวหลังจากเพิ่มปลั๊กอินใบอนุญาตที่โหลดให้สิทธิ์ Dicom
ปรากฏหน้าเดียวเท่านั้นแหล่งอาจเป็นไฟล์เฟรมเดียว, หรือ DisplayMode เป็น AnimationOnly
การเคลื่อนไหวเร็วหรือช้าเกินไปAnimationFrameDelayMs; การคำนวณเวลา GIF ใช้หน่วย 10 ms
หน่วยความจำเพิ่มขึ้นเมื่อไฟล์หลายเฟรมขนาดใหญ่โหมดการแสดง, ความละเอียด, แคชหน้า, และการปิดเซสชันอย่างชัดเจน
เมตาดาต้าเป็น null หรือ &meta คืนค่า 501ข้อจำกัดของ .NET 6 ที่คาดไว้; การเรนเดอร์ไม่ได้รับผลกระทบ

หน้านี้เป็นประโยชน์หรือไม่?