【发布时间】:2014-04-27 15:58:08
【问题描述】:
我需要从文件中提取 DICOM 图像并将其转换为标准位图。这是我的代码,使用 fo-dicom:
Bitmap bmp;
try
{
var image = new DicomImage(Context.Server.MapPath("~/IM-0001-0000.dcm"));
bmp = new Bitmap(image.RenderImage());
}
catch (Exception exception)
{
//for breakpoint purposes
throw;
}
但是,它失败并显示以下消息:
No codec registered for tranfer syntax: JPEG 2000 Image Compression
我不是医学成像方面的专家,而且 Google 也没有发现任何有用的东西。我通过 NuGet 安装了 fo-dicom,所以我想所有必需的引用都已经在项目中了。我错过了什么?
【问题讨论】:
-
我没有找到这个新的库的文档,你可能会更好地尝试他们的支持论坛,here is one post 关于相同的错误消息(虽然不同的传输语法),也许这篇文章可能会有所帮助。
-
@ChrisO 是的,我看过这篇文章,但还是没有运气。和 AFAIK,没有文档。有没有更好的选择?
-
ClearCanvas(开源)是一个更成熟的 SDK,因此它可能支持开箱即用的 JPEG 2000。 MergeCom(付费软件)也可能支持这一点。虽然我已经使用 DICOM 多年,但从来没有需要支持 JPEG 2000,但这种格式从未真正流行起来。 FWIW,常见的放射学数据集往往是 JPEG 无损(或未压缩),而心脏病学数据集往往是 JPEG 有损。
-
@ChrisO 我尝试了更多文件并设法打开了一个原始文件,但 JPEG 变体似乎都不起作用。我想我会尝试 ClearCanvas,尽管对于学生项目中不应超过 3 行代码的东西来说,这似乎太复杂了。
-
好的,我刚刚用 NuGet 的 fo-dicom 尝试了一个 JPEG 2000 样本,我可以很好地解压一个样本文件,不会收到
no codec错误消息。我认为线索是您的 ASP.NET 应用程序在加载本机 DLL 时遇到问题,让我尝试就该问题找到一些建议。 ASP 对本机 DLL 的路径有些奇怪,可能是找不到它们,这可能导致编解码器错误。