Пример #1
0
def task15():
    """
    1.oroginal
    2. original + noise
    Контуры
    а)erosion
    b)silatation
    :return:
    """
    img = IO.read_image(r"data/Dots.jpg")
    img = to_one_chanel(img)
    print(img.max(), img.mean(), img.min())
    img = 255 - img
    print(set(img.flatten()))
    img = m.threshold_filter_2d(img, 100)
    print(set(img.flatten()))
    img2 = PF.erosion(img, 17)
    img3 = PF.dilatation(img2, 17)
    IO.show_images([m.normalize(img),
                    m.normalize(img2),
                    m.normalize(img3)],
                   fig_name="Эрозия, пример")

    # with model
    img = IO.read_image(r"data/MODEL.jpg")
    img2 = m.threshold_filter_2d(img, 100)
    img3 = PF.erosion(img2, 10)
    img4 = img2 - img3
    img5 = PF.dilatation(img2, 10)
    img6 = img5 - img2
    IO.show_images([m.normalize(img2),
                    m.normalize(img4),
                    m.normalize(img6)]["Изначальное бинаризированное",
                                       "Эрозия", "Дилатация"],
                   fig_name="Эрозия, детектирования края")
Пример #2
0
def task14():
    """
    1 оригонал (оригинал + шум (sp + noise + both))
    grad (sobel)
    laplasian
    :return:
    """
    img = IO.read_image(r"data/MODEL.jpg")
    img2 = PF.gradient_sobel(img, "h")
    img3 = PF.gradient_sobel(img, "v")
    img4 = PF.gradient_sobel(img, "a")
    img5 = m.normalize(np.absolute(img2)) +\
                    m.normalize(np.absolute(img3))
    IO.show_images([
        img,
        m.normalize(img2),
        m.normalize(img3),
        m.normalize(img4), img5, img - img5
    ], [
        "Изначальное изображение", "Маска собела горизонт",
        "Маска собела верт", "Сумма нескольких масок",
        "Применение горизонтальной и вертикальной масок",
        "Суммируем ради красоты"
    ],
                   fig_name="Маски Собела")
    img2 = PF.laplassian(img, "a")
    img3 = PF.laplassian(img, "b")
    IO.show_images([
        m.normalize(img2),
        m.normalize(img3), img + m.normalize(img2), img + m.normalize(img3)
    ], [
        "Лаплассиан, маска1", "Лапл, маска 2", "Сумма с маск 1",
        "Сумма с маской 2"
    ],
                   fig_name="Лаплассиан")
Пример #3
0
def task4():
    img = IO.read_image("photo1.jpg", r".\data")
    img = to_one_chanel(img)
    mul = 1.7
    img2 = reS.resize_next_neigbour(img, mul)
    img3 = reS.resize_bilinear_interpolation(img, mul)
    IO.show_images([img, img2, img3], types="sizing")
    plt.figure(figsize=(img.shape[1] / DPI, img.shape[0] / DPI))
    plt.imshow(img,
               aspect="auto",
               interpolation="none",
               vmin=0,
               vmax=255,
               cmap='gist_gray')
    plt.figure(figsize=(img2.shape[1] / DPI, img2.shape[0] / DPI))
    plt.imshow(img2,
               aspect="auto",
               interpolation="none",
               vmin=0,
               vmax=255,
               cmap='gist_gray')
    plt.figure(figsize=(img3.shape[1] / DPI, img3.shape[0] / DPI))
    plt.imshow(img3,
               aspect="auto",
               interpolation="none",
               vmin=0,
               vmax=255,
               cmap='gist_gray')
    plt.show()
Пример #4
0
def task5():
    img = IO.read_image("image2.jpg", r".\data")
    # img = IO.read_image("image2.jpg", r".\data")
    # print(img.shape)
    img = to_one_chanel(img)
    i_img = GT.invert(img)
    gc_img = GT.gamma_correction(img, 0.5)
    gc_img = np.array(
        (gc_img - gc_img.min()) / (gc_img.max() - gc_img.min()) * 255,
        dtype=np.int)
    l_img = GT.logarifmic_correction(img, 1, base=1.5)
    l_img = np.array((l_img - l_img.min()) / (l_img.max() - l_img.min()) * 255,
                     dtype=np.int)
    IO.show_images([img, i_img, gc_img, l_img],
                   ["image", "invert image", "image gamma", "image logarifm"])
Пример #5
0
def task13():
    """
    Выделить контуры объекта MODEL (должны быть как бинарное изображение):
    ФНЧ (фильтр низких чатсот расфокусирует изображение),
    вычитаем из исходного применяем пороговое преобразование.
    ФВЧ (фильтр высоких частот к тому же
    изображению построчно или по столбцам), аналогично
    1. Попробовать с шумами
    """
    img = IO.read_image(r"data/MODEL.jpg")

    lpf = m.create_low_pass_filter(0.05, 8, 1)
    img2 = m.convolutional_2d(img, lpf)
    img3 = img - img2
    img3 = m.normalize(m.threshold_filter_2d(img3, 240))
    hpf = m.create_hight_pass_filter(0.2, 8, 1)
    img4 = m.convolutional_2d(img, hpf)
    img4 = m.normalize(m.threshold_filter_2d(img4, 100))
    IO.show_images([img, img2, img3, img4],
                   ["start", "conv res", "low filter", "hight filter"],
                   fig_name="Контур с помощью фильров")

    img_n = m.add_random_noise_2d(img)
    img_n = m.add_salt_pepper_noise_2d(img_n)
    img_n = PF.median_filter(img_n)
    img_n = PF.averaging_filter(img_n)

    lpf = m.create_low_pass_filter(0.05, 8, 1)
    img2 = m.convolutional_2d(img_n, lpf)
    img3 = img - img2
    # img3 = m.normalize(img3, 255)
    # print(img3.min(), img3.max())
    img3 = m.normalize(m.threshold_filter_2d(img3, 78))
    hpf = m.create_hight_pass_filter(0.2, 4, 1)
    img4 = m.convolutional_2d(img_n, hpf)
    # img4 = m.normalize(img4, 255)
    # print(img4.min(), img4.max())
    # img4 = m.threshold_filter_2d(img4, 0)
    IO.show_images([img_n, img2, img3, m.normalize(img4)],
                   ["start", "conv res", "low filter", "hight filter"],
                   fig_name="Контур филтрами зашумленного изображения")
Пример #6
0
def task6():
    pass
    """
    1. ??????????? ?????????
    2. ??????????


    ????????? ??????? (????? > 1), ?????? ??????? ? ?? - ?? ????????
    ?????? - ??? ?????? ?????????????... - ?????????? ?? ? 0-1 ????? ???????????? ??
    ? ??? ?????????? - ?????????? ????? ???????? ?????? ? ?? ????????????
    :return:
    """
    img = IO.read_image("image2.jpg", r".\data")
    img = to_one_chanel(img)
    print(img.shape)
    LD = m.luminance_distribution(img)
    img2 = m.apply(img, LD)
    IO.show_images([img, img2], ["image", "image vs luminance distribution"])
    bLD1 = m.back_luminance_distribution(LD)
    bLD2 = m.luminance_distribution(img2)
    IO.plot_functions([(None, LD)])
    IO.plot_functions([(None, LD), (None, bLD1)])