2011/11/3 Andy Buckle <andybuc...@gmail.com>: > 2011/11/3 Carnė Draug <carandraug+...@gmail.com>: >> On 3 November 2011 11:14, Kris Thielemans <kris.f.thielem...@gmail.com> >> wrote: >>> Hi >>> I discovered that Andy Buckle has made some routines available for DICOM >>> support in Octave. See also http://wiki.octave.org/wiki.pl?CategoryDicom. >>> Thanks Andy! >>> >>> I've made some changes to the files currently in svn >>> (octave-forge/extra/dicom/). However, I don't have write access to the svn, >>> so I've attached them to this email as a patch. I'd be very happy if this >>> would be committed. >>> >>> This code works fine for me on Ubuntu 11.04 and allows me to read GE Dicom >>> PET and CT images, and GE raw data, which was a very pleasant surprise. With >>> this update, I think this dicom package is much closer to being ready and >>> compatible with matlab. I haven't looked at dicomwrite though. Also, there's >>> a TODO in dicominfo.cpp related to error handling if a dictionary is not >>> found. I also have some doubts if the code properly handles different >>> endianness, but am not familiar enough with gdcm to know for sure (and don't >>> seem to have the data to check it). >>> >>> Note that I'm rather new to octave, so I'm sure that the C++ code can be >>> improved. Also, I'm not quite sure about conventions to be used for the >>> texinfo documentation (e.g.: how do you write an argument that's a string?) >>> so somebody should/could correct this. >>> >>> Here's a summary of the changes >>> ------------------------------------------------------------ >>> All files: changed include of gdcm files to use gdcm-2.0/ path, which is I >>> think how it should be done. That also meant I don't have to add an include >>> flag anymore after installing the gdcm package on Ubuntu. >>> >>> dicomread.cpp: >>> - support usage where 1st argument is a structure with a field Filename >>> (such as returned by dicominfo) for matlab compatibility. >>> >>> dicomdict.cpp: >>> - make sure that 'get' and 'set' behaviour works correctly. To do that, >>> there's now a static variable storing the current dictionary name and a >>> function get_current_dict() to access it. I didn't remove Andy's disabled >>> code for using a dictionary object, but I don't think it's necessary as we >>> can get away with a string. >>> - updated doc-string >>> >>> dicomdict.h: >>> - moved declaration of load_dict() here to make it accessible in the other >>> routines >>> - declare new function get_current_dict() >>> >>> dicominfo.cpp: >>> - support usage dicominfo(filename, 'dictionary', dictname) >>> - support FL, FD and SL VRs, which means that many more fields are now read >>> correctly from the dicom file. >>> - check if the VR in the file is the same as the one in the dictionary. If >>> not, issue a warning but use the VR from the file. >>> - assign values to private dicom fields >>> - changed convention for private fields to use lower-case for the >>> hexadecimal numbers to be compatible with Matlab >>> - if an entry is not in the dictionary, determine its VR from the file (if >>> possible) and assign anyway. >>> - updated doc-string >>> >>> Makefile: >>> - set include flag empty >>> - removed a few gdcm components that aren't installed with the gdcm ubuntu >>> package (do they still exist?) and aren't necessary anyway. >>> -------------------------------------------------------- >>> >>> Finally, a comment for the wiki at >>> http://wiki.octave.org/wiki.pl?CategoryDicom >>> >>> Question: Octave (and Matlab) stores images (y,x) and DICOM is intrinsically >>> (x,y). Does Matlab transpose images when it loads them? >>> >>> Answer: matlab reads the data from the dicom file as if it's a raw block of >>> numbers (and then converts if necessary). Therefore, current Octave/dicom >>> behaviour is compatible with matlab. >>> >>> >>> I hope this is useful for someone. Andy's code (and Octave!) was certainly >>> useful for me. >> >> Hi Kris >> >> I added your note to the wiki. Also, if no one objects to your patch >> in 3 days, I'll apply (or ping us back if for some reason it's not >> done). Thank you >> >> Carnė > > I feel guilty for not having made some time to fix this earlier. My > next aim is to make a first release of the dicom package, probably > without dicomwrite in the first instance. I would also like to make > sure it works with mingw builds, prepare NSIS packages, and then > advertise it to colleagues in my world (medical physics). > > I have not reviewed, yet, but it all sounds very sensible. I think > Kris and I will be the only users for a while, so no one will be > onconvenienced if something is not quite right. > > I have just re-installed the linux system I mostly use for this. So I > need to build GDCM and Octave on it. So, Carnė, if you could go ahead > and commit it (or Kris could have access to do it), please do.
Patch committed. Carnë ------------------------------------------------------------------------------ RSA(R) Conference 2012 Save $700 by Nov 18 Register now http://p.sf.net/sfu/rsa-sfdev2dev1 _______________________________________________ Octave-dev mailing list Octave-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/octave-dev