@abasb75/dicom-pixel-decoder
Version:
a powerfull javascript dicom pixel data decoder
29 lines (28 loc) • 1.13 kB
JavaScript
function ybrFull422ToRgba(pixelData, pixelModule) {
var columns = pixelModule.columns, rows = pixelModule.rows;
if (!columns || !rows) {
return pixelData;
}
var pixelCounts = rows * columns;
if (pixelData.length !== 2 * pixelCounts) {
return pixelData;
}
var _pixelData = new Uint8ClampedArray(pixelCounts * 4);
var ybrIndex = 0;
for (var i = 0; i < pixelCounts; i += 2) {
var y1 = pixelData[ybrIndex++];
var y2 = pixelData[ybrIndex++];
var cb = pixelData[ybrIndex++];
var cr = pixelData[ybrIndex++];
_pixelData[i * 4] = y1 + 1.402 * (cr - 128);
_pixelData[i * 4 + 1] = y1 - 0.34414 * (cb - 128) - 0.71414 * (cr - 128);
_pixelData[i * 4 + 2] = y1 + 1.772 * (cb - 128);
_pixelData[i * 4 + 3] = 255;
_pixelData[i * 4 + 4] = y2 + 1.402 * (cr - 128);
_pixelData[i * 4 + 5] = y2 - 0.34414 * (cb - 128) - 0.71414 * (cr - 128);
_pixelData[i * 4 + 6] = y2 + 1.772 * (cb - 128);
_pixelData[i * 4 + 7] = 255;
}
return new Uint16Array(_pixelData);
}
export default ybrFull422ToRgba;