{
  "id": 246496,
  "title": "GDCM error while loading dicom images in  dataloader in fastai",
  "url": "/competitions/siim-covid19-detection/discussion/246496",
  "author_name": "",
  "post_date": "2021-06-15T14:08:40.376896400Z",
  "votes": 1,
  "comment_count": 1,
  "views": 0,
  "content": "<p>I was using fastai for loading Dicom images in my data loader with the following code</p>\n<pre><code>class PILDicom(PILBase):\n    _open_args,_tensor_cls,_show_args = {},TensorDicom,TensorDicom._show_args\n    @classmethod\n    def create(cls, fn:(Path,str,bytes), mode=None)-&gt;None:\n        \"Open a DICOM file from path fn or bytes fn and load it as a PIL Image\"\n        if isinstance(fn,bytes): im = Image.fromarray(pydicom.dcmread(pydicom.filebase.DicomBytesIO(fn)).pixel_array)\n        if isinstance(fn,(Path,str)): im = pydicom.dcmread(fn).pixel_array\n        im = (im / np.max(im)) * 255\n        im = Image.fromarray(im.astype(np.uint8))\n        im.load()\n        im = im._new(im.im)\n        return cls(im.convert(mode) if mode else I'm)\n\n\ndef get_x(r): return r['image_path']\ndef get_y(r): return r['label_cols']\n\ndblock = DataBlock(blocks=(ImageBlock(cls=PILDicom), MultiCategoryBlock),\n                   splitter=RandomSplitter(seed=42),\n                   get_x= get_x,\n                   get_y= get_y, \n                   item_tfms = Resize(224))\ndls = dblock.dataloaders(merged_data) \n\ndls.show_batch()\n</code></pre>\n<p>when I try displaying the data using show_batch() method I get an error stating  <strong>The following handlers are available to decode the pixel data however they are missing required dependencies: GDCM (req. ), pylibjpeg (req. )</strong></p>\n<p>then I tried <code>!conda install -c conda-forge gdcm -y</code> since this was an issue in pulmonary fibrosis comp as well<br>\n<a href=\"https://www.kaggle.com/c/osic-pulmonary-fibrosis-progression/discussion/165723\" target=\"_blank\">https://www.kaggle.com/c/osic-pulmonary-fibrosis-progression/discussion/165723</a><br>\nbut even this didn't seem to work</p>",
  "messages": [
    {
      "id": "1350531",
      "postDate": "06/15/2021 14:08:40",
      "content": "<p>I was using fastai for loading Dicom images in my data loader with the following code</p>\n<pre><code>class PILDicom(PILBase):\n    _open_args,_tensor_cls,_show_args = {},TensorDicom,TensorDicom._show_args\n    @classmethod\n    def create(cls, fn:(Path,str,bytes), mode=None)-&gt;None:\n        \"Open a DICOM file from path fn or bytes fn and load it as a PIL Image\"\n        if isinstance(fn,bytes): im = Image.fromarray(pydicom.dcmread(pydicom.filebase.DicomBytesIO(fn)).pixel_array)\n        if isinstance(fn,(Path,str)): im = pydicom.dcmread(fn).pixel_array\n        im = (im / np.max(im)) * 255\n        im = Image.fromarray(im.astype(np.uint8))\n        im.load()\n        im = im._new(im.im)\n        return cls(im.convert(mode) if mode else I'm)\n\n\ndef get_x(r): return r['image_path']\ndef get_y(r): return r['label_cols']\n\ndblock = DataBlock(blocks=(ImageBlock(cls=PILDicom), MultiCategoryBlock),\n                   splitter=RandomSplitter(seed=42),\n                   get_x= get_x,\n                   get_y= get_y, \n                   item_tfms = Resize(224))\ndls = dblock.dataloaders(merged_data) \n\ndls.show_batch()\n</code></pre>\n<p>when I try displaying the data using show_batch() method I get an error stating  <strong>The following handlers are available to decode the pixel data however they are missing required dependencies: GDCM (req. ), pylibjpeg (req. )</strong></p>\n<p>then I tried <code>!conda install -c conda-forge gdcm -y</code> since this was an issue in pulmonary fibrosis comp as well<br>\n<a href=\"https://www.kaggle.com/c/osic-pulmonary-fibrosis-progression/discussion/165723\" target=\"_blank\">https://www.kaggle.com/c/osic-pulmonary-fibrosis-progression/discussion/165723</a><br>\nbut even this didn't seem to work</p>",
      "rawMarkdown": "I was using fastai for loading Dicom images in my data loader with the following code\n\n```\nclass PILDicom(PILBase):\n    _open_args,_tensor_cls,_show_args = {},TensorDicom,TensorDicom._show_args\n    @classmethod\n    def create(cls, fn:(Path,str,bytes), mode=None)->None:\n        \"Open a DICOM file from path fn or bytes fn and load it as a PIL Image\"\n        if isinstance(fn,bytes): im = Image.fromarray(pydicom.dcmread(pydicom.filebase.DicomBytesIO(fn)).pixel_array)\n        if isinstance(fn,(Path,str)): im = pydicom.dcmread(fn).pixel_array\n        im = (im / np.max(im)) * 255\n        im = Image.fromarray(im.astype(np.uint8))\n        im.load()\n        im = im._new(im.im)\n        return cls(im.convert(mode) if mode else I'm)\n\n\ndef get_x(r): return r['image_path']\ndef get_y(r): return r['label_cols']\n\ndblock = DataBlock(blocks=(ImageBlock(cls=PILDicom), MultiCategoryBlock),\n                   splitter=RandomSplitter(seed=42),\n                   get_x= get_x,\n                   get_y= get_y, \n                   item_tfms = Resize(224))\ndls = dblock.dataloaders(merged_data) \n\ndls.show_batch()\n```\n\nwhen I try displaying the data using show_batch() method I get an error stating  **The following handlers are available to decode the pixel data however they are missing required dependencies: GDCM (req. ), pylibjpeg (req. )**\n\nthen I tried ```  !conda install -c conda-forge gdcm -y ``` since this was an issue in pulmonary fibrosis comp as well\nhttps://www.kaggle.com/c/osic-pulmonary-fibrosis-progression/discussion/165723\nbut even this didn't seem to work",
      "votes": null
    },
    {
      "id": "1351423",
      "postDate": "06/16/2021 10:00:24",
      "content": "<p>pip install pylibjpeg, pylibjpeg_libjpeg</p>",
      "rawMarkdown": "pip install pylibjpeg, pylibjpeg_libjpeg",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1351423,
      "author_name": "lanny2018",
      "author_url": "",
      "post_date": "06/16/2021 10:00:24",
      "content": "<p>pip install pylibjpeg, pylibjpeg_libjpeg</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1350531": "I was using fastai for loading Dicom images in my data loader with the following code\n\n```\nclass PILDicom(PILBase):\n    _open_args,_tensor_cls,_show_args = {},TensorDicom,TensorDicom._show_args\n    @classmethod\n    def create(cls, fn:(Path,str,bytes), mode=None)->None:\n        \"Open a DICOM file from path fn or bytes fn and load it as a PIL Image\"\n        if isinstance(fn,bytes): im = Image.fromarray(pydicom.dcmread(pydicom.filebase.DicomBytesIO(fn)).pixel_array)\n        if isinstance(fn,(Path,str)): im = pydicom.dcmread(fn).pixel_array\n        im = (im / np.max(im)) * 255\n        im = Image.fromarray(im.astype(np.uint8))\n        im.load()\n        im = im._new(im.im)\n        return cls(im.convert(mode) if mode else I'm)\n\n\ndef get_x(r): return r['image_path']\ndef get_y(r): return r['label_cols']\n\ndblock = DataBlock(blocks=(ImageBlock(cls=PILDicom), MultiCategoryBlock),\n                   splitter=RandomSplitter(seed=42),\n                   get_x= get_x,\n                   get_y= get_y, \n                   item_tfms = Resize(224))\ndls = dblock.dataloaders(merged_data) \n\ndls.show_batch()\n```\n\nwhen I try displaying the data using show_batch() method I get an error stating  **The following handlers are available to decode the pixel data however they are missing required dependencies: GDCM (req. ), pylibjpeg (req. )**\n\nthen I tried ```  !conda install -c conda-forge gdcm -y ``` since this was an issue in pulmonary fibrosis comp as well\nhttps://www.kaggle.com/c/osic-pulmonary-fibrosis-progression/discussion/165723\nbut even this didn't seem to work",
    "1351423": "pip install pylibjpeg, pylibjpeg_libjpeg"
  },
  "source": "meta"
}