123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import labkeyInterface
- import labkeyFileBrowser
- import io
- import pydicom
- import numpy
- import itk
- net=labkeyInterface.labkeyInterface()
- net.init('/home/studen/.labkey/merlin.json')
- b=labkeyFileBrowser.labkeyFileBrowser(net)
- url=b.formatPathURL('DORA/Radiomics',"")
- ok,dirs=b.listRemoteDir(url)
- url=dirs[10]
- ok,dirs=b.listRemoteDir(url)
- url=dirs[0]
- ok,dirs=b.listRemoteDir(url)
- fileUrl=dirs[0]
- resp=net.get(fileUrl)
- fileObj=io.BytesIO(resp.data)
- #get dcm representation of the file
- dcm=pydicom.dcmread(fileObj)
- #matrix dimension
- ConstPixelDims = (int(dcm.Rows), int(dcm.Columns))
- npArray = numpy.zeros(ConstPixelDims, dtype=dcm.pixel_array.dtype)
- npArray[:, :] = dcm.pixel_array
- #get it to itk
- itkImg=itk.GetImageFromArray(npArray)
- #works for DORA dicoms, but it would be great to be able to get that from itkImg
- InputPixelType = itk.SS
- #required by Canny
- OutputPixelType = itk.F
- Dimension = 2
- InputImageType = itk.Image[InputPixelType, Dimension]
- OutputImageType = itk.Image[OutputPixelType, Dimension]
- #recast to F
- castImageFilter = itk.CastImageFilter[InputImageType, OutputImageType].New()
- castImageFilter.SetInput(itkImg)
- #for debugging
- castImageFilter.Update()
- itkImg1=castImageFilter.GetOutput()
- variance=2
- upperThreshold=5
- lowerThreshold=0.4*upperThreshold
- cannyFilter = itk.CannyEdgeDetectionImageFilter[
- OutputImageType,
- OutputImageType].New()
- cannyFilter.SetInput(castImageFilter.GetOutput())
- cannyFilter.SetVariance(variance)
- cannyFilter.SetLowerThreshold(lowerThreshold)
- cannyFilter.SetUpperThreshold(upperThreshold)
- cannyFilter.Update()
- canny=cannyFilter.GetOutput()
- npCanny=itk.GetArrayFromImage(canny)
|