def main(argv=None): """Parsing command line arguments and reading input files.""" if argv is None: argv = sys.argv parser = argparse.ArgumentParser(prog=argv[0], description=__doc__) parser.add_argument( '-i', "--inputImage", required=True, help="Input image on which low-rank decomposition is computed") parser.add_argument('-l', "--lowRank", required=True, help="Low-rank output image") parser.add_argument('-s', "--Sparse", required=True, help="Sparse output image") args = parser.parse_args(argv[1:]) # read image I = sitk.ReadImage(args.inputImage) # data for processing X = sitk.GetArrayFromImage(I) # decompose X into L+S L, S, _, _, _, _ = ialm.recover(X) L_image = sitk.GetImageFromArray(np.asarray(L, dtype=np.uint8)) sitk.WriteImage(L_image, args.lowRank, True) S_image = sitk.GetImageFromArray(np.asarray(S, dtype=np.uint8)) sitk.WriteImage(S_image, args.Sparse, True)
def main(argv=None): if argv is None: argv = sys.argv if len(argv) != 5: print "Usage: python %s <CheckerboardImage> <OutlierFraction> <CorruptedImage> <LowRankImage>" % sys.argv[0] sys.exit(1) # outlier fraction p = float(sys.argv[2]) # read image I = sitk.ReadImage(argv[1]) # data for processing X = sitk.GetArrayFromImage(I) # number of pixel N = np.prod(X.shape) eps = np.round(np.random.uniform(-10, 10, 100)) idx = np.random.random_integers(0, N-1, np.round(N*p)) X.ravel()[idx] = np.array(200+eps, dtype=np.uint8) # write outlier image J = sitk.GetImageFromArray(X) sitk.WriteImage(J, sys.argv[3], True) # decompose X into L+S L, S, _, _, _, _ = ialm.recover(X) C = sitk.GetImageFromArray(np.asarray(L, dtype=np.uint8)) sitk.WriteImage(C, sys.argv[4], True) # compute mean-square error and Frobenius norm print "MSE: %.4g" % np.sqrt(np.asmatrix((L-sitk.GetArrayFromImage(I))**2).sum()) print "Frobenius-Norm: %.4g" % np.linalg.norm(L-sitk.GetArrayFromImage(I),ord='fro')
def main(argv=None): """Parsing command line arguments and reading input files.""" if argv is None: argv = sys.argv parser = argparse.ArgumentParser(prog=argv[0], description=__doc__) parser.add_argument( "-i", "--inputImage", required=True, help="Input image on which low-rank decomposition is computed" ) parser.add_argument("-l", "--lowRank", required=True, help="Low-rank output image") parser.add_argument("-s", "--Sparse", required=True, help="Sparse output image") args = parser.parse_args(argv[1:]) # read image I = sitk.ReadImage(args.inputImage) # data for processing X = sitk.GetArrayFromImage(I) # decompose X into L+S L, S, _, _, _, _ = ialm.recover(X) L_image = sitk.GetImageFromArray(np.asarray(L, dtype=np.uint8)) sitk.WriteImage(L_image, args.lowRank, True) S_image = sitk.GetImageFromArray(np.asarray(S, dtype=np.uint8)) sitk.WriteImage(S_image, args.Sparse, True)