It is possible to analyze a DICOM file to figure out where the image data is located. The easiest way to do that is to use dicominfo(), second easiest is to find an external DICOM C or C++ library and call upon it to extract the header info; the third way is to spend a whole bunch of time reading about the internals of DICOM file format and write code that can do the task for you.
However, image data in DICOM is not necessarily stored in uncompressed form that is compatible with multiband read. Each block of DICOM data has an associated header indicating the "Transfer Syntax" (TS) for the block of data (DICOM files can contain multiple blocks of data, and each block can have a different TS.) The TS field indicates which standard was used to store the data: DICOM programs read the block of data as binary and then pass it to the appropriate algorithm to decode into actual image data. Basic uncompressed blocks of interleaved uint8 or int16 or single precision or double precision are all supported, so it might be possible to use multibandread for particular DICOM images, but there are other supported algorithms too, including various compression algorithms (anywhere from Run Length Encoding on up to JPEG2000.)
In my opinion, you are going about this the wrong way: the helperReadHeaderRIRE and multibandread() calls are just one way to get data for the purpose of registering mulitmodal 3D images, and you should use any way that is suitable for your data, such as dicomread() . Do not waste your time trying to shoehorn your .dcm files into a form compatible with using RIRE and multibandread()