Сравнение меток подключенных компонентов на двух изображениях - PullRequest
0 голосов
/ 25 ноября 2018

У меня 32-битное изображение с несколькими подключенными компонентами с разными метками (например, 3 метки).Предположим также, что эти 3 значения меток равны 316067, 213676 и 1000 соответственно.По какой-то причине мне приходится конвертировать это изображение в 16-битное.Конечно, после того, как я выполню преобразование, метки будут сопоставлены с 16-битным диапазоном.Допустим, эти метки сопоставлены с 3000, 14000 и 1000 соответственно (я знаю, что в моих изображениях после преобразования метки, которые уже находились в 16-битном диапазоне, не отображаются ни на один новый номер).Моя цель - найти все такие метки, которые были изменены с 32-битного изображения на 16-битное изображение при отображении.В приведенном выше примере я хочу найти следующее.

1) Метки 1 и 2 были сопоставлены с новым значением метки.2) метка 1 была сопоставлена ​​с 316067 до 3000, а метка 2 - с 213676 до 14000.

Для меня это становится сложной задачей, поскольку у меня есть сотни таких 32-битных изображений, которые нуждаются в преобразовании в 16-битные изображения, иизмененные этикетки должны быть прочитаны.Также на каждом изображении у меня есть тысячи меток.

Каков наиболее подходящий и эффективный способ реализовать это?Есть ли в Python рутина, которая может это сделать?Может кто-нибудь указать мне фрагмент кода?

1 Ответ

0 голосов
/ 28 ноября 2018

Я пытаюсь разработать ответ, но ваш вопрос неясен, и то, что я хочу сказать, не форматируется и не помещается в комментарии, поэтому я начну с частичного ответа и отредактирую / разработаю его, как вы поясните..

Вы не говорите, что ваше изображение одноканальное, но так как вы назначаете 3 метки как 316067, 213676 и 1000, я предполагаю, что один канал.Правильно?

Давайте синтезируем образец изображения:

im = np.arange(0,65536*65536,8192,dtype=np.uint32).reshape(1024,-1)

Это дает im как 1024x512 пикселей и значения как:

   array(
   [[         0,       8192,      16384, ...,    4177920, 4186112],
   [   4194304,    4202496,    4210688, ...,    8372224,  8380416],
   ...,
   [4282384384, 4282392576, 4282400768, ..., 4286562304, 4286570496],
   [4286578688, 4286586880, 4286595072, ..., 4290756608, 4290764800],
   [4290772992, 4290781184, 4290789376, ..., 4294950912, 4294959104]],
   dtype=uint32)

И это дает числоуникальные ярлыки / цвета как:

len(np.unique(im))                                                                                                                                                                                       
524288

Итак, это представитель?А теперь, как вы в настоящее время получаете 16-битное изображение?И почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...