Я пытаюсь нарисовать полигоны на микроскопических изображениях, чтобы выделить важные области. Значение идентификатора и координаты для данного слоя (таким образом, набор вершин, которые соответствуют конкретному слою с формой (Y, Slice, X)). < /p>
Вот как список словарей выглядит:
example_image < /p>
Проблема - когда я пытаюсь запустить функцию, ответственные за рисование полиги, процесс - это очень много часов. Я понимаю, что это связано с большим размером (~ 20000x30000 пикселей), но есть ли способ сделать это быстрее, используя скимаж? < /P>
Я не могу использовать OpenCV или подушку.layer_colors = {
1: (255, 0, 0), # Red
2: (0, 255, 0), # Green
3: (0, 0, 255), # Blue
4: (255, 255, 0), # Yellow
5: (0, 255, 255), # Cyan
6: (255, 0, 255) # Magenta
}
def draw_full_res(image, coords, image_slice_idx, thickness=5, layer_colors=layer_colors):
disk_kernel = ski.morphology.disk(thickness)
mask = np.zeros(image.shape[:2], dtype=bool)
for idx in range(len(coords)):
if coords[idx]['slice'] == image_slice_idx:
layer = coords[_idx]['layer']
color = layer_colors.get(layer)
print('Progress layer: ', layer, '|', color)
for contours in coords[idx]['coords']:
# Draw only those polygons where number of vertices is greater than 5
if len(contours) > 5:
# Because shape for coords is (Y, SLICE, X)
y_coords = contours[:, 0].astype(int)
x_coords = contours[:, 2].astype(int)
# Create polygon
rr, cc = ski.draw.polygon_perimeter(x_coords, y_coords, shape=image.shape[:2])
mask[rr, cc] = True
# Make polygon thicker
mask = ski.morphology.dilation(mask, disk_kernel)
image[mask] = color
output_path = f'{image_slice_idx}_slice.png'
ski.io.imsave(output_path, image)
Подробнее здесь: https://stackoverflow.com/questions/796 ... ikit-image
Рисование многоугольников на большом микроскопическом изображении с помощью Scikit-Image ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение