Версия алгоритма Кадане с результирующей максимальной подматрицей фиксированных размеров

Я пытаюсь найти максимальное пустое пространство (максимальное количество белых пикселей) в любом прямоугольнике изображения, которое я наложу на другое изображение меньшего размера. Размеры прямоугольника составляют 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), затем просто вычту столбец или строку вне области просмотра и добавлю новую строку или столбец по мере того, как прямоугольник наложения перемещается по базовому изображению.


person McMurphy    schedule 12.02.2021    source источник
comment
Я не понимаю, в чем вопрос. Разве прямоугольник, содержащий максимальное количество белых пикселей, не является всем изображением?   -  person user202729    schedule 12.02.2021
comment
Да, но я хочу получить фиксированный максимальный размер. То есть дайте мне OffsetTop и OffsetLeft пикселя, который даст наибольшее пустое пространство 100x100, учитывая, что базовое изображение имеет размер 1000x800 пикселей.   -  person McMurphy    schedule 12.02.2021
comment
Итак, вы говорите, что у вас есть 2 изображения, вы хотите объединить их вместе, а затем найти максимальное количество белых пикселей в прямоугольнике размером (x, y) во всем изображении?   -  person TheGeneral    schedule 12.02.2021
comment
Нет. Просто дайте мне TLC прямоугольника 100x100 пикселей на изображении A, в котором больше всего пустого пространства из всех возможных прямоугольников 100x100.   -  person McMurphy    schedule 12.02.2021
comment
Дайте определение TLC?   -  person TheGeneral    schedule 12.02.2021
comment
Сверху, слева, угол - Проявляется в смещении пикселя влево и смещении пикселя вверху от базового пикселя изображения (0,0)   -  person McMurphy    schedule 12.02.2021
comment
(рекомендуется указать вопрос как в вопросе, так и в заголовке. Я вижу, что в первой редакции вы объясняете только часть фиксированного размера подпрямоугольника в заголовке)   -  person user202729    schedule 12.02.2021