parser.add_option("-t", dest="refImg") parser.add_option("-i", dest="tFiles", action="store", nargs=4) parser.add_option("-h", dest="doHelp", action="store_true", default=False) parser.add_option("-x", dest="recomp", action="store_true", default=False) options, args = parser.parse_args() if options.doHelp: usage() sys.exit(-1) if (options.vFiles is None or options.config is None or options.tFiles is None or options.refImg is None): usage() sys.exit(-1) helper = regtools.regtools(options.config) vesselFileList = options.vFiles vList0 = open(vesselFileList).readlines() vList0 = [c.strip() for c in vList0] T0ListFile, T1ListFile, FDListFile, IDListFile = options.tFiles T0 = pickle.load(open(T0ListFile)) T1 = pickle.load(open(T1ListFile)) FD = pickle.load(open(FDListFile)) ID = pickle.load(open(IDListFile)) vList1 = helper.treeApplyTfm(vList0, T0, "RigidMRAToMRI", options.recomp) vList2 = helper.treeApplyTfm(vList1, T1, "AffineMRIToRef", options.recomp) vList3 = helper.treeApplyDfm(vList2, ID, "DeformRefToRef", options.recomp)
parser.add_option("-h", dest="doHelp", action="store_true", default=False) parser.add_option("-x", dest="recomp", action="store_true", default=False) options, args = parser.parse_args() if options.doHelp: usage() sys.exit(-1) if (options.vFiles is None or options.config is None or options.tFiles is None or options.refImg is None): usage() sys.exit(-1) helper = regtools.regtools(options.config) vesselFileList = options.vFiles vList0 = open(vesselFileList).readlines() vList0 = [c.strip() for c in vList0] T0ListFile, T1ListFile, FDListFile, IDListFile = options.tFiles T0 = pickle.load(open(T0ListFile)) T1 = pickle.load(open(T1ListFile)) FD = pickle.load(open(FDListFile)) ID = pickle.load(open(IDListFile)) vList1 = helper.treeApplyTfm(vList0, T0, "RigidMRAToMRI", options.recomp) vList2 = helper.treeApplyTfm(vList1, T1, "AffineMRIToRef", options.recomp) vList3 = helper.treeApplyDfm(vList2, ID, "DeformRefToRef", options.recomp)
def main(argv=None): if argv is None: argv=sys.argv parser = OptionParser(add_help_option=False) parser.add_option("-i", dest="imgJSON") parser.add_option("-c", dest="cfgJSON") parser.add_option("-a", dest="outAtomFile") parser.add_option("-d", dest="outDiffFile") parser.add_option("-x", dest="outImagFile") parser.add_option("-s", dest="imSlice", type="int") parser.add_option("-r", dest="imScale", type="float") parser.add_option("-D", dest="dictSiz", type="int", default=5) parser.add_option("-k", dest="nearest", type="int", default=5) parser.add_option("-h", dest="doHelp", action="store_true", default=False) options, _ = parser.parse_args() if options.doHelp: usage() sys.exit(-1) imgJSON = options.imgJSON cfgJSON = options.cfgJSON outAtomFile = options.outAtomFile outImagFile = options.outImagFile outDiffFile = options.outDiffFile imSlice = options.imSlice dictSiz = options.dictSiz imScale = options.imScale nearest = options.nearest imData = json.load(open(imgJSON)) helper = regtools.regtools(cfgJSON) groupSet = set() groupMap = dict() groupLab = [] # generate numeric labels for each image for entry in imData["Data"]: groupSet.add(entry["Group"]) for cnt, group in enumerate(groupSet): groupMap[group] = cnt for entry in imData["Data"]: groupLab.append(groupMap[entry["Group"]]) imgFiles = [] [imgFiles.append(str(e["Source"])) for e in imData["Data"]] dataList = [] for i, imFile in enumerate(imgFiles): im0 = sitk.ReadImage(imFile) im1 = pbmutils.imResize(im0, imScale) imSz = sitk.GetArrayFromImage(im1).shape helper.infoMsg("Image size : (%d,%d,%d)" % imSz) if not imSlice is None: sl0 = pbmutils.imSlice(im1, [0, 0, imSlice]) dataList.append(sl0.ravel()) else: dataList.append(sitk.GetArrayFromImage(im1).ravel()) helper.infoMsg("Done with image %d!" % i) # write raw image data if not outImagFile is None: tfid = open(outImgFile, 'w') np.reshape(np.asmatrix(dataList).T,-1).astype('float32').tofile(tfid) tfid.close() # build difference images diffIm = pbmutils.groupDiff(np.asmatrix(dataList).T, groupLab, nearest) helper.infoMsg("Difference image matrix (%d x %d)" % diffIm.shape) # write raw difference data if not outDiffFile is None: outFid = open(outDiffFile, 'w') np.reshape(diffIm, -1).ravel().astype('float32').tofile(outFid) outFid.close() # create the dictionary learner and run (alpha=1) lrnObj = MiniBatchDictionaryLearning(dictSiz, 1, verbose=True) lrnRes = lrnObj.fit(np.asmatrix(diffIm).T).components_ # write dictionary atoms if not outAtomFile is None: outFid = open(outAtomFile, 'w') np.reshape(lrnRes.T, -1).ravel().astype('float32').tofile(outFid) outFid.close()
def main(argv=None): if argv is None: argv = sys.argv parser = OptionParser(add_help_option=False) parser.add_option("-i", dest="imgJSON") parser.add_option("-c", dest="cfgJSON") parser.add_option("-a", dest="outAtomFile") parser.add_option("-d", dest="outDiffFile") parser.add_option("-x", dest="outImagFile") parser.add_option("-s", dest="imSlice", type="int") parser.add_option("-r", dest="imScale", type="float") parser.add_option("-D", dest="dictSiz", type="int", default=5) parser.add_option("-k", dest="nearest", type="int", default=5) parser.add_option("-h", dest="doHelp", action="store_true", default=False) options, _ = parser.parse_args() if options.doHelp: usage() sys.exit(-1) imgJSON = options.imgJSON cfgJSON = options.cfgJSON outAtomFile = options.outAtomFile outImagFile = options.outImagFile outDiffFile = options.outDiffFile imSlice = options.imSlice dictSiz = options.dictSiz imScale = options.imScale nearest = options.nearest imData = json.load(open(imgJSON)) helper = regtools.regtools(cfgJSON) groupSet = set() groupMap = dict() groupLab = [] # generate numeric labels for each image for entry in imData["Data"]: groupSet.add(entry["Group"]) for cnt, group in enumerate(groupSet): groupMap[group] = cnt for entry in imData["Data"]: groupLab.append(groupMap[entry["Group"]]) imgFiles = [] [imgFiles.append(str(e["Source"])) for e in imData["Data"]] dataList = [] for i, imFile in enumerate(imgFiles): im0 = sitk.ReadImage(imFile) im1 = pbmutils.imResize(im0, imScale) imSz = sitk.GetArrayFromImage(im1).shape helper.infoMsg("Image size : (%d,%d,%d)" % imSz) if not imSlice is None: sl0 = pbmutils.imSlice(im1, [0, 0, imSlice]) dataList.append(sl0.ravel()) else: dataList.append(sitk.GetArrayFromImage(im1).ravel()) helper.infoMsg("Done with image %d!" % i) # write raw image data if not outImagFile is None: tfid = open(outImgFile, 'w') np.reshape(np.asmatrix(dataList).T, -1).astype('float32').tofile(tfid) tfid.close() # build difference images diffIm = pbmutils.groupDiff(np.asmatrix(dataList).T, groupLab, nearest) helper.infoMsg("Difference image matrix (%d x %d)" % diffIm.shape) # write raw difference data if not outDiffFile is None: outFid = open(outDiffFile, 'w') np.reshape(diffIm, -1).ravel().astype('float32').tofile(outFid) outFid.close() # create the dictionary learner and run (alpha=1) lrnObj = MiniBatchDictionaryLearning(dictSiz, 1, verbose=True) lrnRes = lrnObj.fit(np.asmatrix(diffIm).T).components_ # write dictionary atoms if not outAtomFile is None: outFid = open(outAtomFile, 'w') np.reshape(lrnRes.T, -1).ravel().astype('float32').tofile(outFid) outFid.close()