예제 #1
0
def test_motion_blur(x, y, models):
    # initialize histories
    histories = init_histories({'kernel_size': mb_ksizes})

    # run tests
    for ksize in mb_ksizes:
        # apply motion blur
        print('[INFO] Applying motion blur with kernel size=({}, {})'\
              .format(ksize, ksize))
        noisy = []
        count = 0
        mb_kernel = numpy.zeros((ksize, ksize))
        mb_kernel[ksize // 2, :] = 1
        mb_kernel /= numpy.sum(mb_kernel)
        for image in x:
            noisy.append(
                imdegrade(image,
                          'motion_blur',
                          mb_kernel=mb_kernel,
                          seed=RANDOM_SEED))
            count += 1
            print('\r[INFO] Progress... {:3.0f}%'\
                  .format(count*100/len(x)), end='')

        # save noisy image samples if required
        if SAVE_NOISY:
            save_samples(noisy,
                         SAMP_NOISY,
                         randomize=True,
                         seed=RANDOM_SEED,
                         filename_prefix='motion_blur_ksize_({}x{})'.format(
                             ksize, ksize),
                         target_directory=OUTPUT_DIR_NOISY)

        # test models
        results = test_models(noisy, y, models)

        # update histories
        for hist_dict, res_dict in zip(histories, results):
            for key in res_dict.keys():
                hist_dict[key].append(res_dict[key])

    # save and plot histories
    save_and_plot_histories(file_id='motion_blur',
                            histories=histories,
                            title='Change in accuracy with motion blur',
                            xlabel='kernel size',
                            ylabel='accuracy (\u0025)')

    return
예제 #2
0
def test_gaussian_color(x, y, models):
    # initialize histories
    histories = init_histories({'sigma': sigmavals})

    # run tests
    for sigma in sigmavals:
        # apply gaussian color noise
        print('[INFO] Applying Gaussian color noise with mu=0 and sigma={}'\
              .format(sigma))
        noisy = []
        count = 0
        for image in x:
            noisy.append(
                imdegrade(image,
                          'gaussian_color',
                          mu=0,
                          sigma=sigma,
                          seed=RANDOM_SEED))
            count += 1
            print('\r[INFO] Progress... {:3.0f}%'\
                  .format(count*100/len(x)), end='')

        # save noisy image samples if required
        if SAVE_NOISY:
            save_samples(
                noisy,
                SAMP_NOISY,
                randomize=True,
                seed=RANDOM_SEED,
                filename_prefix='gaussian_color_sigma_{}'.format(sigma),
                target_directory=OUTPUT_DIR_NOISY)

        # test models
        results = test_models(noisy, y, models)

        # update histories
        for hist_dict, res_dict in zip(histories, results):
            for key in res_dict.keys():
                hist_dict[key].append(res_dict[key])

    # save and plot histories
    save_and_plot_histories(
        file_id='gaussian_color',
        histories=histories,
        title='Change in accuracy with Gaussian color noise',
        xlabel='standard deviation (\u03c3)',
        ylabel='accuracy (\u0025)')

    return
예제 #3
0
def test_salt_and_pepper(x, y, models):
    # initialize histories
    histories = init_histories({'density': densities})

    # run tests
    for density in densities:
        # apply salt and pepper noise
        print('[INFO] Applying salt and pepper noise with density={}'\
              .format(density))
        noisy = []
        count = 0
        for image in x:
            noisy.append(
                imdegrade(image,
                          'salt_and_pepper',
                          density=density,
                          seed=RANDOM_SEED))
            count += 1
            print('\r[INFO] Progress... {:3.0f}%'\
                  .format(count*100/len(x)), end='')

        # save noisy image samples if required
        if SAVE_NOISY:
            save_samples(
                noisy,
                SAMP_NOISY,
                randomize=True,
                seed=RANDOM_SEED,
                filename_prefix='salt_and_pepper_density_{}'.format(density),
                target_directory=OUTPUT_DIR_NOISY)

        # test models
        results = test_models(noisy, y, models)

        # update histories
        for hist_dict, res_dict in zip(histories, results):
            for key in res_dict.keys():
                hist_dict[key].append(res_dict[key])

    # save and plot histories
    save_and_plot_histories(
        file_id='salt_and_pepper',
        histories=histories,
        title='Change in accuracy with salt and pepper noise',
        xlabel='noise density',
        ylabel='accuracy (\u0025)')

    return
예제 #4
0
def test_jpeg_quality(x, y, models):
    # initialize histories
    histories = init_histories({'image_quality': qualities})

    # run tests
    for quality in qualities:
        # apply jpeg compression
        print('[INFO] Applying JPEG compression with quality={}'\
              .format(quality))
        noisy = []
        count = 0
        for image in x:
            noisy.append(
                imdegrade(image,
                          'jpeg_compression',
                          quality=quality,
                          seed=RANDOM_SEED))
            count += 1
            print('\r[INFO] Progress... {:3.0f}%'\
                  .format(count*100/len(x)), end='')

        # save noisy image samples if required
        if SAVE_NOISY:
            save_samples(noisy,
                         SAMP_NOISY,
                         randomize=True,
                         seed=RANDOM_SEED,
                         filename_prefix='jpeg_quality_{}'.format(quality),
                         target_directory=OUTPUT_DIR_NOISY)

        # test models
        results = test_models(noisy, y, models)

        # update histories
        for hist_dict, res_dict in zip(histories, results):
            for key in res_dict.keys():
                hist_dict[key].append(res_dict[key])

    # save and plot histories
    save_and_plot_histories(file_id='jpeg_quality',
                            histories=histories,
                            title='Change in accuracy with JPEG quality',
                            xlabel='image quality',
                            ylabel='accuracy (\u0025)',
                            invert_xaxis=True)

    return