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

當(dāng)前位置:首頁(yè) > 科技  > 軟件

Fo-dicom,第一個(gè)基于.NET Standard 2.0 開(kāi)發(fā)的DICOM開(kāi)源庫(kù)

來(lái)源: 責(zé)編: 時(shí)間:2024-05-07 09:11:53 189觀看
導(dǎo)讀1. 簡(jiǎn)介:fo-dicom是一個(gè)基于C#開(kāi)發(fā)的庫(kù),用于處理DICOM(Digital Imaging and Communications in Medicine)格式的數(shù)據(jù)。DICOM是一種用于醫(yī)學(xué)影像和相關(guān)信息的標(biāo)準(zhǔn)格式,廣泛應(yīng)用于醫(yī)學(xué)領(lǐng)域。fo-dicom提供了多平臺(tái)支持,可在 Wi

ITd28資訊網(wǎng)——每日最新資訊28at.com

1. 簡(jiǎn)介:

fo-dicom是一個(gè)基于C#開(kāi)發(fā)的庫(kù),用于處理DICOM(Digital Imaging and Communications in Medicine)格式的數(shù)據(jù)。DICOM是一種用于醫(yī)學(xué)影像和相關(guān)信息的標(biāo)準(zhǔn)格式,廣泛應(yīng)用于醫(yī)學(xué)領(lǐng)域。fo-dicom提供了多平臺(tái)支持,可在 Windows、Linux 和 macOS 等操作系統(tǒng)上運(yùn)行。ITd28資訊網(wǎng)——每日最新資訊28at.com

fo-dicom庫(kù)的設(shè)計(jì)理念是提供一個(gè)方便、易用、功能強(qiáng)大的工具,用于處理、讀取、寫(xiě)入和修改DICOM文件。該庫(kù)提供了豐富的API,支持對(duì)DICOM文件的標(biāo)簽進(jìn)行讀取和設(shè)置,支持對(duì)DICOM文件的編碼和解碼,支持對(duì)DICOM文件的傳輸和存儲(chǔ)。ITd28資訊網(wǎng)——每日最新資訊28at.com

fo-dicom庫(kù)還提供了對(duì)DICOM消息流的封裝,使得開(kāi)發(fā)者可以方便地實(shí)現(xiàn)自定義的DICOM服務(wù)。該庫(kù)還支持對(duì)網(wǎng)絡(luò)底層的封裝,使得開(kāi)發(fā)者可以輕松地實(shí)現(xiàn)基于網(wǎng)絡(luò)的DICOM通信。ITd28資訊網(wǎng)——每日最新資訊28at.com

開(kāi)源庫(kù)地址:https://github.com/fo-dicom/fo-dicom。ITd28資訊網(wǎng)——每日最新資訊28at.com

2. 開(kāi)發(fā)的背景和目的:

fo-dicom庫(kù)的產(chǎn)生是為了解決醫(yī)學(xué)圖像處理和DICOM數(shù)據(jù)交換的需求。在醫(yī)學(xué)領(lǐng)域,DICOM(Digital Imaging and Communications in Medicine)是一種用于存儲(chǔ)、傳輸和共享醫(yī)學(xué)影像和相關(guān)信息的標(biāo)準(zhǔn)。由于醫(yī)學(xué)影像數(shù)據(jù)的特殊性和復(fù)雜性,需要一個(gè)專門(mén)的庫(kù)來(lái)處理DICOM數(shù)據(jù),并提供方便的接口和工具。ITd28資訊網(wǎng)——每日最新資訊28at.com

背景上來(lái)說(shuō),DICOM標(biāo)準(zhǔn)的出現(xiàn)是為了解決各種醫(yī)學(xué)設(shè)備之間的互操作性問(wèn)題。在過(guò)去,不同廠商的醫(yī)學(xué)設(shè)備使用自己的私有格式來(lái)存儲(chǔ)和傳輸影像數(shù)據(jù),這導(dǎo)致了數(shù)據(jù)共享和集成的困難。DICOM標(biāo)準(zhǔn)的制定使得不同設(shè)備可以使用統(tǒng)一的格式和通信協(xié)議,從而實(shí)現(xiàn)醫(yī)學(xué)影像的無(wú)縫交流和協(xié)作。ITd28資訊網(wǎng)——每日最新資訊28at.com

fo-dicom作為一個(gè)開(kāi)源的DICOM庫(kù),旨在提供一個(gè)易于使用且功能強(qiáng)大的工具,使得開(kāi)發(fā)者能夠處理醫(yī)學(xué)圖像和相關(guān)數(shù)據(jù)。它基于DICOM標(biāo)準(zhǔn),提供了讀取、創(chuàng)建、修改和存儲(chǔ)DICOM數(shù)據(jù)的功能,同時(shí)支持醫(yī)學(xué)圖像的加載、處理和保存。此外,fo-dicom還具備與遠(yuǎn)程PACS(Picture Archiving and Communication System)或其他DICOM節(jié)點(diǎn)的網(wǎng)絡(luò)通信能力,以及查詢和檢索功能,方便用戶根據(jù)條件查詢和獲取DICOM實(shí)例。ITd28資訊網(wǎng)——每日最新資訊28at.com

3.主要特點(diǎn)和安裝方式

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

4. 主要功能:

  • DICOM 數(shù)據(jù)處理:fo-dicom 支持讀取、創(chuàng)建、修改和存儲(chǔ) DICOM 數(shù)據(jù)。用戶可以輕松訪問(wèn)和操作 DICOM 文件和數(shù)據(jù)集。
  • 圖像處理:該庫(kù)提供了對(duì)醫(yī)學(xué)圖像的加載、處理和保存功能。用戶可以進(jìn)行像素級(jí)別的操作、圖像增強(qiáng)、格式轉(zhuǎn)換等操作。
  • DICOM 網(wǎng)絡(luò)通信:fo-dicom 具備與遠(yuǎn)程 PACS 或其他 DICOM 節(jié)點(diǎn)的網(wǎng)絡(luò)通信能力,使用戶可以發(fā)送和接收 DICOM 消息。
  • 查詢和檢索:fo-dicom 實(shí)現(xiàn)了查詢和檢索功能,用戶可以根據(jù)條件進(jìn)行 DICOM 實(shí)例的查詢和獲取。這有助于快速訪問(wèn)所需的醫(yī)學(xué)圖像和相關(guān)數(shù)據(jù)。

5. 使用說(shuō)明:

圖像渲染配置

開(kāi)箱即用的 fo-dicom 默認(rèn)為內(nèi)部類FellowOakDicom.Imaging.IImage 樣式的圖像渲染。若要切換到桌面樣式或 ImageSharp 樣式的圖像呈現(xiàn),首先必須添加所需的 nuget 包,然后調(diào)用:ITd28資訊網(wǎng)——每日最新資訊28at.com

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

或:ITd28資訊網(wǎng)——每日最新資訊28at.com

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

然后,在渲染時(shí),可以通過(guò)以下方式將 IImage 強(qiáng)制轉(zhuǎn)換為類型。ITd28資訊網(wǎng)——每日最新資訊28at.com

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

或:ITd28資訊網(wǎng)——每日最新資訊28at.com

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

日志記錄配置

Fellow Oak DICOM 使用 ,因此如果您已經(jīng)在使用它,則 Fellow Oak DICOM 日志記錄將自動(dòng)顯示。
Microsoft.Extensions.Logging
ITd28資訊網(wǎng)——每日最新資訊28at.com

過(guò)去,F(xiàn)ellow Oak DICOM 有一個(gè)用于日志記錄的自定義抽象:ILogger 和 ILogManager。 出于向后兼容性的目的,這仍然受支持,但不建議用于新應(yīng)用程序。ITd28資訊網(wǎng)——每日最新資訊28at.com

services.AddLogManager<MyLogManager>();

其中 MyLogManager 如下所示:ITd28資訊網(wǎng)——每日最新資訊28at.com

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

示例應(yīng)用程序

這里有許多使用 fo-dicom 的簡(jiǎn)單示例應(yīng)用程序,它們位于單獨(dú)的存儲(chǔ)庫(kù)中。這些還包括示例 以前包含在 VS 解決方案的“示例”子文件夾中。ITd28資訊網(wǎng)——每日最新資訊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));}

具有高級(jí) DICOM 客戶端連接的 C-ECHO:手動(dòng)控制 TCP 連接和 DICOM 關(guān)聯(lián)。ITd28資訊網(wǎng)——每日最新資訊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. 社區(qū)和生態(tài):

fo-dicom 有一個(gè)活躍的社區(qū),包括眾多貢獻(xiàn)者和維護(hù)者。它在 GitHub 上有一個(gè)開(kāi)放的倉(cāng)庫(kù),用戶可以在其中提交問(wèn)題、提出建議和貢獻(xiàn)代碼。fo-dicom 的更新頻率較高,并得到了廣泛的應(yīng)用和認(rèn)可。ITd28資訊網(wǎng)——每日最新資訊28at.com

為了方便新手學(xué)習(xí)官方構(gòu)建了樣例庫(kù):https://github.com/fo-dicom/fo-dicom-samples。ITd28資訊網(wǎng)——每日最新資訊28at.com

同時(shí)支持多個(gè)平臺(tái)的案例開(kāi)發(fā)開(kāi)發(fā):ITd28資訊網(wǎng)——每日最新資訊28at.com

8. 優(yōu)勢(shì)和劣勢(shì):

  • 優(yōu)勢(shì):fo-dicom 是一個(gè)強(qiáng)大且易于使用的 DICOM 庫(kù),具備處理醫(yī)學(xué)圖像和相關(guān)數(shù)據(jù)的核心功能。它提供了多平臺(tái)支持、良好的文檔和示例代碼,并擁有一個(gè)活躍的社區(qū)。
  • 劣勢(shì):由于 DICOM 標(biāo)準(zhǔn)的復(fù)雜性,初學(xué)者可能需要一些時(shí)間來(lái)適應(yīng) fo-dicom 的使用方式。另外,某些高級(jí)功能可能需要額外的配置或第三方組件的支持。

9. 未來(lái)計(jì)劃和發(fā)展方向:

fo-dicom 的未來(lái)計(jì)劃包括進(jìn)一步增強(qiáng)圖像處理功能、優(yōu)化性能、改進(jìn)網(wǎng)絡(luò)通信和增加對(duì)新版 DICOM 標(biāo)準(zhǔn)的支持。通過(guò)不斷改進(jìn)和擴(kuò)展功能,fo-dicom 將繼續(xù)滿足用戶對(duì)醫(yī)學(xué)圖像處理和數(shù)據(jù)交互的需求。ITd28資訊網(wǎng)——每日最新資訊28at.com

今天先介紹到這里,后續(xù)我將持續(xù)分享關(guān)于fo-dicom庫(kù)的使用經(jīng)驗(yàn)技巧,歡迎有需要的朋友持續(xù)關(guān)注。ITd28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-87004-0.htmlFo-dicom,第一個(gè)基于.NET Standard 2.0 開(kāi)發(fā)的DICOM開(kāi)源庫(kù)

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: TypeScript 中的 Extends 怎么那么優(yōu)秀?。?/a>

下一篇: Rust語(yǔ)言實(shí)現(xiàn)圖像編碼轉(zhuǎn)換,支持多種格式

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • K60至尊版剛預(yù)熱 一加Ace2 Pro正面硬剛

    Redmi這邊剛?cè)缁鹑巛钡男麄髁薑60 Ultra的各種技術(shù)和硬件配置,作為競(jìng)品的一加也坐不住了。一加中國(guó)區(qū)總裁李杰發(fā)布了兩條微博,表示在自家的一加Ace2上早就已經(jīng)采用了和PixelWo
  • 小米官宣:2023年上半年出貨量中國(guó)第一!

    今日早間,小米電視官方微博帶來(lái)消息,稱2023年小米電視上半年出貨量達(dá)到了中國(guó)第一,同時(shí)還表示小米電視的巨屏風(fēng)暴即將開(kāi)始。“公布一個(gè)好消息2023年#小米電視上半年出貨量中國(guó)
  • 一篇聊聊Go錯(cuò)誤封裝機(jī)制

    %w 是用于錯(cuò)誤包裝(Error Wrapping)的格式化動(dòng)詞。它是用于 fmt.Errorf 和 fmt.Sprintf 函數(shù)中的一個(gè)特殊格式化動(dòng)詞,用于將一個(gè)錯(cuò)誤(或其他可打印的值)包裝在一個(gè)新的錯(cuò)誤中。使
  • 深度探索 Elasticsearch 8.X:function_score 參數(shù)解讀與實(shí)戰(zhàn)案例分析

    在 Elasticsearch 中,function_score 可以讓我們?cè)诓樵兊耐瑫r(shí)對(duì)搜索結(jié)果進(jìn)行自定義評(píng)分。function_score 提供了一系列的參數(shù)和函數(shù)讓我們可以根據(jù)需求靈活地進(jìn)行設(shè)置。近期
  • 騰訊VS網(wǎng)易,最卷游戲暑期檔,誰(shuí)能笑到最后?

    作者:無(wú)銹缽來(lái)源:財(cái)經(jīng)無(wú)忌7月16日晚,上海1862時(shí)尚藝術(shù)中心。伴隨著幻象的精準(zhǔn)命中,碩大的熒幕之上,比分被定格在了14:12,被寄予厚望的EDG戰(zhàn)隊(duì)以絕對(duì)的優(yōu)勢(shì)戰(zhàn)勝了BLG戰(zhàn)隊(duì),拿下了總決
  • 阿里瓴羊One推出背后,零售企業(yè)迎數(shù)字化新解

    作者:劉曠近年來(lái)隨著數(shù)字經(jīng)濟(jì)的高速發(fā)展,各式各樣的SaaS應(yīng)用服務(wù)更是層出不窮,但本質(zhì)上SaaS大多局限于單一業(yè)務(wù)流層面,對(duì)用戶核心關(guān)切的增長(zhǎng)問(wèn)題等則沒(méi)有提供更好的解法。在Saa
  • 認(rèn)真聊聊東方甄選:如何告別低垂的果實(shí)

    來(lái)源:山核桃作者:財(cái)經(jīng)無(wú)忌爆火一年后,俞敏洪和他的東方甄選依舊是頗受外界關(guān)心的&ldquo;網(wǎng)紅&rdquo;。7月5日至9日,為期5天的東方甄選&ldquo;甘肅行&rdquo;首次在自有App內(nèi)直播,
  • 信通院:小米、華為等11家應(yīng)用商店基本完成APP簽名及驗(yàn)簽工作

    中國(guó)信通院表示,目前,小米、華為、OPPO、vivo、360手機(jī)助手、百度手機(jī)助手、應(yīng)用寶、豌豆莢和努比亞等9家應(yīng)用商店,以及抖音和快手2家新型應(yīng)用分發(fā)平
  • 英特爾Xe HPG游戲顯卡:擁有512EU,單風(fēng)扇版本

    據(jù)10 月 30 日外媒 TheVerge 消息報(bào)道,英特爾 Xe HPG Arc Alchemist 的正面實(shí)被曝光,不僅擁有 512 EU 版顯卡,還擁有 128EU 的單風(fēng)扇版本。另外,這款顯卡 PCB
Top 主站蜘蛛池模板: 正阳县| 方山县| 海林市| 周至县| 和田县| 新巴尔虎右旗| 房产| 宣汉县| 渭南市| 高平市| 无为县| 渝北区| 平山县| 昌图县| 忻州市| 松阳县| 房山区| 肥西县| 肇庆市| 隆德县| 盐池县| 阜阳市| 日土县| 宣威市| 荆州市| 当阳市| 昆明市| 南澳县| 大理市| 东方市| 莫力| 周宁县| 哈密市| 西丰县| 宁强县| 思南县| 德江县| 平南县| 泰兴市| 静海县| 绥宁县|