Я пытаюсь найти максимальное пустое пространство (максимальное количество белых пикселей) в любом прямоугольнике изображения, которое я наложу на другое изображение меньшего размера. Размеры прямоугольника составляют X пикселей на Y пикселей, что определяется размером накладываемого изображения (высота, ширина).
На данный момент единственное решение, которое у меня есть, — это попробовать каждый пиксель в качестве TLC наложенного изображения и подсчитать, сколько белых пикселей окажется под ним. Как только у меня будет максимум, я смогу разместить наложенные изображения.
Например, учитывая фиксированный размер подматрицы 2x2 и этот массив: -
int[,] arr = { { 1, 1, 1, 1, 0 },
{ 0, 1, 0, 0, 1 },
{ 1, 0, 1, 1, 1 },
{ 1, 0, 1, 1, 0 } };
Я хочу, чтобы максимальный результат был 4, а координаты были 2,2
Проблема, что и говорить, крайне неэффективна :-(
Я попробовал алгоритм Кадане, но он, кажется, работает только с разрозненными значениями и даже тогда создает подматрицу переменного размера.
Любые идеи? Улучшенные алгоритмы?
Я посчитаю пробелы в прямоугольнике TLC (0,0), затем просто вычту столбец или строку вне области просмотра и добавлю новую строку или столбец по мере того, как прямоугольник наложения перемещается по базовому изображению.