Вопрос: как найти ребра на картинке, используя функции numpy - PullRequest
0 голосов
/ 01 мая 2020

Я хочу найти «края» на картинке. Чтобы прояснить термин край, край - это любой пиксель, цвет которого изменяется больше определенного порога.

Чтобы справиться с этим, я получил несколько рекомендаций:

  • Найти расстояние между всеми соседними пикселями. Найти расстояние между всеми соседними пикселями. Сначала найдите разницу для цветового канала.
  • Затем объедините их, чтобы получить одно число (используйте евклидово выражение)
  • Найдите пиксели, в которых расстояние превышает определенный порог. Эти пиксели должны получить определенный c цвет, чтобы сделать края видимыми.

Я не работаю с python в течение очень долгого времени, так что это довольно сложная работа для меня. Кто-нибудь может помочь? Я думал: сначала сделайте функцию, которая вычисляет расстояние между 2 пикселями. Например: def what_is_distance_between_pixels(image, pixel1, pixel2)

Затем создайте функцию, которая выполняет вышеуказанную функцию для всех пикселей. Но я не уверен, что это сработает. Примерно так (набросок):

def distance_between_all_pixels(image, threshold):
    height = image.shape[0] 
    width = image.shape[1]
    colour = image.shape[2]
    for y in range(0,height):
        for x in range(0,width):
            for z in range(0,colour):
                distance = what_is_distance_between_pixels(image, image[y,x,z], image[y+1,x,z])
                if distance > threshold:
                    image[x,y,z] = 0
                distance_2 = what_is_distance_between_pixels(image, image[y,x,z], image[y,x+1,z])
                if distance_2 > threshold:
                    image[x,y,z] = 0

У кого-нибудь есть идеи, как с этим бороться? Надеюсь, я хорошо объяснил свой вопрос.

...