@abasb75/dicom-pixel-decoder
Version:
a powerfull javascript dicom pixel data decoder
36 lines (35 loc) • 1.4 kB
JavaScript
function yrbFullToRgba(pixelData, pixelModule) {
var columns = pixelModule.columns, rows = pixelModule.rows, planarConfiguration = pixelModule.planarConfiguration;
if (!columns || !rows) {
return pixelData;
}
if (pixelData.length !== columns * rows * 3) {
return pixelData;
}
var pixelCounts = rows * columns;
var _pixelData = new Uint8ClampedArray(pixelCounts * 4);
if (planarConfiguration === 1) {
for (var i = 0; i < pixelCounts; i++) {
var y = pixelData[i];
var cb = pixelData[pixelCounts + i];
var cr = pixelData[(pixelCounts * 2) + i];
_pixelData[i * 4] = y + 1.402 * (cr - 128);
_pixelData[i * 4 + 1] = y - 0.34414 * (cb - 128) - 0.71414 * (cr - 128);
_pixelData[i * 4 + 2] = y + 1.772 * (cb - 128);
_pixelData[i * 4 + 3] = 255;
}
}
else {
for (var i = 0; i < pixelCounts; i++) {
var y = pixelData[i * 3];
var cb = pixelData[i * 3 + 1];
var cr = pixelData[i * 3 + 2];
_pixelData[i * 4] = y + 1.402 * (cr - 128);
_pixelData[i * 4 + 1] = y - 0.34414 * (cb - 128) - 0.71414 * (cr - 128);
_pixelData[i * 4 + 2] = y + 1.772 * (cb - 128);
_pixelData[i * 4 + 3] = 255;
}
}
return new Uint8Array(_pixelData);
}
export default yrbFullToRgba;