我正在做一個自己融合兩個 DICOM 影像的專案。
影像 1 (168x168) 當影像 2 (512x512) 的影像組合在一起時,兩個影像根本不匹配。
我不認為合并腳本有問題,但是如果您認為合并代碼有問題,您可以要求它。
圖片 2 (512x512)

圖片 1 (168x168)

升格完成 圖1 (168x168) => 圖1 (512x512)Image

融合結果

圖片的紅色部分應與灰色部分相匹配。
仔細看圖片,可以看到比例尺略小,上下左右不完全匹配。
問題(我猜)
從168改為512時,小數點相乘,小點的像素值丟失。
由于 512x512 Image 1 沒有固定在中心,如果我增加比例并且不給出填充值,它將不適合。
這是調整大小的代碼
public static Bitmap resizeImage(Bitmap image, int width, int height)
{
var destinationRect = new Rectangle(0, 0, width, height);
var destinationImage = new Bitmap(width, height);
destinationImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);
using (var graphics = Graphics.FromImage(destinationImage))
{
graphics.CompositingMode = CompositingMode.SourceCopy;
graphics.CompositingQuality = CompositingQuality.HighQuality;
using (var wrapMode = new ImageAttributes())
{
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
graphics.DrawImage(image, destinationRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode);
}
}
return destinationImage;
}
圖 2

圖 1

uj5u.com熱心網友回復:
謝謝你的nucleR
我做

- ImageOrientationPatient 值是裁剪位置的 XYZ 值
- PixelSpacing 這是這個體素的資料值。由此可以計算出一個像素的實際大小。
- 在調整影像大小之前,由于 PT 坐標較大,因此必須從 pt 坐標中切出相應的像素。如何計算裁剪此像素很重要
- 如果您剪切像素,則必須剪切 168,因為它將基于 512 像素。
Value=pixelSpacingPT* 168 - pixelSpacingCT *512
cutPixel=Value/pixelSpacingPT;
要裁剪的像素現在是 20 像素寬,我發現它是 20 像素高。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/387431.html
上一篇:如何使用函式回傳C中的二維陣列?
下一篇:如何在資料庫中找到真值?
