Оптимальный набор грязных прямоугольников

Я ищу здесь алгоритм, не зависящий от конкретного языка программирования.

Проблема:

У нас есть 2-мерная область отображения (подумайте о простом буфере пикселей). Периодически некоторые пиксели изменилось. Нам нужно найти набор прямоугольники, которые инкапсулируют все поменял пиксели.

Было бы банально, но нежелательно, для вычисления единственного, потенциально большой прямоугольник, вмещающий все поменял пиксели. Мы бы предпочли несколько, меньшего размера, плотно прилегающие прямоугольники до указанного минимума размер (это переменная, которая может быть изменено).

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

Производительность имеет решающее значение, отсюда и этот вопрос.

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

Кто-нибудь знает об опубликованных алгоритмах для этого или о решении, которое вы использовали в прошлом?

Спасибо!

12
задан finnw 11 May 2011 в 18:04
поделиться