Разделить несколько планов этажа, представленных на изображении, с помощью PythonPython

Программы на Python
Anonymous
Разделить несколько планов этажа, представленных на изображении, с помощью Python

Сообщение Anonymous »

Я пытаюсь разделить планы этажей, нарисованные на изображении. Входное изображение (оттенки серого) состоит из нескольких планов этажей, разделенных пустым пространством. Результатом будут сегментированные планы этажей.
Я использую окно, которое перебирает изображение сверху вниз. Вычисление энтропии выполняется и добавляется окно, когда энтропия пересекает определенный порог. Проблема в том, что я не могу использовать этот метод по отношению к другим изображениям. Из-за порогового механизма планы этажей не разделены должным образом. Ниже приведен код, с которым я экспериментирую:

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

window = 30
stary_y = 0
end_y = 0 + window
img = img[start_height:end_height,:]#.copy()
iteration = int(img.shape[0] / window)
i = 0
is_stack = False
start = 0
end = 0
base = numpy.zeros((1, img.shape[1]), dtype = img.dtype)
c = []
while i < iteration:
prob = numpy.histogram(img[stary_y:end_y, :], bins = 256, range = (0, 256), density = True)[0]
ent = scipy.stats.entropy(prob, base = 2)
if ent > 0.25:
if is_stack == False:
start = i * window
is_stack = True
base = numpy.concatenate([base, img[stary_y:end_y, :]])
c.append([i, is_stack])
else:
is_stack = False
if is_stack == False and base.shape[0] > 32:
end = window * i
c.append([i, is_stack])
c = []
start, end = 0, 0
plt.imshow(base, cmap = "gray")
plt.show()
base = numpy.zeros((1, img.shape[1]), dtype = img.dtype)
else:
c = []
start, end = 0, 0
base = numpy.zeros((1, img.shape[1]), dtype = img.dtype)

stary_y, end_y = stary_y + window, end_y + window
i += 1
Изображение
Изображение
является входными данными, и оно должно выводить
Изображение
. Концепция, которую я применил, заключается в создании сегментов
Изображение
. Сегмент 4 содержит 2 плана этажей, что неожиданно, его следует разбить на 2 изображения. Сегменты 2 и 6 не являются планами этажей. Я понимаю, что эти проблемы связаны с размером окна и порогом. Какой подход мне следует использовать для создания правильно отдельных планов этажей?

Подробнее здесь: https://stackoverflow.com/questions/784 ... ing-python

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