convertdo ImageMagick pode fazê-lo.
Por exemplo, uma escala de cinza 2x3 de 8 bits:
printf '\x00\xFF\x88\xFF\x00\xFF' > f
Então:
convert -depth 8 -size 3x2+0 gray:f out.png
Explicação do comando:
-depth 8: cada cor tem 8 bits
-size 2x3+0: 2x3imagem. +0significa começar no deslocamento 0 no arquivo. Se houver cabeçalhos de metadados, você poderá ignorá-los com o deslocamento.
gray:f: o arquivo de entrada é fe o formato é gray, conforme definido em http://www.imagemagick.org/script/formats.php Essa notação estranha é usada porque o ImageMagick geralmente determina o formato da extensão, mas aqui não há extensão .
O problema agora é como visualizar a saída. Um direto eog:
eog out.png
não é muito bom porque a imagem é muito pequena e, se você aumentar muito o zoom, eogusa um algoritmo de exibição que mistura pixels, o que é melhor para a maioria das fotos, mas não no nosso caso. Encontrei duas possibilidades:
gimp out.png. Os editores de imagens devem mostrar cada pixel.
convert out.png -scale 300x200 out2.png. -scaleé necessário em vez de -resize, já que -resizemistura pixels de maneira semelhante eogà padrão.
Resultado:

Exemplo de RGB:
printf '\xFF\x00\x00\x00\xFF\x00\x00\x00\xFF' > f
convert -depth 8 -size 3x1+0 rgb:f out.png

Testado no Ubuntu 16.04, ImageMagick 6.8.9.
hdpara formatar. Então você pede para ver uma imagem. Se for uma imagem, será em um formato de imagem (como bmp) que terá no mínimo um cabeçalho que identifique o formato, a largura, a altura, a profundidade da cor e talvez também tenha uma paleta de cores em anexo.