Сегментация изображения в цветовом пространстве Hue - PullRequest
0 голосов
/ 10 января 2020

У меня есть изображение в цветовом пространстве HSV. Компонент Hue охватывает диапазон от 0 до 255. Мне нужно разделить эти значения на 8 ячеек и назначить определенный цвет c для каждого ящика, а не для диапазона. В качестве примера давайте возьмем первый интервал 0-31 и назначим все пиксели со значением 31 в этом интервале. Аналогично для бина с пикселями 32-63 присваивают значение 63. Это можно сделать с помощью циклов, но это занимает значительное количество времени. Есть ли способ выполнить это как матричные операции или встроенные функции numpy?

for i in range(image_lenth):
 for j in range(image_width):
   pixel_value = image[i][j]
   if(pixel_value >= 0 and pixel_value<=31):
     image[i][j] = 31
   elif(pixel_value >= 32 and pixel_value<=63):
     image[i][j] = 63 
   ...

Ответы [ 2 ]

2 голосов
/ 11 января 2020

Попробуйте, как Дэн предлагает в комментариях:

x = np.arange(256)
x |= 31
1 голос
/ 11 января 2020

У вас есть numpy.array, поэтому используйте (без for -циклов)

img[( 0 <= img) & (img <= 31)] = 31
img[(32 <= img) & (img <= 63)] = 63
img[(64 <= img) & (img <= 95)] = 95
# etc. 

Или используйте for -l oop

for x in range(0, 256, 32):
    img[( x <= img) & (img <= x+31)] = x+31
    #print(x, x+31)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...