def apply_contra_harmonic_mean(img, filter_size, q):
        filter_size = util.format_filter_size(filter_size)
        obtained, original = util.get_empty_image_with_same_dimensions(img)

        if len(img.shape) == 2:
            for i in range(len(original)):
                for j in range(len(original[0])):
                    neighbors = ImageFilter.__get_neighbors_matrix(
                        filter_size, i, j, original)
                    obtained[i][j] = ImageFilter.get_contra_harmonic_mean(
                        neighbors, q)
        else:
            R = ImageFilter.apply_contra_harmonic_mean(img[:, :, 0],
                                                       filter_size, q)
            G = ImageFilter.apply_contra_harmonic_mean(img[:, :, 1],
                                                       filter_size, q)
            B = ImageFilter.apply_contra_harmonic_mean(img[:, :, 2],
                                                       filter_size, q)
            output = np.zeros((R.shape[0], R.shape[1], 3), dtype=np.uint8)
            output[:, :, 0] = R
            output[:, :, 1] = G
            output[:, :, 2] = B
            obtained = output

        return obtained
    def apply_geometric_mean(img, filter_size):
        filter_size = util.format_filter_size(filter_size)
        obtained, original = util.get_empty_image_with_same_dimensions(img)
        for i in range(len(original)):
            for j in range(len(original[0])):
                neighbors = ImageFilter.__get_neighbors_matrix(
                    filter_size, i, j, original)
                obtained[i][j] = ImageFilter.get_geometric_mean(neighbors)

        return obtained
    def create_gaussian_kernel(filter_size, sigma):
        """
        Creates a 2D gaussian kernel using filter_size and sigma
        """
        filter_size = util.format_filter_size(filter_size)
        ax = np.linspace(-(filter_size - 1) / 2., (filter_size - 1) / 2.,
                         filter_size)
        xx, yy = np.meshgrid(ax, ax)

        kernel = np.exp(-0.5 * (np.square(xx) + np.square(yy)) /
                        np.square(sigma))

        return kernel / np.sum(kernel)
 def apply_median(img, filter_size):
     filter_size = util.format_filter_size(filter_size)
     obtained, original = util.get_empty_image_with_same_dimensions(img)
     if len(img.shape) == 2:
         for i in range(len(original)):
             for j in range(len(original[0])):
                 obtained[i][j] = ImageFilter.get_median(
                     filter_size, i, j, original)
     else:
         R = ImageFilter.apply_median(img[:, :, 0], filter_size)
         G = ImageFilter.apply_median(img[:, :, 1], filter_size)
         B = ImageFilter.apply_median(img[:, :, 2], filter_size)
         output = np.zeros((R.shape[0], R.shape[1], 3), dtype=np.uint8)
         output[:, :, 0] = R
         output[:, :, 1] = G
         output[:, :, 2] = B
         obtained = output
     return obtained
Пример #5
0
def test_format_negative_size():
    original_size = -5
    expected = 3
    obtained = util.format_filter_size(original_size)
    assert obtained == expected
Пример #6
0
def test_format_odd_size():
    original_size = 7
    expected = original_size
    obtained = util.format_filter_size(original_size)
    assert obtained == expected
Пример #7
0
def test_format_even_size():
    original_size = 4
    expected = original_size + 1
    obtained = util.format_filter_size(original_size)
    assert obtained == expected
Пример #8
0
def test_format_min_size():
    original_size = 3
    expected = 3
    obtained = util.format_filter_size(original_size)
    assert obtained == expected
Пример #9
0
def test_format_low_positive_size():
    original_size = 1
    expected = 3
    obtained = util.format_filter_size(original_size)
    assert obtained == expected
Пример #10
0
def test_format_size_zero():
    original_size = 0
    expected = 3
    obtained = util.format_filter_size(original_size)
    assert obtained == expected