Я ищу алгоритм здесь, независимо от конкретного языка программирования.
Проблема:
У нас есть двумерная область отображения (думаю, простой буфер пикселей). Периодически некоторые пиксели изменилось. Нам нужно найти набор прямоугольники, которые инкапсулируют все измененные пиксели.
Было бы тривиально, но нежелательно, для вычисления одного, потенциально большой прямоугольник, который инкапсулирует все измененные пиксели. Мы предпочли бы несколько, меньших, плотно облегающих прямоугольники до заданного минимума size (это переменная, которая может быть изменено).
Например, предположим, что внутри целая область отображения, несколько пикселей в верхний левый угол изменился и несколько пикселей в нижнем правом углу изменилось. Мы НЕ хотим вычислять один грязный прямоугольник всего область - мы вместо этого хотим двух грязных прямоугольники: маленький в верхнем слева и небольшой в нижнем вправо.
Производительность имеет решающее значение, поэтому этот вопрос.
Эта проблема возникает все время, определенно в видеокодеках и областях сжатия для удаленных рабочих столов, я полагаю. В моем случае это повторяющаяся проблема во время графических манипуляций с изображениями, которые включают одновременное использование нескольких пользователей в общей области.
Кто-нибудь знает об опубликованных алгоритмах для этого или знает о решении, которое вы использовали в прошлом?
Спасибо!