DICOM 플러그인

DicomPlugin으로 의료 이미지를 보기

DICOM 플러그인은 Doconut에 의료 이미지 보기 기능을 추가합니다: 다중 프레임 DICOM 파일을 애니메이션 개요, 개별 프레임, 또는 두 가지 모두로 렌더링합니다. DICOM은 플러그인 전용 포맷이며 — 이 플러그인(및 라이선스 기능) 없이는 .dcm 파일을 전혀 열 수 없습니다.

.NET Framework 4.7.2에서 DICOM 파일은 페이지, 프레임 및 애니메이션을 모두 완전히 렌더링하지만, 기술 메타데이터(DICOM 태그)는 사용할 수 없습니다. Viewer.GetDicomMetadataAsync는 항상 null를 반환하고, 위젯의 메타데이터 요청은 501 Not Implemented로 응답합니다. 태그가 필요하면 Doconut.NET8를 사용하십시오.

패키지 설치

powershell
Install-Package Doconut.NETFramework.Dicom

Doconut.NETFramework와 동일한 버전으로 DICOM 패키지를 유지하십시오.

플러그인 등록

csharp
Doconut.DoconutHost.Initialize(options =>
{
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

플러그인(Name: "Doconut DICOM Viewer")은 .dcm 및 .ima 확장자를 위한 뷰어를 등록하며, 이는 Dicom 기능에 의해 제한됩니다. 라이선스가 이를 부여하지 않으면, DoconutHost.Initialize은 Application_Start에서 예외를 발생시키고 사이트는 모든 요청에 빈 500로 응답합니다(원인은 Windows 이벤트 로그에 있습니다). 내장 뷰어가 이러한 포맷을 처리하지 않기 때문에, 기능이 나중에 사용할 수 없게 되면 열기가 즉시 실패합니다:

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 = 무한 반복)으로 제어됩니다.

뷰어는 페이지 1이 애니메이션인지 확인하기 위해 HEAD 요청을 보냅니다. 따라서 DocImage.axd 핸들러는 Web.config에서 HEAD을 받아들여야 합니다(verb="GET,HEAD,POST", 설치 참조); 이가 없으면 Doconut이 실행되기 전에 IIS가 404로 응답하여 애니메이션 감지가 작동하지 않습니다.

해상도

DicomConfig는 기본적으로 축당 100 DPI로 렌더링됩니다. HorizontalResolution/VerticalResolution를 명시적으로 설정하지 않으면, 해당 값이 설정된 경우 BaseConfig.ImageResolution를 따르고, 그때만 100으로 되돌아갑니다.

csharp
// 기본 속성을 통한 균일 버프…
new DicomConfig { ImageResolution = 150 };

// …또는 축별 제어
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };

DICOM 메타데이터

csharp
var metadata = await viewer.GetDicomMetadataAsync(token);
// .NET Framework에서는 이것이 항상 null입니다: DICOM 메타데이터 리더를 사용할 수 없습니다.
// target. 페이지, 프레임 및 애니메이션이 정상적으로 렌더링됩니다.

이 메서드는 .NET 8 패키지와 공유된 코드가 컴파일되도록 이 패키지에 존재하지만, DICOM 태그를 읽으려면 .NET Framework 빌드가 없는 구성 요소가 필요합니다. 태그가 없음을 전제로 UI를 설계하십시오 — 예를 들어, 결과가 null인 경우 메타데이터 패널을 숨깁니다.

전체 구성 참조

전체 DicomConfig 속성 표는 포맷 구성에 있습니다. 확장자별 선택에서 DICOM 사례는 다음과 같습니다:

csharp
case ".DCM": case ".IMA":
    return new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames };

워터마크 및 메모리 동작

일반 페이지 워터마크 결정은 DICOM 출력에도 적용됩니다. 애니메이션 출력의 경우 각 GIF 프레임에 워터마크가 찍히므로 재생 전체에 걸쳐 표시됩니다. 맞춤형 DocOptions.Watermark는 라이선스가 맞춤 워터마크를 허용할 때만 사용되며, 평가용 워터마크를 대체할 수 없습니다.

다중 프레임 연구는 애니메이션과 프레임당 정적 페이지를 모두 생성할 수 있습니다. AnimationAndFrames는 가장 풍부한 탐색을 제공하지만 렌더링 및 메모리 비용도 가장 높으며, 단일 서버에서는 해당 메모리가 IIS 워커 프로세스에 속합니다. 대규모 연구의 경우:

  • 재생보다 프레임 검사가 더 중요할 때 FramesOnly를 사용하십시오;
  • 메모리를 측정하지 않고 두 해상도 축을 모두 높이는 것을 피하십시오;
  • 연구가 더 이상 열려 있지 않을 때 세션을 명시적으로 종료하십시오;
  • 이미지를 유지하는 것이 반복 접근에 가치가 있을 때만 CachePages를 켜 두십시오.

문제 해결

증상점검
.dcm가 지원되지 않음으로 보고됨DicomPlugin 등록 및 패키지 배포
플러그인 추가 후 모든 요청이 빈 500로 응답라이선스가 Dicom를 부여함 — Windows 이벤트 로그, 소스 ASP.NET
한 페이지만 표시됨소스가 단일 프레임이거나 DisplayMode가 AnimationOnly일 수 있음
페이지 1이 애니메이션되지 않음Web.config의 핸들러가 HEAD를 수락함
애니메이션이 너무 빠르거나 느림AnimationFrameDelayMs; GIF 타이밍은 10 ms 단위 사용
대형 다중 프레임 파일에서 메모리 증가표시 모드, 해상도, 페이지 캐시, 명시적 세션 종료
메타데이터가 항상 null임이 패키지에서는 예상된 동작 — 상단의 주석을 참조

이 페이지가 도움이 되었나요?