Чтение карты высот в виде массива без знака

Я использую библиотеку stbi_image для загрузки изображений. У меня есть JPG, который загружен в unsigned char * с заданной шириной и высотой (и # компоненты = 3, и каждый имеет 8 бит). Чтобы восстановить значение высоты, я предполагаю, что мне нужно собрать каждый компонент на свои места:

height_map_data = stbi_load(heightmap_path, &width, &height, &comp, 1);
if(height_map_data != nullptr)
{
unsigned char* current_head = height_map_data;
unsigned int r, g, b, a;
for(int i = 0; i < height; ++i)
{
for(int j = 0; j < width; ++j)
{
//???? get height ????
//assume comp == 3, img is in rgb, 8bpp
unsigned int pix = current_head[0] << 16 | current_head[1] << 8 | current_head[2];
float h = pix / (256.f * 256 * 256); //is this right??
current_head += comp;
}
}
}

это изображение jpg:
введите описание изображения здесь

Так как правильно распаковать высоту с картинки? Это изображение имеет разные номера RGB, поэтому я предполагаю, что это не 8-битная шкала серого, и поэтому я не думаю, что смогу просто использовать один из компонентов.

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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