Эффективный способ получить среднее значение в окрестности пикселя, по мне sh сетка - PullRequest
0 голосов
/ 20 марта 2020

Моя проблема довольно сложная, но я не уверен, как я могу ее разделить.

У меня есть изображение, и я хотел бы поставить на него сетку (мне sh сетка?), а затем получите средний цвет пикселя на пересечении линий и его окрестности.

На рисунке ниже показано мое задание:

enter image description here

Поэтому, в конце концов, я хочу узнать, является ли камень черным, белым или позиция пуста.

Мой вопрос заключается в том, как эффективно получить пиксель в красной области?

Ванильное решение

x = np.linspace(0, image.shape[0], 19)
y = np.linspace(0, image.shape[1], 19)

for i in x:
    for j in y:
        color = image[i, j, :]

Но это неэффективно и не усредняется в окрестностях. Также будут некоторые проблемы с

1 Ответ

0 голосов
/ 20 марта 2020

Решение, кажется, не поддерживает задачу так хорошо. Да, усреднение цвета окрестности - это одна метри c изображения, но, как вы говорите, оно неэффективно.

Вам не нужна окрестность: вам нужна классификация камней. Вы можете сделать это с одним пикселем или несколькими пикселями в областях, которые не перекрываются информацией аннотации, такой как номер хода.

Из точки пересечения просто возьмите пиксель, скажем, на 1 : Направление 00, 90 * радиуса от центра. Отрегулируйте по мере необходимости для ширины линии. Например, с учетом позиции (row, col) и радиуса камня r

x = col + 0.85 * r
y = row + 0.10 * r
color = image[x, y, :]
brightness = sum(color)
if brightness < 100:
    stone = "black"
elif brightness > 600:
    stone = "white"
else:
    stone = "vacant"
...