Exemple #1
0
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)
Exemple #2
0
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)