如何将两张图片拼成一张图片

How to fit two images into one image

我正在做一个自己融合两个DICOM图像的项目。

图片 1 (168x168) 当图像2(512x512)的图像合并时,两个图像根本不匹配。

我认为合并脚本没有问题,但是 如果您认为合并代码有问题,可以提出要求。

图片 2 (512x512)

图片 1 (168x168)

放大完成图片1 (168x168) => 图片1 (512x512)图片

融合结果

图片的红色部分应该与灰色部分相匹配。

仔细看图,可以看到比例略小,上下左右不完全吻合。

问题(我猜的)

  1. 从168变为512时,小数点相乘,小点像素值丢失

  2. 由于512x512图片1没有固定在中心,如果我加大比例不给padding值,会放不下

这是调整代码

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

谢谢你的 nucleaR

我做

  1. ImageOrientationPatient 值是裁剪位置的 XYZ 值
  2. PixelSpacing 这是这个体素的数据值。一个像素的实际大小可以由此计算出来
  1. 在调整图片大小之前,由于pt坐标比较大,所以需要从pt坐标中裁剪出对应的像素点。如何计算裁剪这个像素很重要
  2. 如果裁切像素,则必须裁切168,因为它将以512像素为基础。
Value=pixelSpacingPT* 168 - pixelSpacingCT *512  

cutPixel=Value/pixelSpacingPT;

要裁剪的像素现在是 20 像素宽 我发现它的高度是 20 像素。