コード例 #1
0
def run_exp(intup):
    global X_train, X_test, y_train, y_test
    rep, i, p = intup

    # Make noisy data, simulate pool-based case
    X_train_noisy = utils.add_gaussian_noise(X_train, p)
    y_train_noisy = y_train  # utils.flip_labels(y_train, p)
    X_seed, X_pool = X_train_noisy[:n_seed], X_train_noisy[n_seed:]
    y_seed, y_pool = y_train_noisy[:n_seed], y_train_noisy[n_seed:]

    # Initializing the learner
    learner = ActiveLearner(
        estimator=RandomForestClassifier(n_estimators=10),
        query_strategy=entropy_sampling,
        X_training=X_seed, y_training=y_seed
    )

    # Run active learning and record history of test accuracy
    history = np.zeros(query_budget - n_seed)
    for j in range(query_budget - n_seed):
        query_idx, query_inst = learner.query(X_pool)
        learner.teach(X_pool[query_idx], y_pool[query_idx])
        history[j] = learner.score(X_test, y_test)
    return history
コード例 #2
0
import cv2
import numpy as np
from skimage.restoration import denoise_wavelet


def wavelet_denoise(noisy_im):
    im_est = denoise_wavelet(noisy_im,
                             method='BayesShrink',
                             mode='soft',
                             rescale_sigma=True)
    im_est = np.clip(im_est * 255, 0, 255)
    im_est = im_est.astype(np.uint8)
    return im_est


if __name__ == '__main__':
    from utils import add_gaussian_noise

    sigma = 40
    im = cv2.imread('test_image/Cameraman.png', cv2.IMREAD_GRAYSCALE)
    noisy_im = add_gaussian_noise(im, sigma)

    im_est = wavelet_denoise(noisy_im)
    cv2.imwrite('im_est.png', im_est)
コード例 #3
0
ファイル: precompute_BM.py プロジェクト: yingz9/BM3D_py
    import os
    import cv2
    from utils import add_gaussian_noise, symetrize

    # <hyper parameter>
    ref_i, ref_j = 196, 142
    # ref_i, ref_j = 271, 206

    kHW = 8
    NHW = 3
    nHW = 16
    tauMatch = 2500
    # <hyper parameter \>

    im = cv2.imread('test_data/image/Cameraman.png', cv2.IMREAD_GRAYSCALE)
    im_noisy = add_gaussian_noise(im, 10, seed=1)

    img_noisy_p = symetrize(im_noisy, nHW)
    near_pij, threshold_count = precompute_BM(img_noisy_p,
                                              kHW=kHW,
                                              NHW=NHW,
                                              nHW=nHW,
                                              tauMatch=tauMatch)

    im = cv2.cvtColor(img_noisy_p, cv2.COLOR_GRAY2RGB)
    # <draw search area>
    points_list = [(ref_j - nHW, ref_i - nHW), (ref_j + nHW, ref_i - nHW),
                   (ref_j - nHW, ref_i + nHW), (ref_j + nHW, ref_i + nHW)]
    for point in points_list:
        cv2.circle(im, point, 0, (0, 0, 255), 1)
    # <draw search area \>
コード例 #4
0
    img_basic = numerator / denominator
    return img_basic


if __name__ == '__main__':
    from utils import add_gaussian_noise, symetrize

    # <hyper parameter> -------------------------------------------------------------------------------
    sigma = 20

    nHard = 16
    kHard = 8
    NHard = 16
    pHard = 3
    lambdaHard3D = 2.7  # ! Threshold for Hard Thresholding
    tauMatchHard = 2500 if sigma < 35 else 5000  # ! threshold determinates similarity between patches
    useSD_h = False
    tau_2D_hard = 'BIOR'
    # <\ hyper parameter> -----------------------------------------------------------------------------

    img = cv2.imread('test_data/image/Cameraman.png', cv2.IMREAD_GRAYSCALE)
    img_noisy = add_gaussian_noise(img, sigma)
    # img_noisy = cv2.imread('matlab_officialfg_compare/noisy_image.png', cv2.IMREAD_GRAYSCALE)

    img_noisy_p = symetrize(img_noisy, nHard)
    img_basic = bm3d_1st_step(sigma, img_noisy_p, nHard, kHard, NHard, pHard,
                              lambdaHard3D, tauMatchHard, useSD_h, tau_2D_hard)
    img_basic = img_basic[nHard:-nHard, nHard:-nHard]

    # cv2.imwrite('y_basic.png', img_basic.astype(np.uint8))
コード例 #5
0
    nHard = 16
    kHard = 8
    NHard = 16
    pHard = 3
    lambdaHard3D = 2.7  # ! Threshold for Hard Thresholding
    useSD_h = False
    tau_2D_hard = 'BIOR'
    # <\ hyper parameter> -----------------------------------------------------------------------------
    read_dir = 'test_data/image'
    # for sigma in [2, 5, 10, 20, 30, 40, 60, 80, 100]:
    for sigma in [30, 40, 60, 80, 100]:
        tauMatchHard = 2500 if sigma < 35 else 5000  # ! threshold determinates similarity between patches
        for image_name in os.listdir(read_dir):
            image_path = os.path.join(read_dir, image_name)
            im = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
            im_noisy = add_gaussian_noise(im, sigma, seed=0)

            im_noisy_p = symetrize(im_noisy, nHard)
            im_basic = bm3d_1st_step(sigma, im_noisy_p, nHard, kHard, NHard,
                                     pHard, lambdaHard3D, tauMatchHard,
                                     useSD_h, tau_2D_hard)
            im_basic = im_basic[nHard:-nHard, nHard:-nHard]

            im_basic = (np.clip(im_basic, 0, 255)).astype(np.uint8)
            cv2.imwrite(
                'noisy_image_and_1st_res/' + image_name[:-4] + '_sigma' +
                str(sigma) + '.png', im_noisy)
            cv2.imwrite(
                'noisy_image_and_1st_res/' + image_name[:-4] + '_sigma' +
                str(sigma) + '_1st.png', im_basic)
            print(image_name[:-4] + '_sigma' + str(sigma))
コード例 #6
0
        else:
            return -self._u_max


policy = BangBang(1, t_final)

simulated_sys = simulate_system(cp, s0, policy, t_final, n_steps=150)

# define x0 and P0
x0 = np.array([.2, 0, 0, 0])
P0 = np.diag([1, .01, .5, .01])
Q = .1 * np.eye(cp.n_state)
R = np.eye(2)

ekf = ExtendedKF(cp, x0, P0)

state_estimate = []

measurement_types = [PendulumTipPosition(cp), PendulumTipVelocity(cp)]

for sys_info in simulated_sys[1:]:

    ekf.propagate(policy(sys_info['t'], ekf.x), sys_info['t'], Q)
    measurement_method = random.choice(measurement_types)
    raw_meas = measurement_method.calculate(sys_info['state'],
                                            sys_info['input'])
    meas = add_gaussian_noise(raw_meas, std=np.array([.05, .05]))
    ekf.update(meas, measurement_method, np.diag([.05, .05]))

    state_estimate.append(ekf.x)
コード例 #7
0
from ssa import ssa_2d

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

import numpy as np
from skimage.measure import compare_psnr as psnr
from skimage.measure import compare_ssim as ssim

import utils

img = mpimg.imread('lena.bmp')
img = utils.scale_img(img)

img_noise = utils.add_gaussian_noise(img, noise_variance=0.2)
img_noise = utils.scale_img(img_noise)

window_height = 10
window_width = 15
number_of_eigenvectors = 25
#number_of_eigenvectors_rec = 17

img_reconstructed = ssa_2d(
    img=img_noise,
    u=window_height,
    v=window_width,
    l=number_of_eigenvectors,
    #l_rec = number_of_eigenvectors_rec,
    verbose=3)

img_reconstructed = utils.scale_img(img_reconstructed)
コード例 #8
0
    patch_k = 9

    im_dir = 'special_test_image'

    sigma_list = [10, 20, 30, 40, 60, 80, 100]
    for im_name in os.listdir(im_dir):

        auc_list_noisy = list()
        auc_list_nlm = list()
        auc_list_tv = list()
        auc_list_Wavelet = list()
        for sigma in sigma_list:
            im_path = os.path.join(im_dir, im_name)
            im = cv2.imread(im_path, cv2.IMREAD_GRAYSCALE)
            noisy_im = add_gaussian_noise(im, sigma, seed=1)

            fpr_list, tpr_list = compute_fpr_tpr(im, noisy_im, patch_k)
            roc_auc = auc(fpr_list, tpr_list)
            # plt.plot(fpr_list, tpr_list, lw=1, alpha=0.7, color='black', linestyle='--',
            #          label='noisy_im_AUC=%0.6f' % (roc_auc))
            auc_list_noisy.append(roc_auc)

            im_est = nlm_denoise(noisy_im, sigma)
            fpr_list, tpr_list = compute_fpr_tpr(im, im_est, patch_k)
            roc_auc = auc(fpr_list, tpr_list)
            # plt.plot(fpr_list, tpr_list, lw=1, alpha=0.7, color='gold', linestyle='--',
            #          label='NLM_AUC=       %0.6f' % (roc_auc))
            auc_list_nlm.append(roc_auc)

            im_est = tv_denoise(noisy_im, sigma)
コード例 #9
0
ファイル: bm3d.py プロジェクト: ailsayang/bm3d-1
            xv = xv[:min(n_matched, N2_wie)]
            yv = yv[mask]
            xv = xv[:min(n_matched, N2_wie)]
            for i in range(len(grp_noisy)):
                step2_agg[yv[i]:yv[i] + N1_wie,
                          xv[i]:xv[i] + N1_wie] += grp_noisy[i]
                step2_weights[yv[i]:yv[i] + N1_wie,
                              xv[i]:xv[i] + N1_wie] += weights
    final_im = step2_agg / (step2_weights + 10e-8)

    return basic_im, final_im


if __name__ == '__main__':
    gt_im = utils.load_image_to_array('images/lena.tif', size=[256, 256])
    noisy = utils.add_gaussian_noise(gt_im, 20)
    utils.array_to_image(noisy, clip=True).save('noisy' + '.jpg')
    im = bm3d(noisy, sigma=20)
    basic_im, final_im = im
    print('PSNR for basic estimate is %.1f' % (utils.psnr(gt_im, basic_im)))
    print('PSNR for final estimate is %.1f' % (utils.psnr(gt_im, final_im)))
    utils.array_to_image(basic_im, clip=True).save('bm3d_basic.jpg')
    utils.array_to_image(final_im, clip=True).save('bm3d_final.jpg')
    quit()
    for x in [8, 12, 16, 32]:
        im = bm3d(noisy, sigma=20, N2_ht=x, N2_wie=x)
    # im = utils.dct(gt_im)
    # im = utils.hard_thr(im, 2.7*20)
    # im = utils.dct(im, inverse=True)
    # utils.array_to_image(im, clip=True).save('dct'+'.jpg')
    # quit()
コード例 #10
0
    if k == 0:
        filtered_block = ptv.tvgen(tensor, [lamb_x, lamb_y, lamb_z], [1, 2, 3],
                                   [1, 1, 1])
    elif k == 1:
        pass
    elif k == 2:
        pass
    else:
        raise NotImplementedError

    return filtered_block


if __name__ == '__main__':
    import cv2
    import time

    block = np.ones((64, 64, 16)) * 128
    block = add_gaussian_noise(block, 50)

    tik = time.time()

    res = trendFilter3D(block, 10, k=0)

    print(time.time() - tik)

    res_im = res.astype(np.uint8)

    for i in range(16):
        slice = res_im[:, i, :]
コード例 #11
0
    # <hyper parameter> -------------------------------------------------------------------------------
    sigma = 20

    nHard = 16
    kHard = 8
    NHard = 16
    pHard = 3
    lambdaHard3D = 2.7  # ! Threshold for Hard Thresholding
    tauMatchHard = 2500 if sigma < 35 else 5000  # ! threshold determinates similarity between patches
    useSD_h = False
    tau_2D_hard = 'BIOR'
    # <\ hyper parameter> -----------------------------------------------------------------------------

    img = cv2.imread('test_data/image/Cameraman.png', cv2.IMREAD_GRAYSCALE)
    img = cv2.resize(img, (128, 128))
    img_noisy = add_gaussian_noise(img, sigma, seed=0)

    img_noisy_p = symetrize(img_noisy, nHard)
    img_basic = bm3d_1st_step(sigma, img_noisy_p, nHard, kHard, NHard, pHard,
                              lambdaHard3D, tauMatchHard, useSD_h, tau_2D_hard)
    img_basic = img_basic[nHard:-nHard, nHard:-nHard]

    # <hyper parameter> -------------------------------------------------------------------------------
    sigma = 20

    nWien = 16
    kWien = 8
    NWien = 16
    pWien = 3
    tauMatchWien = 400 if sigma < 35 else 3500  # ! threshold determinates similarity between patches
    useSD_w = True
コード例 #12
0
h_e_hat = 0.95  # threshold for the measure of the edge (domain: [0, 1])

sp_noise_amount = 0     # amount of salt-paper noise (domain: [0, 1])
gaus_noise_snr = 15      # signal-to-noise ratio for gaussian noise (domain: >= 0)
sigma = 3               # sigma for gaussian filter (domain: >= 1)
# ----------

# Get image
img_orig = img2gray(plt.imread(img_path))
img = img_orig.copy()

# Add noise
if sp_noise_amount:
    img = add_sp_noise(img, amount=sp_noise_amount)
if gaus_noise_snr:
    img = add_gaussian_noise(img, snr=gaus_noise_snr)
# if sigma:
#     img = apply_gaussian_filter(img, sigma=sigma)

# Show image
plt.figure()
plt.subplot(1, 2, 1)
plt.title('Original image')
plt.imshow(img_orig, cmap='gray', vmin=0, vmax=1)
plt.subplot(1, 2, 2)
plt.title('Noisy image')
plt.imshow(img, cmap='gray', vmin=0, vmax=1)
plt.show(block=False)

# Corners detection
pixel_corners_coords = corners_harris(img, sigma=sigma, min_distance=1, threshold_rel=0.05)
コード例 #13
0
'''
Created on Aug 6, 2019

@author: jsaavedr
Adding Gaussian Noise
'''

import matplotlib.pyplot as plt
import scipy.ndimage.filters as nd_filters
import skimage.filters as filters
import skimage.io as io
import utils
import pai_io

if __name__ == '__main__' :
    filename ='../images/gray/lenna_gray.png'
    image=pai_io.imread(filename, as_gray = True)    
    noisy_image = utils.add_gaussian_noise(image, 20)
    #io.imsave(filename+"noisy.png", noisy_image)
    g_kernel = utils.get_gaussian2d(1, 3)
    image_g = nd_filters.convolve(image, g_kernel, mode='constant', cval=0)     
    fig, xs = plt.subplots(1,3)
    for i in range(3):
        xs[i].set_axis_off()
    xs[0].imshow(image, cmap = 'gray', vmin = 0, vmax = 255)
    xs[0].set_title('Image')
    xs[1].imshow(noisy_image, cmap = 'gray', vmin = 0, vmax = 255)
    xs[1].set_title('Ruido Gaussiano')
    xs[2].imshow(image_g, cmap = 'gray', vmin = 0, vmax = 255)
    xs[2].set_title('Imagen Filtrada')
    plt.show()