Черно-белое изображение с беззнаковым символом синее, а не черное С++

Я читаю изображение .img Gray Scale (заголовок 512 байт, 512 x 512 пикселей x 8 бит на пиксель).

Там я определяю порог для превращения изображения в градациях серого в бинарное изображение (черное/белое).

Но когда я присваиваю пикселям 0, они становятся голубыми (#01fffd)?!?! Когда я использую значение 2, оно почти черное (#020100).

Можете ли вы объяснить мне, как это происходит?

Я прочитал изображение так:

int width = 512;
int height = 512;
File* imageFilePointerIn = fopen("image.img", "r+b");
File* binaryImageFilePointerOut = fopen("imageOut.img",
            "w+b");
unsigned char* header = new unsigned char[512];
unsigned char** imageData = new unsigned char*[width];
unsigned char** binaryImageArray = new unsigned char*[width];
fread(header, sizeof(char), 512, imageFilePointerIn);
for (int i = 0; i < width; i++) {
    data[i] = new unsigned char[height];
    fread(data[i], sizeof(char), height, imageFilePointerIn);
}
for (int i = 0; i < width; i++) {
    binaryImageArray[i] = new unsigned char[height];
}
char unsigned thresholdBinaryImage = 128;
for (int i = 0; i < width; i++) {
    for (int j = 0; j < height; j++) {
        if (thresholdBinaryImage <= data[i][j]) {
            binaryImageArray[i][j] = 255;
        } else {
            binaryImageArray[i][j] = 0;
        }
    }
}
fwrite(header, sizeof(char), headerSize, binaryImageFilePointerOut);
for (int i = 0; i < width; i++) {
    fwrite(binaryImageArray[i], sizeof(char), height,
           binaryImageFilePointerOut);
}
fclose(binaryImageFilePointerOut);
fclose(imageFilePointerIn);

Я понятия не имею, почему цвета могут отображаться вообще? Для отображения я переношу файл .img в файл .ras с кодом, взятым из Интернета. Но я не думаю, что ошибка могла быть там, так как я видел, как другие использовали тот же код для преобразования .img Grayscales в .ras только для отображения без цветов.

Было бы неплохо получить любое предложение :).


person ManWithConcern    schedule 12.02.2014    source источник
comment
В вашем коде нет никакой информации об обработке формата изображения. Это только необработанная обработка пикселей без заголовка файла изображения. Какие инструменты вы используете для открытия таких необработанных файлов?   -  person Arsenii Fomin    schedule 12.02.2014
comment
Да, как я сказал. Я удаляю 512-байтовый заголовок из файла .img и добавляю его после обработки пикселей обратно в новый созданный файл .img перед новыми пикселями. После этого я использую другую программу для переноса .img в файл .ras, а затем просматриваю его с помощью XnView. Но с этой другой программой не должно быть ничего плохого, потому что у других нет проблем с изображениями в градациях серого, которые возникают у меня.   -  person ManWithConcern    schedule 13.02.2014
comment
Я мог бы свести проблему точнее к передаче функции img2ras.exe. Читайте здесь: stackoverflow.com/questions/21820611/   -  person ManWithConcern    schedule 17.02.2014