Многократное сканирование по ключу

0

У меня есть одно 4-канальное изображение HSVL - Hue, Saturation, Value (floats), Label (unsigned int). Задача состоит в том, чтобы вычислить массив сумм оттенков, насыщений и значений для каждой уникальной метки. Например, я смогу получить доступ к выходу Sum [пикселей с меткой 455] = {Hue: 500, Sat: 100, Val: 200}. Размер изображения составляет около 5 МП, а около 3000 разных меток.

Моя идея состоит в том, чтобы иметь ~ 32 сканирования по частям изображения, что приведет к 32 x nLabels суммам. Затем я могу сканировать по 32 разделам изображения, чтобы получить структуры сумм nLabel.

Выполняется ли "проверка по ключу?" существует алгоритм, который является решением этого точного типа проблемы?

Теги:
cuda

1 ответ

3
Лучший ответ

Если вы хотите сделать это с помощью CUDA, это может помочь.

Поскольку вам нужны только значения суммы, я думаю, что вам нужно "уменьшить ключ". Thrust обеспечивает реализацию thrust::reduce_by_key() которая может удовлетворить ваши потребности.

Но перед его использованием вам нужно отсортировать все пиксели по меткам. Это можно сделать с помощью thrust::sort_by_key()

Вы также можете быть заинтересованы в thrust::zip_iterator, который может thrust::zip_iterator 3-х каналов HSV в один итератор значений для сортировки и сокращения.

  • 0
    Я проверил redu_by_key (), кажется, что он уменьшает (суммирует) последовательные элементы с одним и тем же ключом, поэтому, если у вас есть «анклавы» данных (весьма вероятные), он не даст желаемого результата.
  • 0
    Не берите в голову - вот почему вы решили отсортировать пиксели по ключу, что обеспечит правильный вывод алгоритма.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню