Danni
Гость
|
|
« : Февраль 24, 2011, 19:31 » |
|
Пишу конвертер, для своего формата графических файлов (для текстур в общем). Основной упор в сжатии сего формата делаю на дискретное вейлет преобразование (DWT). Только не нужно высказывать мысли по поводу нужности DWT в общем, да и своего формата в частности. Курил мануалы по этой теме до полного просветления, затем приступил к коду. Начал конечно с самых простых функций: x_n - возвращает нужный пиксель из переданной ей строки dwt_line - преобразует строку (сначала вычисляет все нечётные пиксели, затем чётные, и в конце сортирует чётные пиксели в начало строки) dwt_data - перебирает и преобразует все строки, затем столбцы
Меня смущает два вопроса: правильность применения формул во второй функции и то, что низкочастотное изображение формируется в нижнем левом углу, а не в верхнем левом. Первый вопрос появился из-за небольших отличий в результатах применения формул из мануалов и моей реализации. Второй это даже не вопрос, это полный ступор - как такое могло вообще произойти?
Может кто-то сталкивался с этим преобразованием? Есть ли подобные простые алгоритмы у кого?
Выкладываю консольную программу и описанные выше три функции. Программа использует libgcc_s_dw2-1.dll, mingwm10.dll и QtCore4.dll. Форум всё-таки о Qt, поэтому dll не вложил, да и весят много. Программа читает файл input.tga преобразует и записывает результат в output.tga. Читает и пишет только несжатые TGA.
|