Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2013, 20:27   #1
xMarketMaxx
Новичок
Джуниор
 
Аватар для xMarketMaxx
 
Регистрация: 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
);
}
xMarketMaxx вне форума Ответить с цитированием
Старый 23.05.2017, 22:07   #2
Aleshka94
 
Регистрация: 17.05.2017
Сообщений: 4
По умолчанию

поделитесь пожалуйста программной реализацией, если Вам удалось решить данную задачу?
Aleshka94 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сжатие изображений с использованием вейвлета 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