Удалите открытые строки, но сохраните закрытые.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Удалите открытые строки, но сохраните закрытые.

Сообщение Anonymous »

Я разработал свертку с набором ядер, которая надежно удаляет единичные и выступающие белые точки при 2-3-кратном применении к изображению нулей (черный) и единиц (белый):

Код: Выделить всё

import numpy as np
from PIL import Image
from scipy.ndimage import convolve

kernels = [
np.array([[1, 1, 1], [-4, 1, -4], [-4, -4, -4]]),
np.array([[-4, -4, 1], [-4, 1, 1], [-4, -4, 1]]),
np.array([[-4, -4, -4], [-4, 1, -4], [1, 1, 1]]),
np.array([[1, -4, -4], [1, 1, -4], [1, -4, -4]])
]

image_path = 'path/to/image/file'
with Image.open(image_path) as image:

if image.mode == 'RGBA':
image = image.convert('RGB')

image_np = np.array(image)
mask = np.isin(image_np, [200, 200, 200]).all(axis=-1)

binary_mask = np.zeros(image_np.shape[:2], dtype=int)
binary_mask[mask] = 1

for kernel in kernels:
convolution = convolve(binary_mask, kernel, mode='constant')
binary_mask[(binary_mask == 1) & (convolution >= 1)] = 0
Самым важным свойством свертки является сохранение замкнутых линий (например, края прямоугольника). Однако свертка полностью удаляет открытые линии (то есть линии с двумя концами) только в том случае, если свертка выполняется вдвое реже, чем длина линии.
Это очень неэффективно для длинных линий. Можете ли вы помочь мне разработать ядро ​​(набор), которое удаляет открытые линии толщиной в 1 пиксель после нескольких сверток, но сохраняет закрытые линии толщиной в 1 пиксель?
Изображение


Подробнее здесь: https://stackoverflow.com/questions/790 ... osed-lines
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»