Ejemplo n.º 1
0
 def canny_without_blur():
     tag = "canny without blur"
     data_points[tag] = []
     for _ in range(MEASUREMENTS):
         img = pgu.img_to_surface(IMG_PATH)
         data_points[tag].append(
             measure_execution_time(lambda: canny(img))[0])
Ejemplo n.º 2
0
 def canny_with_blur():
     # with 3x3 gaussian kernel
     tag = "canny with 3x3 gaussian blur"
     data_points[tag] = []
     for _ in range(MEASUREMENTS):
         img = pgu.img_to_surface(IMG_PATH)
         data_points[tag].append(
             measure_execution_time(lambda: canny(img, GAUSSIAN[3]))[0])
Ejemplo n.º 3
0
def benchmark_lab3():
    """
    img to greyscale
    canny without blur
    canny with blur
    """

    source_img = pgu.img_to_surface(IMG_PATH)
    data_points = {
        "greyscale":
        measure_execution_time(lambda: eu.surf_to_greyscale(source_img),
                               MEASUREMENTS)
    }

    def canny(image, kernel=None):
        image = eu.surf_to_greyscale(image)
        if kernel is not None:
            image = transform_by_kernel(image, kernel)
        canny_edge_detection(image, SOBEL_SUM)

    def canny_without_blur():
        tag = "canny without blur"
        data_points[tag] = []
        for _ in range(MEASUREMENTS):
            img = pgu.img_to_surface(IMG_PATH)
            data_points[tag].append(
                measure_execution_time(lambda: canny(img))[0])

    def canny_with_blur():
        # with 3x3 gaussian kernel
        tag = "canny with 3x3 gaussian blur"
        data_points[tag] = []
        for _ in range(MEASUREMENTS):
            img = pgu.img_to_surface(IMG_PATH)
            data_points[tag].append(
                measure_execution_time(lambda: canny(img, GAUSSIAN[3]))[0])

    canny_without_blur()
    canny_with_blur()

    print_measurements("Pygame", data_points)
Ejemplo n.º 4
0
def benchmark_lab2():
    """
    transform by kernel:
    - avg 1x1 3x3 5x5
    - gaussian 1x1 3x3 5x5
    """

    data_points = {}
    source_img = pgu.img_to_surface(IMG_PATH)

    for kernel_size in AVERAGES:
        data_points["average " + str(kernel_size)] = measure_execution_time(
            lambda: transform_by_kernel(source_img, AVERAGES[kernel_size]),
            MEASUREMENTS)

    for kernel_size in GAUSSIAN:
        data_points["gaussian " + str(kernel_size)] = measure_execution_time(
            lambda: transform_by_kernel(source_img, GAUSSIAN[kernel_size]),
            MEASUREMENTS)

    print_measurements("Pygame", data_points)
Ejemplo n.º 5
0

def transform_by_kernel(surf, kernel):
    """
    :param surf: surface to be transformed
    :param kernel: kernel to be used for convolution
    :return: new surface
    """

    old_array = pygame.surfarray.pixels3d(surf)
    new_array = pygame.surfarray.array3d(surf)

    kernel_array, kernel_sum = kernel
    radius = len(kernel_array) // 2
    width, height, _ = old_array.shape

    for x in range(0, width):
        for y in range(0, height):
            new_array[x,
                      y] = bu.transform_pixel(old_array, x, y, radius, width,
                                              height, kernel_array, kernel_sum)

    del old_array
    return pygame.surfarray.make_surface(new_array)


if __name__ == "__main__":
    surface = pgu.img_to_surface(path=IMG_PATH)
    kernel = bu.avg_kernel(size=3)
    pgu.display_surface(transform_by_kernel(surface, kernel))