Изменение размера изображения с использованием его данных

У меня есть программа C ++, которая читает в файл изображения, имеет дело с заголовком, а затем сохраняет данные цвета изображения в указателе на указатель символов

unsigned char** pixelData = new unsigned char*[header.width*header.height];
for(int i=0;i<header.width*header.height;i++)
pixelData[i] = new unsigned char[bytes2read]; //bytes2read is 3(rgb) or 4(rgba)

Если бы я хотел затем изменить масштаб изображения до половины его первоначального размера, как я мог это сделать? Кто-нибудь знает удобный алгоритм для этого?

2

Решение

Как насчет использования OpenGL. Это почти тривиально, чтобы сделать с OpenGL, и лучшая часть заключается в том, что работа ускоряется с помощью графического процессора.

0

Другие решения

Самая простая вещь, которая даст хорошие результаты, — это просто усреднить значения R, G, B каждого квадрата 2×2 пикселей.

Обычно вы применяете фильтр к изображению, чтобы определить новое значение для каждого выходного пикселя. Среднее значение — это то, что называется блочным фильтром с шириной 2. Есть и другие фильтры, которые вы можете использовать, которые будут давать лучшие или худшие результаты, но среднее значение — это то, с чего я бы начал.

0

По вопросам рекламы [email protected]