日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Fo-dicom,第一個基于.NET Standard 2.0 開發的DICOM開源庫

來源: 責編: 時間:2024-05-07 09:11:53 241觀看
導讀1. 簡介:fo-dicom是一個基于C#開發的庫,用于處理DICOM(Digital Imaging and Communications in Medicine)格式的數據。DICOM是一種用于醫學影像和相關信息的標準格式,廣泛應用于醫學領域。fo-dicom提供了多平臺支持,可在 Wi

FFz28資訊網——每日最新資訊28at.com

1. 簡介:

fo-dicom是一個基于C#開發的庫,用于處理DICOM(Digital Imaging and Communications in Medicine)格式的數據。DICOM是一種用于醫學影像和相關信息的標準格式,廣泛應用于醫學領域。fo-dicom提供了多平臺支持,可在 Windows、Linux 和 macOS 等操作系統上運行。FFz28資訊網——每日最新資訊28at.com

fo-dicom庫的設計理念是提供一個方便、易用、功能強大的工具,用于處理、讀取、寫入和修改DICOM文件。該庫提供了豐富的API,支持對DICOM文件的標簽進行讀取和設置,支持對DICOM文件的編碼和解碼,支持對DICOM文件的傳輸和存儲。FFz28資訊網——每日最新資訊28at.com

fo-dicom庫還提供了對DICOM消息流的封裝,使得開發者可以方便地實現自定義的DICOM服務。該庫還支持對網絡底層的封裝,使得開發者可以輕松地實現基于網絡的DICOM通信。FFz28資訊網——每日最新資訊28at.com

開源庫地址:https://github.com/fo-dicom/fo-dicom。FFz28資訊網——每日最新資訊28at.com

2. 開發的背景和目的:

fo-dicom庫的產生是為了解決醫學圖像處理和DICOM數據交換的需求。在醫學領域,DICOM(Digital Imaging and Communications in Medicine)是一種用于存儲、傳輸和共享醫學影像和相關信息的標準。由于醫學影像數據的特殊性和復雜性,需要一個專門的庫來處理DICOM數據,并提供方便的接口和工具。FFz28資訊網——每日最新資訊28at.com

背景上來說,DICOM標準的出現是為了解決各種醫學設備之間的互操作性問題。在過去,不同廠商的醫學設備使用自己的私有格式來存儲和傳輸影像數據,這導致了數據共享和集成的困難。DICOM標準的制定使得不同設備可以使用統一的格式和通信協議,從而實現醫學影像的無縫交流和協作。FFz28資訊網——每日最新資訊28at.com

fo-dicom作為一個開源的DICOM庫,旨在提供一個易于使用且功能強大的工具,使得開發者能夠處理醫學圖像和相關數據。它基于DICOM標準,提供了讀取、創建、修改和存儲DICOM數據的功能,同時支持醫學圖像的加載、處理和保存。此外,fo-dicom還具備與遠程PACS(Picture Archiving and Communication System)或其他DICOM節點的網絡通信能力,以及查詢和檢索功能,方便用戶根據條件查詢和獲取DICOM實例。FFz28資訊網——每日最新資訊28at.com

3.主要特點和安裝方式

閱讀官方文檔,即可獲得安裝方法:https://fo-dicom.github.io/stable/v5/index.html。FFz28資訊網——每日最新資訊28at.com

4. 主要功能:

  • DICOM 數據處理:fo-dicom 支持讀取、創建、修改和存儲 DICOM 數據。用戶可以輕松訪問和操作 DICOM 文件和數據集。
  • 圖像處理:該庫提供了對醫學圖像的加載、處理和保存功能。用戶可以進行像素級別的操作、圖像增強、格式轉換等操作。
  • DICOM 網絡通信:fo-dicom 具備與遠程 PACS 或其他 DICOM 節點的網絡通信能力,使用戶可以發送和接收 DICOM 消息。
  • 查詢和檢索:fo-dicom 實現了查詢和檢索功能,用戶可以根據條件進行 DICOM 實例的查詢和獲取。這有助于快速訪問所需的醫學圖像和相關數據。

5. 使用說明:

圖像渲染配置

開箱即用的 fo-dicom 默認為內部類FellowOakDicom.Imaging.IImage 樣式的圖像渲染。若要切換到桌面樣式或 ImageSharp 樣式的圖像呈現,首先必須添加所需的 nuget 包,然后調用:FFz28資訊網——每日最新資訊28at.com

new DicomSetupBuilder()    .RegisterServices(s => s.AddFellowOakDicom().AddImageManager<WinFormsImageManager>()).Build();

或:FFz28資訊網——每日最新資訊28at.com

new DicomSetupBuilder()    .RegisterServices(s => s.AddFellowOakDicom().AddImageManager<ImageSharpImageManager>()).Build();

然后,在渲染時,可以通過以下方式將 IImage 強制轉換為類型。FFz28資訊網——每日最新資訊28at.com

var image = new DicomImage("filename.dcm");var bitmap = image.RenderImage().As<Bitmap>();

或:FFz28資訊網——每日最新資訊28at.com

var image = new DicomImage("filename.dcm");var sharpimage = image.RenderImage().AsSharpImage();

日志記錄配置

Fellow Oak DICOM 使用 ,因此如果您已經在使用它,則 Fellow Oak DICOM 日志記錄將自動顯示。
Microsoft.Extensions.Logging
FFz28資訊網——每日最新資訊28at.com

過去,Fellow Oak DICOM 有一個用于日志記錄的自定義抽象:ILogger 和 ILogManager。 出于向后兼容性的目的,這仍然受支持,但不建議用于新應用程序。FFz28資訊網——每日最新資訊28at.com

services.AddLogManager<MyLogManager>();

其中 MyLogManager 如下所示:FFz28資訊網——每日最新資訊28at.com

using FellowOakDicom.Log;public class MyLogManager: ILogManager {    public ILogger GetLogger(string name) {        ...    }}

示例應用程序

這里有許多使用 fo-dicom 的簡單示例應用程序,它們位于單獨的存儲庫中。這些還包括示例 以前包含在 VS 解決方案的“示例”子文件夾中。FFz28資訊網——每日最新資訊28at.com

6.例子

文件操作

var file = DicomFile.Open(@"test.dcm");             // Alt 1var file = await DicomFile.OpenAsync(@"test.dcm");  // Alt 2var patientid = file.Dataset.GetString(DicomTag.PatientID);file.Dataset.AddOrUpdate(DicomTag.PatientName, "DOE^JOHN");// creates a new instance of DicomFilevar newFile = file.Clone(DicomTransferSyntax.JPEGProcess14SV1);file.Save(@"output.dcm");             // Alt 1await file.SaveAsync(@"output.dcm");  // Alt 2

將圖像渲染為 JPEG

var image = new DicomImage(@"test.dcm");image.RenderImage().AsBitmap().Save(@"test.jpg");                     // Windows Forms

C-Store SCU系列

var client = DicomClientFactory.Create("127.0.0.1", 12345, false, "SCU", "ANY-SCP");await client.AddRequestAsync(new DicomCStoreRequest(@"test.dcm"));await client.SendAsync();

C-Echo SCU/SCP

var server = new DicomServer<DicomCEchoProvider>(12345);var client = DicomClientFactory.Create("127.0.0.1", 12345, false, "SCU", "ANY-SCP");client.NegotiateAsyncOps();// Optionally negotiate user identityclient.NegotiateUserIdentity(new DicomUserIdentityNegotiation{    UserIdentityType = DicomUserIdentityType.Jwt,    PositiveResponseRequested = true,    PrimaryField = "JWT_TOKEN"});for (int i = 0; i < 10; i++)    await client.AddRequestAsync(new DicomCEchoRequest());await client.SendAsync();

C-Find SCU

var cfind = DicomCFindRequest.CreateStudyQuery(patientId: "12345");cfind.OnResponseReceived = (DicomCFindRequest rq, DicomCFindResponse rp) => {	Console.WriteLine("Study UID: {0}", rp.Dataset.GetString(DicomTag.StudyInstanceUID));};var client = DicomClientFactory.Create("127.0.0.1", 11112, false, "SCU-AE", "SCP-AE");await client.AddRequestAsync(cfind);await client.SendAsync();

C-Move SCU系列

var cmove = new DicomCMoveRequest("DEST-AE", studyInstanceUid);var client = DicomClientFactory.Create("127.0.0.1", 11112, false, "SCU-AE", "SCP-AE");await client.AddRequestAsync(cmove);await client.SendAsync();

N-Action SCU

// It is better to increase 'associationLingerTimeoutInMs' default is 50 ms, which may not be// be sufficientvar dicomClient = DicomClientFactory.Create("127.0.0.1", 12345, false, "SCU-AE", "SCP-AE",DicomClientDefaults.DefaultAssociationRequestTimeoutInMs, DicomClientDefaults.DefaultAssociationReleaseTimeoutInMs,5000);var txnUid = DicomUIDGenerator.GenerateDerivedFromUUID().UID;var nActionDicomDataSet = new DicomDataset{    { DicomTag.TransactionUID,  txnUid }};var dicomRefSopSequence = new DicomSequence(DicomTag.ReferencedSOPSequence);var seqItem = new DicomDataset(){    { DicomTag.ReferencedSOPClassUID, "1.2.840.10008.5.1.4.1.1.1" },    { DicomTag.ReferencedSOPInstanceUID, "1.3.46.670589.30.2273540226.4.54" }};dicomRefSopSequence.Items.Add(seqItem);nActionDicomDataSet.Add(dicomRefSopSequence);var nActionRequest = new DicomNActionRequest(DicomUID.StorageCommitmentPushModelSOPClass,                DicomUID.StorageCommitmentPushModelSOPInstance, 1){    Dataset = nActionDicomDataSet,    OnResponseReceived = (DicomNActionRequest request, DicomNActionResponse response) =>     {        Console.WriteLine("NActionResponseHandler, response status:{0}", response.Status);    },};await dicomClient.AddRequestAsync(nActionRequest);dicomClient.OnNEventReportRequest = OnNEventReportRequest;await dicomClient.SendAsync();private static Task<DicomNEventReportResponse> OnNEventReportRequest(DicomNEventReportRequest request){    var refSopSequence = request.Dataset.GetSequence(DicomTag.ReferencedSOPSequence);    foreach(var item in refSopSequence.Items)    {        Console.WriteLine("SOP Class UID: {0}", item.GetString(DicomTag.ReferencedSOPClassUID));        Console.WriteLine("SOP Instance UID: {0}", item.GetString(DicomTag.ReferencedSOPInstanceUID));    }    return Task.FromResult(new DicomNEventReportResponse(request, DicomStatus.Success));}

具有高級 DICOM 客戶端連接的 C-ECHO:手動控制 TCP 連接和 DICOM 關聯。FFz28資訊網——每日最新資訊28at.com

var cancellationToken = CancellationToken.None;// Alternatively, inject IDicomServerFactory via dependency injection instead of using this static methodusing var server = DicomServerFactory.Create<DicomCEchoProvider>(12345); var connectionRequest = new AdvancedDicomClientConnectionRequest{    NetworkStreamCreationOptions = new NetworkStreamCreationOptions    {        Host = "127.0.0.1",        Port = server.Port,    }};// Alternatively, inject IAdvancedDicomClientConnectionFactory via dependency injection instead of using this static methodusing var connection = await AdvancedDicomClientConnectionFactory.OpenConnectionAsync(connectionRequest, cancellationToken);var associationRequest = new AdvancedDicomClientAssociationRequest{    CallingAE = "EchoSCU",    CalledAE = "EchoSCP",    // Optionally negotiate user identity    UserIdentityNegotiation = new DicomUserIdentityNegotiation    {        UserIdentityType = DicomUserIdentityType.UsernameAndPasscode,        PositiveResponseRequested = true,        PrimaryField = "USERNAME",        SecondaryField = "PASSCODE",    }};var cEchoRequest = new DicomCEchoRequest();using var association = await connection.OpenAssociationAsync(associationRequest, cancellationToken);try{    DicomCEchoResponse cEchoResponse = await association.SendCEchoRequestAsync(cEchoRequest, cancellationToken).ConfigureAwait(false);        Console.WriteLine(cEchoResponse.Status);}finally{    await association.ReleaseAsync(cancellationToken);}

7. 社區和生態:

fo-dicom 有一個活躍的社區,包括眾多貢獻者和維護者。它在 GitHub 上有一個開放的倉庫,用戶可以在其中提交問題、提出建議和貢獻代碼。fo-dicom 的更新頻率較高,并得到了廣泛的應用和認可。FFz28資訊網——每日最新資訊28at.com

為了方便新手學習官方構建了樣例庫:https://github.com/fo-dicom/fo-dicom-samples。FFz28資訊網——每日最新資訊28at.com

同時支持多個平臺的案例開發開發:FFz28資訊網——每日最新資訊28at.com

8. 優勢和劣勢:

  • 優勢:fo-dicom 是一個強大且易于使用的 DICOM 庫,具備處理醫學圖像和相關數據的核心功能。它提供了多平臺支持、良好的文檔和示例代碼,并擁有一個活躍的社區。
  • 劣勢:由于 DICOM 標準的復雜性,初學者可能需要一些時間來適應 fo-dicom 的使用方式。另外,某些高級功能可能需要額外的配置或第三方組件的支持。

9. 未來計劃和發展方向:

fo-dicom 的未來計劃包括進一步增強圖像處理功能、優化性能、改進網絡通信和增加對新版 DICOM 標準的支持。通過不斷改進和擴展功能,fo-dicom 將繼續滿足用戶對醫學圖像處理和數據交互的需求。FFz28資訊網——每日最新資訊28at.com

今天先介紹到這里,后續我將持續分享關于fo-dicom庫的使用經驗技巧,歡迎有需要的朋友持續關注。FFz28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-87004-0.htmlFo-dicom,第一個基于.NET Standard 2.0 開發的DICOM開源庫

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: TypeScript 中的 Extends 怎么那么優秀啊?

下一篇: Rust語言實現圖像編碼轉換,支持多種格式

標簽:
  • 熱門焦點
  • K60至尊版狂暴引擎2.0加持:超177萬跑分斬獲性能第一

    Redmi的后性能時代戰略發布會今天下午如期舉辦,在本次發布會上,Redmi公布了多項關于和聯發科的深度合作,以及新機K60 Ultra在軟件和硬件方面的特性,例如:“K60 至尊版,雙芯旗艦
  • 學習JavaScript的10個理由...

    作者 | Simplilearn編譯 | 王瑞平當你決心學習一門語言的時候,很難選擇到底應該學習哪一門,常用的語言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 三萬字盤點 Spring 九大核心基礎功能

    大家好,我是三友~~今天來跟大家聊一聊Spring的9大核心基礎功能。話不多說,先上目錄:圖片友情提示,本文過長,建議收藏,嘿嘿嘿!一、資源管理資源管理是Spring的一個核心的基礎功能,不
  • 2023年,我眼中的字節跳動

    此時此刻(2023年7月),字節跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關注的互聯網公司之一。從2016-17年的抖音強勢崛起,到2018年的&ldquo;頭騰
  • 慕巖炮轟抖音,百合網今何在?

    來源:價值研究所 作者:Hernanderz&ldquo;難道就因為自己的一個產品牛逼了,從客服到總裁,都不愿意正視自己產品和運營上的問題,選擇逃避了嗎?&rdquo;這一番話,出自百合網聯合創
  • 電視息屏休眠仍有網絡上傳 愛奇藝被質疑“薅消費者羊毛”

    記者丨寧曉敏 見習生丨汗青出品丨鰲頭財經(theSankei) 前不久,愛奇藝發布了一份亮眼的一季報,不僅營收和會員營收創造歷史最佳表現,其運營利潤也連續6個月實現增長。自去年年初
  • 三星獲批量產iPhone 15全系屏幕:蘋果史上最驚艷直屏

    按照慣例,蘋果將繼續在今年9月舉辦一年一度的秋季新品發布會,有傳言稱發布會將于9月12日舉行,屆時全新的iPhone 15系列將正式與大家見面,不出意外的話
  • 滴滴違法違規被罰80.26億 共存在16項違法事實

    滴滴違法違規被罰80.26億 存在16項違法事實開始于2121年7月,歷經一年時間,網絡安全審查辦公室對“滴滴出行”網絡安全審查終于有了一個暫時的結束。據“網信
  • 榮耀Magic4 至臻版 首創智慧隱私通話 強勁影音系統

    2022年第一季度臨近尾聲,在該季度內,許多品牌陸續發布自己的最新產品,讓大家從全新的角度來了解當今的手機技術。手機是電子設備中,更新迭代十分迅速的一款產品,基
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久亚洲精品一区二区| 亚洲国产高清一区| 欧美激情久久久久| 欧美日韩激情小视频| 国产精品美女久久久久久久| 国产日韩精品一区| 亚洲国产精品一区二区www在线| 亚洲麻豆视频| 羞羞视频在线观看欧美| 免费成人av| 国产精品第一页第二页第三页| 国产亚洲一区在线| 亚洲美女av黄| 欧美中文字幕在线播放| 欧美大香线蕉线伊人久久国产精品| 欧美三级日韩三级国产三级| 国语精品一区| 一区二区三区欧美成人| 久久精品欧洲| 国产精品hd| 亚洲国产精品女人久久久| 亚洲午夜一二三区视频| 久久影音先锋| 国产精品久在线观看| 在线免费观看视频一区| 亚洲综合色网站| 欧美成人国产一区二区| 国产日韩精品一区二区三区在线| 亚洲黄网站黄| 久久成人精品无人区| 欧美日韩另类在线| 一区二区三区在线观看国产| 这里只有视频精品| 老司机午夜精品| 国产欧美在线观看| 99精品欧美一区二区蜜桃免费| 久久精品国产综合| 欧美午夜大胆人体| 最新亚洲一区| 久久久亚洲国产天美传媒修理工| 欧美三级黄美女| 亚洲激情视频在线观看| 久久福利电影| 国产精一区二区三区| 一区二区三区国产| 欧美大片18| 在线观看日韩av| 欧美中文字幕第一页| 欧美性一区二区| 亚洲精品国精品久久99热一| 久久美女性网| 国产一区二区三区高清播放| 亚洲在线免费观看| 欧美日韩另类国产亚洲欧美一级| 亚洲福利av| 久久久亚洲综合| 国产毛片精品国产一区二区三区| 国产精品99久久99久久久二8| 欧美刺激午夜性久久久久久久| 国模精品一区二区三区色天香| 午夜精品短视频| 国产精品日本欧美一区二区三区| 99热精品在线观看| 欧美激情在线播放| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美中文字幕精品| 国产酒店精品激情| 亚洲一区在线看| 欧美午夜一区二区| 夜夜爽99久久国产综合精品女不卡| 免费av成人在线| 在线观看欧美日韩| 免费观看在线综合色| 在线国产欧美| 老司机免费视频一区二区| 激情久久综艺| 老司机午夜精品| 在线观看精品| 欧美a级一区二区| 亚洲国产精品日韩| 欧美激情中文字幕乱码免费| 亚洲精品激情| 欧美日韩高清在线| 一本色道久久综合一区| 欧美日韩一区二区在线观看| 一本在线高清不卡dvd| 欧美午夜在线一二页| 在线亚洲一区| 国产精品美腿一区在线看| 亚洲欧美资源在线| 国产午夜一区二区三区| 久久嫩草精品久久久精品一| 1204国产成人精品视频| 欧美国产一区二区在线观看 | 国产精品免费观看在线| 亚洲欧美日韩国产一区二区| 国产九九精品| 久久久久久999| 亚洲国产成人av| 免费影视亚洲| 免费欧美视频| 亚洲乱码国产乱码精品精天堂| 欧美日产在线观看| 亚洲影音一区| 国产综合视频在线观看| 欧美freesex交免费视频| 99国内精品久久| 国产精品色婷婷| 久久精品视频免费| 亚洲欧洲日韩综合二区| 欧美三级午夜理伦三级中文幕| 亚洲直播在线一区| 激情丁香综合| 欧美激情中文字幕乱码免费| 亚洲一区二区三区免费视频| 国产专区一区| 欧美另类99xxxxx| 午夜久久影院| 136国产福利精品导航网址| 欧美日韩国产欧美日美国产精品| 亚洲综合国产| 亚洲观看高清完整版在线观看| 欧美日本高清| 欧美一区二区三区免费看| 一区二区三区在线免费播放| 欧美久久久久| 欧美在线日韩| 亚洲人屁股眼子交8| 国产精品日韩久久久久| 美日韩精品免费| 亚洲在线观看视频网站| 在线观看视频日韩| 国产精品porn| 麻豆精品视频在线观看视频| 亚洲婷婷免费| 亚洲高清视频在线| 国产精品天美传媒入口| 免费日韩精品中文字幕视频在线| 亚洲私人影院| 在线观看日韩av电影| 国产精品久久一级| 老司机一区二区| 亚洲一区二区四区| 亚洲国产欧美日韩| 国产日韩精品一区二区浪潮av| 欧美精品九九| 久久这里只有精品视频首页| 亚洲女同精品视频| 亚洲精品美女在线| 国外成人免费视频| 国产精品久久久久国产精品日日| 女人天堂亚洲aⅴ在线观看| 午夜精品av| 亚洲美女av在线播放| 一区在线免费| 国产日韩在线播放| 欧美婷婷在线| 欧美激情亚洲自拍| 久久久久久97三级| 亚洲综合欧美| 99精品视频免费在线观看| 一区二区在线视频| 国产区日韩欧美| 欧美日韩一区二区三区免费| 欧美成人一区二区三区| 久久精品国产99国产精品| 亚洲一区二区三区精品在线观看| 最新国产の精品合集bt伙计| 国产综合在线视频| 国产伦理一区| 欧美三区在线观看| 欧美精品大片| 蜜臀av在线播放一区二区三区| 欧美亚洲视频在线观看| 亚洲天堂av在线免费观看| 日韩亚洲欧美中文三级| 雨宫琴音一区二区在线| 国产亚洲欧美一区在线观看| 国产精品日本精品| 国产精品一二| 国产精品家教| 欧美日韩一区二区在线观看| 欧美一级久久久久久久大片| 亚洲一区激情| 亚洲天天影视| 亚洲私人影院| 亚洲无线观看| 宅男噜噜噜66一区二区| 亚洲毛片在线观看| 亚洲伦理久久| 日韩午夜在线电影| 亚洲精选在线观看| 亚洲精品久久久蜜桃| 亚洲欧洲午夜| 91久久综合| 亚洲国产日韩欧美在线99 | 国产精品免费久久久久久| 欧美日本在线一区| 欧美福利电影在线观看| 免费观看亚洲视频大全| 欧美阿v一级看视频| 欧美成年人网站| 欧美成人精品高清在线播放| 欧美福利精品|