Разделить изображение на несколько вложенных изображений, используя C

Я ищу библиотеку C, в которой задано изображение размера x, оно разделит изображение на несколько изображений, чтобы я мог отправлять каждое изображение на выделенный ЦП, чтобы обнаруживать сегменты на нем, используя увеличение области или что-либо еще.

4 ответа

Вы действительно хотите разделить изображение?

  1. Если вы используете многоядерные процессоры, лучше загрузить изображение один раз, а затем запустить обработку потоков на нем (я полагаю, обработка только читает изображение) с параметрами x,y,width,height.

  2. Если у вас больше хостов, есть диспетчер, и он выполняет несколько операций с образом: распаковывать, разбивать, сжимать части, передавать части. Я думаю, что узлы обработки находятся в одной локальной сети. Если вы можете отправить изображение в эту локальную сеть в виде широковещательной рассылки, я имею в виду, что все хосты получают изображение одновременно, это приведет к увеличению производительности: диспетчера не нужно разбивать и повторно отправлять части, задачи обработки должны просто выбирать Соответствующая часть полученного изображения (x,y, ширина, высота). Я не знаю, какой формат изображения вы используете, но я уверен, что вам не нужно распаковывать все изображение целиком, по крайней мере, по вертикали, вы должны пропустить нежелательные области. (Вы должны разделить изображение на области полной ширины, чтобы избежать распаковки ненужных областей.)

Как показывает слияние японского языка, результирующие результаты сегментации могут оказаться самыми сложными. Если вы используете алгоритм сегментации изображений, основанный на разрезе графа, вы можете дополнить свой код этим подходом, который обеспечивает принципиальный способ выполнения параллельных операций и оптимально их комбинировать.

Объединение результатов отдельных выходов сегментации будет сложной задачей. Что, если вам случится разделить прямо через сегмент? Вы получите сегмент от каждого разделенного изображения, и вам придется объединить их вместе. Будут неопределенные случаи, поэтому вам придется выбрать метрику, чтобы решить, когда объединить два региона.

Если это вызывает озабоченность, вы можете попробовать алгоритм вырезания шва для создания расщеплений, которые вряд ли будут пересекать край области. Content-Aware Resize инструмент Photoshop использует резку шва, чтобы найти горизонтальные и вертикальные пути на изображении, которые не являются визуально важными.

Соглашаясь с Shai и japreiss, и исходя из этого, поскольку ваша цель - сегментация изображения, у вас будут проблемы с границами (потому что вам нужна информация о соседстве), для части манипуляции с изображением я бы предложил что-то вроде

libpng: http://www.libpng.org/pub/png/libpng.html

И взгляните на эти вопросы Stackru:

  1. Как кодировать PNG в буфер с помощью libpng?
  2. Использование libpng для "разделения" изображения на сегменты (пока не получен правильный ответ)

Когда ваш буфер заполнен значениями изображения, его чтение и запись не должны быть сложными.

Другие вопросы по тегам