|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.11.2013, 20:27 | #1 |
Новичок
Джуниор
Регистрация: 23.11.2013
Сообщений: 3
|
Фрактальное сжатие изображений
Здравствуйте, уважаемые форумчане! Необходима ваша помощь по реализации проекта фрактального сжатия изображений. В общем, так сказать код нашел, но так как с графикой и с классами не работал очень много непонятных функций.
В чем состоит проблема. Создал проект, файлы все добавил, кроме библиотек (думаю по умолчанию такие должны быть, так как ничего не подчеркивает), а вот при запуске ничего не выдает. А иногда выбивает ошибку. Просьба глянуть функцию main(). P. S. Если у кого есть уже реализованная программа, не могли бы вы поделиться Вот код файла main.cpp #include <cstdio> #include <cstdlib> #include <vector> #include <string> #include <windows.h> using namespace std; #include "Image.h" #include "IFSTransform.h" #include "Encoder.h" #include "QuadTreeEncoder.h" #include "Decoder.h" int verb = 0; bool useYCbCr = true; void printUsage(char *exe); void Convert(Encoder* enc, Image* source, int maxphases, int output) { printf("Loading image...\n"); source->Load(); int width = source->GetWidth(); int height = source->GetHeight(); int imagesize = source->GetOriginalSize(); printf("Encoding...\n"); DWORD time = GetTickCount(); Transforms* transforms = enc->Encode(source); time = GetTickCount() - time; printf("Encoding time: %d ms\n", time); int numTransforms = transforms->ch[0].size() + transforms->ch[1].size() + transforms->ch[2].size(); printf("Number of transforms: %d\n", numTransforms); printf("Raw image bytes per transform: %d\n", imagesize/numTransforms); int transformSize = numTransforms * sizeof(IFSTransform); int bogocompressionratio = imagesize/(transformSize/sizeof(int)); printf("Compression Ratio: %d:1\n", bogocompressionratio); printf("Decoding...\n"); Decoder* dec = new Decoder(width, height); for (int phase = 1; phase <= maxphases; phase++) { dec->Decode(transforms); // Save all channels (note: channel 0 means all channels). if (output >= 2) { for (int ch = 0; ch <= transforms->channels; ch++) { string outName("output"); outName += static_cast<char> ('0' + phase); outName += static_cast<char> ('0' + ch); outName += ".raw"; // Generate output image per each phase Image* producer = dec->GetNewImage(outName, ch); producer->Save(); delete producer; if (output == 2) break; } } } // Save the final image. if (output == 1) { Image* producer = dec->GetNewImage("output.raw", 0); producer->Save(); delete producer; } delete dec; delete transforms; printf("Finished.\n"); } int main(int argc, char **argv) { QuadTreeEncoder* enc; Image *source; string fileName; int threshhold = 100; bool symmetry = false; int phases = 5; int output = 1; bool usage = true; // Load parameters for (int i = 1; i < argc && usage; i++) { string param(argv[i]); if (param == "-v" && i + 1 < argc) verb = atoi(argv[i + 1]); else if (param == "-t" && i + 1 < argc) threshhold = atoi(argv[i + 1]); else if (param == "-p" && i + 1 < argc) phases = atoi(argv[i + 1]); else if (param == "-o" && i + 1 < argc) output = atoi(argv[i + 1]); else if (param == "-f" && --i >= 0) symmetry = true; else if (param == "-r" && --i >= 0) useYCbCr = false; if (param.at(0) == '-') { i++; } else { fileName = param; usage = false; } } if (usage) { printUsage(argv[0]); return -1; } source = new Image(fileName); enc = new QuadTreeEncoder(threshhold, symmetry); Convert(enc, source, phases, output); delete enc; delete source; } void printUsage(char *exe) { printf("Usage: %s [-v #] [-t #] [-p #] [-o #] [-f] [-r] filename\n" "\t-v 0 Verbous level (0-4)\n" "\t-t 100 Threshold (i.e. quality)\n" "\t-p 5 Number of decoding phases\n" "\t-o 1 1:Output final image,\n" "\t 2:Output at each phase,\n" "\t 3:Output at each phase & channel\n" "\t-f Force symmetry operations during encoding\n" "\t-r Enable RGB instead of YCbCr\n", exe ); } |
23.05.2017, 22:07 | #2 |
Регистрация: 17.05.2017
Сообщений: 4
|
поделитесь пожалуйста программной реализацией, если Вам удалось решить данную задачу?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Сжатие изображений с использованием вейвлета | Blame | Фриланс | 3 | 20.11.2012 20:07 |
Сжатие изображений | brain22 | Мультимедиа в Delphi | 1 | 06.06.2012 20:25 |
Сжатие изображений | D_Alekseev | C++ Builder | 1 | 08.03.2012 18:21 |
Фрактальное сжатие изображений. | EVG! | Мультимедиа в Delphi | 2 | 22.11.2010 17:17 |
Производительность и сжатие изображений (аналог Radmin) | elja_1989 | Win Api | 2 | 22.03.2010 14:44 |