C#使用Matrix類對Dicom圖像的放縮

C#使用Matrix類對Dicom圖像的放縮,使用Matrix?

1.同時操作水平、垂直同時放縮

// 創建一個 Matrix 對象
Matrix m_Matrix = new Matrix();//放縮參數
float inputZoom=1.2f;
m_Matrix.Scale(inputZoom, inputZoom, MatrixOrder.Append);

2.操作水平(X軸)放縮,垂直縮放因子為 1f

// 創建一個 Matrix 對象
Matrix m_Matrix = new Matrix();//放縮參數
float inputZoom=1.2f;
m_Matrix.Scale(inputZoom, 1f, MatrixOrder.Append);

3.操作垂直(Y軸)放縮,水平縮放因子為 1f

// 創建一個 Matrix 對象
Matrix m_Matrix = new Matrix();//放縮參數
float inputZoom=1.2f;
m_Matrix.Scale(1f, inputZoom, MatrixOrder.Append);

MatrixOrder.Append的注釋:

//
// 摘要:
// ? ? 指定矩陣變換操作的順序。
public enum MatrixOrder
{//// 摘要:// ? ? 在舊操作前應用新操作。Prepend,//// 摘要:// ? ? 在舊操作后應用新操作。Append
}

?

在 C# 中,可以使用 System.Drawing 命名空間中的 Matrix 類來對 Dicom 圖像進行縮放操作。

以下是一個簡化的示例,說明如何使用 Matrix 類對 Dicom 圖像進行垂直方向的縮放:

首先,確保已經安裝了處理 Dicom 文件的庫,例如 fo-dicom(https://github.com/fo-dicom)。接下來,我們可以使用如下步驟來實現圖像的縮放:

  1. 加載 DICOM 圖像數據。
  2. 將 DICOM 圖像轉換為 .NET 的?Bitmap?對象。
  3. 創建一個?Matrix?對象,并應用所需的縮放因子。
  4. 使用?Graphics?類和?DrawImage?方法將縮放后的圖像繪制到新的 Bitmap 上。
  5. 保存新生成的 Bitmap 到磁盤。

下面是一個具體的代碼示例:

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using Dicom;
using Dicom.Imaging;public class Program
{public static void Main(){// Load the DICOM imagevar dicomFile = DicomFile.Open("path/to/dicom/file.dcm");var image = new GrayscaleRenderOptions().CreateImage(dicomFile.Dataset);// Convert the DICOM image to a Bitmap objectBitmap bitmap = image.ToBitmap();// Create a Matrix for scaling only in the vertical directionfloat inputZoom = ...; // 輸入的縮放比例Matrix scaleMatrix = new Matrix();scaleMatrix.Scale(1f, (float)inputZoom, MatrixOrder.Append);// Create a new Bitmap with the desired dimensions after scalingint newWidth = bitmap.Width;int newHeight = (int)(bitmap.Height * inputZoom);Bitmap scaledBitmap = new Bitmap(newWidth, newHeight);using (Graphics g = Graphics.FromImage(scaledBitmap)){g.InterpolationMode = InterpolationMode.HighQualityBicubic;g.DrawImage(bitmap, new Rectangle(0, 0, newWidth, newHeight), 0, 0, bitmap.Width, bitmap.Height, GraphicsUnit.Pixel, scaleMatrix);}// Save the scaled Bitmap to diskscaledBitmap.Save("path/to/output/scaled_image.png", ImageFormat.Png);}
}

這個示例中,我們首先加載了一個 Dicom 文件并將其轉換為 GrayscaleRenderOptions 類型的圖像對象。然后,我們將該圖像轉換為一個 .NET Bitmap 對象。接著,我們創建一個 Matrix 對象并設置垂直方向的縮放因子。

之后,我們創建一個新的 Bitmap 對象來存儲縮放后的圖像,并使用 Graphics 類和 DrawImage 方法將原始圖像繪制到新 Bitmap 上。

最后,我們將縮放后的圖像保存到磁盤。

請注意,這只是一個基礎示例,實際項目中可能需要考慮更多的細節,如錯誤處理、性能優化等。

?

其他操作參考:

C#使用Matrix類對Dicom圖像的旋轉、平移、翻轉_matrix圍繞圖像中心旋轉_wangnaisheng的博客-CSDN博客

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213468.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213468.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213468.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端使用插件預覽pdf、docx、xlsx、pptx格式文件

PDF預覽 H5頁面pdf預覽 插件:pdfh5 版本:“pdfh5”: “^1.4.7” npm install pdfh5 import PdfH5 from "pdfh5"; import "pdfh5/css/pdfh5.css";// methods this.$nextTick(() > {this.pdfH5 new PdfH5("#pdf", {pd…

【算法系列篇】遞歸、搜索和回溯(二)

文章目錄 前言1. 兩兩交換鏈表中的節點1.1 題目要求1.2 做題思路1.3 代碼實現 2. Pow(X,N)2.1 題目要求2.2 做題思路2.3 代碼實現 3. 計算布爾二叉樹的值3.1 題目要求3.2 做題思路3.3 代碼實現 4. 求根節點到葉結點數字之和4.1 題目要求4.2 做題思路4.3 代碼實現 前言 前面為大…

計算機畢業設計springboot+ssm停車場車位預約系統java

管理員不可以注冊賬號 停車位包括車位所在樓層、車位編號、車位類型(全時間開放/高峰期開放)、預定狀態等 用戶預約時要求支付預約時間段的停車費用 違規行為:1.停車超過預約時間段 2.預約未使用 于系統的基本要求 (1)功能要求&am…

6G來襲,真的有必要嗎?

6G來襲,6G標準將在2025年完成制定,2030年商用。當5G都還沒玩明白的時候,6G又來了。 這次6G又提出了三個全新高大上場景,感知通信、人工智能通信、天地一體泛在物聯,精英們還說,未來要連接很多機器人、元宇宙…

PHP基礎 - 循環與條件語句

循環語句 1)for循環: 重復執行一個代碼塊指定的次數。 for ($i = 0; $i < 5; $i++) { // 初始化 $i 為 0,每次循環后將 $i 值增加 1,當 $i 小于 5 時執行循環echo "The number is: $i \n"; // 輸出當前 $i 的值并換行 }// 循環輸出結果為: // The number …

mysql字段設計規范:使用unsigned(無符號的)存儲非負值

如果一個字段存儲的是數值&#xff0c;并且是非負數&#xff0c;要設置為unsigned&#xff08;無符號的&#xff09;。 例如&#xff1a; 備注&#xff1a;對于類型是 FLOAT、 DOUBLE和 DECIMAL的&#xff0c;UNSIGNED屬性已經廢棄了&#xff0c;可能在mysql的未來某個版本去…

mysql分別在windows和linux下的備份策略

嗟乎&#xff01; 一、概述 mysql數據庫該怎么備份呢&#xff1f; 數據庫備份有幾個概念&#xff1a;全量備份、增量備份、差異備份。當然啦&#xff0c;數據庫備份又有冷備份和熱備份&#xff0c;即物理備份和邏輯備份之分。冷備份就是將mysql停了&#xff0c;然后直接拷貝…

Python入門第2篇

pip包管理器 包管理器類似.NET下的nuget&#xff0c;主要用于管理引用依賴項。 安裝Python的時候&#xff0c;已經默認安裝了pip包管理器&#xff0c;因此無需單獨安裝 cmd&#xff0c;輸入&#xff1a;pip --version 顯示pip版本號信息&#xff0c;即代表pip安裝成功&…

前端知識筆記(四十二)———http和https詳細解析

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是一種用于在計算機網絡中傳輸超文本的協議。它是一個客戶端-服務器協議&#xff0c;用于從 Web 服務器傳輸超文本到本地瀏覽器。HTTP 使用 TCP/IP 協議作為底層傳輸協議&#xff0c;并使用默認端口號80。 HTTPS&…

8-tornado中模板的使用(通過字符串返回、通過模板Template返回、通過模板render返回)、模板案例

1 Template 1.1 通過字符串返回 import tornado class IndexHandler(web.RequestHandler):def get(self):arg Templateself.finish(f<h1>Hello {arg}!!</h1>)1.2 通過模板Template返回 tornado.template 一個簡單的模板系統&#xff0c;將模板編譯為Python代碼。…

c 一,二,三維數組的定義和賦值

1. 定義數組必須指定數組的大小&#xff0c;也就是用多少存儲空間來存儲此數組 2.定義數組必須用數組的標準格式定義&#xff1a;數組名下標的形式 3.只有字符串可以用指針來定義 4.可以把c 中一切數和struct 理解為char 數組 比如int 就是4字節的char數組 #include <…

編程語言的演進歷程與未來發展趨勢

第一代 編程語言的發展歷程起源于早期的機器語言階段&#xff0c;這是一種由二進制代碼構成的計算機能夠直接解讀并執行的語言。然而&#xff0c;鑒于其過于復雜且難以理解&#xff0c;故這一時代的語言并不常為人類所采納。 第二代 緊接著產生的第二代語言旨在簡化編程過程…

1001 害死人不償命的(3n+1)猜想

卡拉茲(Callatz)猜想&#xff1a; 對任何一個正整數 n&#xff0c;如果它是偶數&#xff0c;那么把它砍掉一半&#xff1b;如果它是奇數&#xff0c;那么把 (3n1) 砍掉一半。這樣一直反復砍下去&#xff0c;最后一定在某一步得到 n1。卡拉茲在 1950 年的世界數學家大會上公布了…

C++ //習題2.5 請寫出下列表達式的值。

C程序設計 &#xff08;第三版&#xff09; 譚浩強 習題2.5 習題2.5 請寫出下列表達式的值。 (1) 3.5 * 3 2 * 7 - ‘a’ (2) 26 / 3 34 % 3 2.5 (3) 45 / 2 (int)3.14159 / 2 (4) a b (c a 6) 設a的初值為3 (5) a 3 * 5, a b 3 * 2 (6) (int)(a 6.5) % 2 …

UI自動化測試工具的定義及重要性

UI自動化測試工具在現代軟件開發中起著不可或缺的作用。它們能夠提高測試效率、減少人為錯誤、提供全面的測試覆蓋&#xff0c;并支持持續集成。通過有效使用UI自動化測試工具&#xff0c;開發團隊可以提高軟件質量&#xff0c;提供更可靠的應用程序&#xff0c;滿足用戶的需求…

C語言之數組精講(2)

目錄 數組的復制 輸入數組元素的值 對數組的元素進行倒序排列 使用數組進行成績處理 對象式宏 數組元素的最大值和最小值 賦值表達式的判斷 數組的元素個數 結語 數組的復制 我們把數組中的元素全部復制到另一個數組中。 #include<stdio.h>int main() {int i;int…

SwinIR: Image Restoration Using Swin Transformer

SwinIR 簡介 論文地址&#xff1a;SwinIR: Image Restoration Using Swin Transformer 代碼&#xff1a;SwinIR ? 本文提出了一個基于swin transformer的圖像超分模型swinIR。其中SwinIR分為三部分&#xff1a;淺層特征提取、深層特征提取和高質量圖像重建模塊。 現階段問…

WordPress如何通過header給頁面發送原生HTTP頭

在WordPress中&#xff0c;你可以使用header() 函數來發送原生HTTP頭。這個函數通常在主題文件&#xff08;例如header.php&#xff09;或者插件中使用。以下是一個簡單的例子&#xff0c;演示如何在WordPress中使用header() 函數發送原生HTTP頭&#xff1a; <?php // 在主…

19.java程序設計-基于SpringBoot的博客管理系統的設計與實現

摘要 隨著信息技術的迅速發展&#xff0c;博客作為一種重要的信息傳播和交流工具&#xff0c;逐漸在互聯網上占據重要地位。為了滿足用戶對個性化博客管理的需求&#xff0c;本研究設計并實現了一種基于Spring Boot框架的博客管理系統。 本系統通過采用前后端分離的架構&…

【算法題】密鑰格式化 (js)

!](https://img-blog.csdnimg.cn/direct/bf9a3d781a8043c997593260c0a8306f.png) 第一部分的字符可以少于… const str "5F3Z-2e-9w"; const str1 "2-5g-3-J"; function solution(num, str) {const arr str.split("-");const head arr[0];…