Plugin DICOM

Xem hình ảnh y tế với DicomPlugin

Plugin DICOM thêm khả năng xem hình ảnh y tế vào Doconut: các tệp DICOM đa khung được hiển thị dưới dạng tổng quan hoạt hình, các khung riêng lẻ, hoặc cả hai. DICOM là một định dạng chỉ dành cho plugin — nếu không có plugin này (và khả năng cấp phép của nó), các tệp .dcm không thể mở được.

Cài đặt gói

bash
dotnet add package Doconut.NETStandard.Dicom

Lệnh không chỉ định phiên bản sẽ cài đặt phiên bản ổn định mới nhất. Để cố định plugin ở phiên bản 26.8.0 hiện tại, hãy truyền phiên bản riêng biệt:

bash
dotnet add package Doconut.NETStandard.Dicom --version 26.8.0

Giữ gói DICOM ở cùng phiên bản với Doconut.NETStandard. ID gói là Doconut.NETStandard.Dicom; .26.8.0 chỉ xuất hiện trong tên tệp .nupkg đã tải về.

Đăng ký plugin

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

Plugin (Name: "Doconut DICOM Viewer") đăng ký các trình xem cho các phần mở rộng .dcm và .ima, được kiểm soát bởi khả năng Dicom. Một quyền không tồn tại hoặc không đủ (không tạm thời) thường sẽ gây lỗi trong quá trình AddDoconut(). Vì không có trình xem tích hợp nào xử lý các định dạng này, cổng thời gian chạy cũng sẽ thất bại nghiêm trọng nếu khả năng này sau này không còn khả dụng:

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

Mở tệp DICOM

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

Chế độ hiển thị

Các tệp DICOM đa khung có thể được trình bày theo ba cách (DicomDisplayMode):

Chế độTrang tạo raSử dụng cho
AnimationOnlyPage 1 = GIF hoạt hình lặp lại tất cả các khungXem nhanh dạng điện ảnh
FramesOnlyPages 1..N = một PNG tĩnh cho mỗi khungDuyệt chẩn đoán khung theo khung
AnimationAndFrames (default)Page 1 = GIF hoạt hình, pages 2..N = các khung tĩnhTổng quan + chi tiết trong một tài liệu

Thời gian hoạt hình được điều khiển bởi AnimationFrameDelayMs (mặc định 100 ms = 10 FPS; độ chi tiết GIF là đơn vị 10 ms) và LoopCount (0 = lặp vô hạn).

Độ phân giải

DicomConfig hiển thị ở 100 DPI mỗi trục theo mặc định. Các thuộc tính độ phân giải có một chuỗi dự phòng cần biết: nếu bạn không đặt HorizontalResolution/VerticalResolution một cách rõ ràng, chúng sẽ theo BaseConfig.ImageResolution khi được cấu hình, và chỉ sau đó mới quay lại 100.

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

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

Khả năng truy cập siêu dữ liệu DICOM trên .NET Standard

Việc render trang DICOM, các khung riêng lẻ, hoạt hình, chuyển đổi và đánh dấu nước đều được hỗ trợ. Siêu dữ liệu thẻ kỹ thuật không có trong gói .NET Standard vì trình đọc siêu dữ liệu chỉ được cung cấp dưới dạng bản .NET 8.

Viewer.GetDicomMetadataAsync(token) do đó trả về null cho một phiên DICOM và ghi lại một cảnh báo một lần. Yêu cầu middleware ?token=…&meta tương ứng trả về HTTP 501 Not Implemented với mã lỗi ổn định dicom_metadata_unsupported. Hãy sử dụng gói .NET 8 khi siêu dữ liệu DICOM kỹ thuật là yêu cầu.

Tham chiếu cấu hình đầy đủ

Bảng thuộc tính đầy đủ của DicomConfig nằm trong Tham chiếu API → Cấu hình Định dạng. Một ví dụ thực tế từ chuyển đổi theo phần mở rộng trong ứng dụng tham chiếu:

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

Đánh dấu nước và hành vi bộ nhớ

Quyết định đánh dấu nước cho trang bình thường cũng áp dụng cho đầu ra DICOM. Đối với đầu ra hoạt hình, mỗi khung GIF được dán dấu để dấu vẫn hiển thị trong suốt quá trình phát. DocOptions.Watermark tùy chỉnh chỉ được sử dụng khi đường cấp phép cho phép đánh dấu nước tùy chỉnh; nó không thể thay thế dấu nước đánh giá.

Các nghiên cứu đa khung có thể tạo cả hoạt hình và một trang tĩnh cho mỗi khung. AnimationAndFrames cung cấp khả năng điều hướng phong phú nhất nhưng cũng có chi phí render và bộ nhớ đệm cao nhất. Đối với các nghiên cứu lớn:

  • sử dụng FramesOnly khi việc kiểm tra khung quan trọng hơn việc phát lại dạng điện ảnh;
  • tránh tăng cả hai trục độ phân giải mà không đo lường bộ nhớ;
  • đóng phiên một cách rõ ràng khi nghiên cứu không còn mở;
  • giữ CachePages bật chỉ khi lợi ích của việc truy cập lặp lại vượt quá chi phí lưu trữ hình ảnh.

Khắc phục sự cố

Triệu chứngKiểm tra
.dcm được báo là không hỗ trợĐăng ký DicomPlugin và triển khai gói
Khởi động thất bại sau khi thêm pluginGiấy phép đã tải cho phép Dicom
Chỉ một trang xuất hiệnNguồn có thể là một khung duy nhất, hoặc DisplayMode là AnimationOnly
Hoạt hình quá nhanh hoặc quá chậmAnimationFrameDelayMs; thời gian GIF thực tế sử dụng đơn vị 10 ms
Bộ nhớ tăng lên trên các tệp đa khung lớnChế độ hiển thị, độ phân giải, bộ nhớ đệm trang và việc đóng phiên một cách rõ ràng
Siêu dữ liệu là null, hoặc &meta trả về 501Giới hạn dự kiến của gói này; việc render không bị ảnh hưởng

Trang này có hữu ích không?