Как разложить изображение по частотным октавам и потом снова собрать?
=======================================================================

 Помогите конкретизировать пока очень размытую и абстрактную идею.  

  

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

  

На примере бесцветного (в градациях серого) одноканального изображения. Как бинарное дерево.   

Первое число пусть означает, каким цветом залить весь холст. Тут взять цвет, полученный усреднением всех яркостей.  

Далее делим холст пополам по вертикали и по горизонтали: 4 прямоугольника. Какими цветами (и с какой прозрачностью – всегда 50%?) залить их, чтобы чуть приблизиться к исходному изображению.  

Далее опять деление, уже 16.   

И т.п. до мелких деталей, может даже меньше пикселя.  

  

Недостаток тут в чётких границах каждой из «зон». Поэтому, вероятно, не сплошные цвета с четкими границами стоит описывать, а градиенты. Двух-точечные. 4-х-точечные.  

  

Смысл такой записи в том, что можно сравнивать изображения разных разрешений и претерпевших незначительные искажения – где-то дырка, где-то наклейка – на предмет сходства. «Голова» такой записи изображения окажется похожей.  

И уменьшение изображения в такой записи – это отрезание «хвоста».  

  

Есть ли графические кодеки, использующие подобный подход?  

  

Интуицию навеяла одна техника ретуши в Photoshop.  

**Про частотное разложение в PS**Есть такой способ, частотное разложение — когда изображение раскладывается на несколько слоёв так, что в сумме они дают исходное изображение, а в отдельном слое оказываются элементы примерно одного размера / «частоты» – например, веснушки. И можно редактировать их отдельно, от остального. Все прочие детали оказываются в других слоях – либо низкочастотном, либо высокочастотном.  

  

Это делается просто. Копируется исходное изображение. Копия размывается по Гауссу с определённым радиусом. Берётся *разница* (Image - Subtract, scale 2 offset 128) размытого и исходного — это элементы «высокочастотные», мелкие. При наложении в определённом режиме (Linear Light) «ВЧ» слоя и размытого «НЧ» получается исходное изображение без видимых потерь.  

  

Далее трюк можно повторить ещё один или несколько раз, с одним из НЧ или ВЧ слоёв, выделив ещё «частоты» деталей изображения в отдельный слой.  

  

Так получив в отдельном слое можно убрать крупные морщины и прыщи, не повредив мелкую текстуру кожи.  

 

 Эта идея называется вейвлет-разложением.  

В частности, то что вы описываете, похоже на вейвлеты Хаара.  

Вейвлеты используются, например, в jpeg2000 кодеках  

Примеры редактирования картинок ("в отдельном слое можно убрать крупные морщины и прыщи, не повредив мелкую текстуру кожи") есть в Wavelet toolbox, Matlab.