Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Для меня это вдвойне забавно, так как я сам давно уже занимаюсь глубоким обучением и как раз пару недель назад тоже пробовал применять вейвлеты в генеративной модели по аналогии со SWAGAN. :)
У меня в бложике, кстати, есть эта же статья, но немного подправленная, а ещё продолжение про лифтинг. Может, позже код выложу с примерами к ним.
<code>
/** \brief One step 1D 5/3 discrete wavelet transform.
\param in The input data array.
\param out The output data array.
\param w The length.
*/
static inline void dwt_53_1d(int16 *in, int16 *out, const uint32 w)
{
int wt = w - 2, i, j;
int16 *l, *h;
l = out; h = &out[(w>>1) + (w&1)];
h[0] = in[1] - ((in[0] + in[2])>>1);
l[0] = in[0] + (h[0]>>1);
for(i=2,j=1; i < wt; i+=2,j++){
h[j] = in[i+1] - ((in[i] + in[i+2])>>1);
l[j] = in[i] + ((h[j-1] + h[j])>>2);
}
if(w&1){
l[j] = in[i] + (h[j-1]>>1);
} else{
h[j] = in[i+1] - in[i];
l[j] = in[i] + ((h[j-1] + h[j])>>2);
}
}
</code>
Теперь ложка дегтя, вейвлеты совершенно не пригодны для сжатия межкадровых разностей изображений, т.е видеопоследовательностей, по этому и не получили широкого распространения.
Её [матрицу изображения] можно записать построчно в файл и сжать каким-то архиватором.
Это преобразование получило название вейвлета D4 (читателю предлагается самостоятельно разгадать тайну этого буквенно-цифрового названия).Ну, прежде всего приходит на ум, что буква D происходит от фамилии Добеши, а цифра 4 — от того, что вейвлет имеет дело с четвёрками.
Вейвлет-сжатие «на пальцах»