PixelData - не изображение. PixelData - это необработанная информация об изображении. По моему опыту, большинство файлов DICOM будут использовать jpeg2000 изображения. Чтобы преобразовать их в нечто, используемое PictureBox, вам нужно будет преобразовать его в изображение. Для сырых типов монохромных, вы можете сделать это в System.Drawing.Bitmap, используя следующую конвертацию:
openDicom.Image.PixelData obraz = new openDicom.Image.PixelData(file.DataSet);
Bitmap img = new System.Drawing.Bitmap(obraz.Columns, obraz.Rows, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
int resampleval = (int)Math.Pow(2, (obraz.BitsAllocated - obraz.BitsStored));
int pxCount = 0;
int temp = 0;
try
{
unsafe
{
BitmapData bd = img.LockBits(new Rectangle(0, 0, obraz.Columns, obraz.Rows), ImageLockMode.WriteOnly, img.PixelFormat);
for (int r = 0; r < bd.Height; r++)
{
byte* row = (byte*)bd.Scan0 + (r * bd.Stride);
for (int c = 0; c < bd.Width; c++)
{
temp = PixelData16[pxCount]/resampleval;
while (temp > 255)
temp = temp/resampleval;
row[(c * 3)] = (byte)temp;
row[(c * 3) + 1] = (byte)temp;
row[(c * 3) + 2] = (byte)temp;
pxCount++;
}
}
img.UnlockBits(bd);
}
}
catch
{
img = new Bitmap(10, 10);
}
pictureBox1.Image = img;
pictureBox1.Show();
Для других типов изображений, вам нужно сделать аналогичное преобразование с соответствующими значениями. Это преобразование строго для монохромных типов и только после того, как они были преобразованы из jpeg2000 в jpeg. Выполнение этой операции на изображении jpeg2000 даст вам ровно половину изображения, заполненного статикой, а другая половина полностью пуста.
Каким образом это не работает? Получаете ли вы какие-то исключения (если да, что они говорят)? –
Попробуйте вместо объекта изображения. Image.FromFile очень удобен для этого. – 2010-09-06 19:34:15
есть ошибка: «Невозможно неявно преобразовать тип« openDicom.Image.PixelData »в« System.Drawing.Image »» – luc