2015年8月11日火曜日

GDCM 覚書2 YBR_FULL_422

GDCM memo 2

YBR_FULL_422の画像

  1. string photometricInterpretation = ds.GetDataElement(new gdcm.Tag(0x00280004)).GetValue().toString();
  2. byte* pBmpData = (byte*)_bmpData.Scan0;
  3. if (photometricInterpretation == "YBR_FULL_422")
  4. {
  5. fixed (byte* pData = _pixelData)
  6. {
  7. byte* ybr = pData;
  8. for (int y = 0; y < _rows; y++)
  9. {
  10. for (int x = 0; x < _columns; x++)
  11. {
  12. int Y = ybr[0] - 16;
  13. int Cb = ybr[1] - 128;
  14. int Cr = ybr[2] - 128;
  15. int r = ((298 * Y + 409 * Cr + 128) / 256);
  16. int g = ((298 * Y - 100 * Cb - 208 * Cr + 128) / 256);
  17. int b = ((298 * Y + 516 * Cb + 128) / 256);
  18. pBmpData[2] = (byte)(r < 0 ? 0 : (r > 255 ? 255 : r));
  19. pBmpData[1] = (byte)(g < 0 ? 0 : (g > 255 ? 255 : g));
  20. pBmpData[0] = (byte)(b < 0 ? 0 : (b > 255 ? 255 : b));
  21. pBmpData += 3;
  22. ybr += 3;
  23. }
  24. pBmpData += padding;
  25. }
  26. }
  27. }

0 件のコメント :

コメントを投稿