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="Эрозия, детектирования края")
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="Лаплассиан")
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()
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"])
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="Контур филтрами зашумленного изображения")
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)])