S
S
Sergey Sokolov2020-02-11 20:06:21
Mathematics
Sergey Sokolov, 2020-02-11 20:06:21

How to decompose the image into frequency octaves and then reassemble?

Help to concretize while very vague and abstract idea.

Intuitively, I imagine a way to convert any image into a sequence of numbers and vice versa, without writing colors pixel-by-pixel, but without reference to exact pixels and exact colors, describing brightness changes from general-to-specific.

Using the example of a colorless (grayscale) single-channel image. Like a binary tree.
Let the first number mean what color to fill the entire canvas. Here we take the color obtained by averaging all the brightnesses.
Next, divide the canvas in half vertically and horizontally: 4 rectangles. What colors (and with what transparency - always 50%?) fill them in order to get a little closer to the original image.
Then division again, already 16.
Etc. to small details, maybe even less than a pixel.

The disadvantage here is in the clear boundaries of each of the "zones". Therefore, it is probably not solid colors with clear boundaries that should be described, but gradients. Two-point. 4-point.

The meaning of such a record is that you can compare images of different resolutions and those that have undergone minor distortions - somewhere there is a hole, somewhere there is a sticker - for similarities. The "head" of such an image recording will be similar.
And reducing the image in such a recording is cutting off the “tail”.

Are there any graphics codecs that use a similar approach?

Intuition was inspired by one retouching technique in Photoshop.

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

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

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

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

Answer the question

In order to leave comments, you need to log in

1 answer(s)
U
U235U235, 2020-02-11
@sergiks

This idea is called wavelet decomposition.
In particular, what you are describing is similar to Haar wavelets.
Wavelets are used, for example, in jpeg2000 codecs
. Examples of image editing ("large wrinkles and pimples can be removed in a separate layer without damaging the fine skin texture") are in the Wavelet toolbox, Matlab.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question