我正在尝试使用Cornerstone DICOM解析器(https://github.com/cornerstonejs/dicomParser)提取像素数据,以使用javascript和HTML5 canvas进行CT扫描。 我需要能够减小返回的像素数据的大小。 用于hermite-resize算法: https://github.com/viliusle/Hermite-resize
请参阅我的以下概念证明,其中显示了上腹部的轴向切片: http://castlemountain.dk/dicomParser/index2.html
如您所见,生成了两种类型的压缩图像(图像2和图像3),其中图像2显然比图像3更为粗糙(尤其是在看肋骨时)。我使用相同的压缩算法,但是从绘制未压缩的像素数据(图像1)获取像素数据时,图像3的图像质量更好,我似乎无法弄清楚为什么。 HTML5画布相关?
示例如下:
首先,我提取512x512 px CT图像的CT像素数据,随后将其转换为具有CT窗口/级别(方法convertToGreylevel)的0-255灰度值。 然后,此灰度像素值数组用于为HMLT5 canvas生成imageData对象(imgData),并显示为未压缩的图像(图像1):
ctx.putImageData(imgData,0,0);
下一个功能
pixelData2 = resample_hermite(pixelData[slices], 512, 512,
Math.round(512/compression2), Math.round(512/compression2));
用于生成压缩的像素数据(256x256 px),该像素数据用于生成显示的imageData对象(图2):
ctx.putImageData(imgData2,512,0);
之后
var imgInput = ctx.getImageData(0, 0, 512, 512);
用于从绘制到画布的第一个512x512图像中获取imageData。 提取画布中的pixeldata并将其用于生成一个pixeldata数组,并使用以下格式对其进行压缩:
var outputData = resample_hermite(inputData, 512, 512,Math.round(512/compression2), Math.round(512/compression2));
所得的像素数据数组(256x256像素)用于生成如图所示的HMTL5图像对象(图像3):
ctx.putImageData(img2, 512, Math.round(512/compression2));
图像2绝对比压缩图像3更粗糙(请参见白色肋骨)。 谁能指出我为什么的方向?
最诚挚的问候
答案 0 :(得分:0)
看起来您正在使用旧的Hermite-resize lib版本,您可以对“ 0.5”进行操作,但是原始的lib没有类似的功能。
修复了resample_hermite函数(基本上删除了0.5,但是我建议使用来自github的最新代码)后,结果要好得多。