Я разработал свертку с набором ядер, которая надежно удаляет единичные и выступающие белые точки при 2-3-кратном применении к изображению нулей (черный) и единиц (белый):
Самым важным свойством свертки является сохранение замкнутых линий (например, края прямоугольника). Однако свертка полностью удаляет открытые линии (то есть линии с двумя концами) только в том случае, если свертка выполняется вдвое реже, чем длина линии.
Это очень неэффективно для длинных линий. Можете ли вы помочь мне разработать ядро (набор), которое удаляет открытые линии толщиной в 1 пиксель после нескольких сверток, но сохраняет закрытые линии толщиной в 1 пиксель?
Я разработал свертку с набором ядер, которая надежно удаляет единичные и выступающие белые точки при 2-3-кратном применении к изображению нулей (черный) и единиц (белый): [code]import numpy as np from PIL import Image from scipy.ndimage import convolve
for kernel in kernels: convolution = convolve(binary_mask, kernel, mode='constant') binary_mask[(binary_mask == 1) & (convolution >= 1)] = 0 [/code] Самым важным свойством свертки является сохранение замкнутых линий (например, края прямоугольника). Однако свертка полностью удаляет открытые линии (то есть линии с двумя концами) только в том случае, если свертка выполняется вдвое реже, чем длина линии. Это очень неэффективно для длинных линий. Можете ли вы помочь мне разработать ядро (набор), которое удаляет открытые линии толщиной в 1 пиксель после нескольких сверток, но сохраняет закрытые линии толщиной в 1 пиксель? [img]https://i.sstatic.net/xFtrUwoi.png[/img]