Qu'est-ce que le format BMP pour les Images avec échelle de Gris?
Qu'est-ce que le format BMP pour les Images avec échelle de Gris (en particulier pour les 16 bits par pixel) ?
Le wikipedia juste parle de la couleur des images de bmp.
Mise à jour:
Juste pour une mise à jour et d'informations pour les futurs visiteurs, je vais pour PGM que ce n'est pas compressé et peut prendre en charge 16 bits en niveaux de gris. Une autre option est d'utiliser PNG, mais il compresse les données (ce qui n'est pas ce que je veux) comme discuté ici .
Notez également que l'image peut être déformée, comme la plupart des moniteurs prennent en charge 256 couleurs et pas 4096 pour 16 bits. Pour que l'Image soit saturé.
C'était si surprenant de savoir que la BMP est presque impuissant en cas de niveaux de Gris 16 bits images.
Merci pour les personnes qui m'ont aidé à comprendre le problème.
est-il perte de compression ?
Oui, le format PNG est lossless - il utilise zlib pour la compression: en.wikipedia.org/wiki/Portable_Network_Graphics
OriginalL'auteur gpuguy | 2012-06-18
Vous devez vous connecter pour publier un commentaire.
Pour les images en niveaux de gris, je voudrais utiliser 8 bits BMP. 8 bits Pgo peut coder les couleurs avec la palette. Toutefois, si vous ne l'utilisez pas, vous pouvez simplement interpréter les valeurs de la couleur
[0...255]
comme les couleurs, du noir (0) au blanc (255).Edit: je ne voudrais pas utiliser BMP de 16 bits en niveaux de gris des images. Techniquement, vous pouvez utiliser de 16 bits par pixel format BMP pour l'encodage 16 bits en niveaux de gris de données (http://en.wikipedia.org/wiki/BMP_file_format#Pixel_format). Dans la pratique, cependant c'est une mauvaise idée (lire: hacky) depuis que la profondeur est conçu pour encoder alpha, rouge, vert et bleu des échantillons de pixels.
Un meilleur format pour le stockage de 16 bits par pixel de niveau de gris de données est PNG.
Également vous demander, pensez-vous vraiment, vraiment besoin de ce surplus de précision? Pour la plupart des applications, 8 bits par pixel est tout simplement parfait (=si vous n'avez pas les exigences de précision, ce serait le cas).
Ouais. La question a été mise à jour plus tard avec cette info.
D'excuses, de ne pas prêter attention à ce qu'une mise à jour 🙂
Tout à fait d'accord avec votre BMP évaluation qu'il faudrait non seulement un fichier personnalisé de l'auteur, mais un fichier personnalisé lecteur aussi. Un standard BMP lecteur à interpréter les nuances de gris qu'il tente d'accomplir, comme quelques autres couleurs, et la sortie (pour dire le moins) intéressant. +1
OriginalL'auteur jsalonen
Vous avez raison, BMP ne sait que sur les couleurs. La façon de le faire est de créer une palette de 256 entrées, où chaque entrée a la même valeur pour R,G,B: première entrée (0,0,0), la deuxième entrée (1,1,1), etc. Maintenant, l'image de 8 bits par pixel à l'aide de la palette.
Edit: compte tenu de votre nouvelle exigence de 16 bits en niveaux de gris, je pense que vous avez 2 choix: se convertir à 8 bits, ou d'utiliser un autre format autre que le format BMP.
la question n'est pas mentionné de 16 bits lors de l'écrit.
D'excuses, de ne pas prêter attention à cela comme étant une mise à jour 🙂 Autre que cela, la bonne réponse!
OriginalL'auteur Mark Ransom
Tel qu'il apparaît, TIFF et PNG prend en charge 16 bits en niveaux de gris.
http://en.wikipedia.org/wiki/Grayscale
Im en supposant que ces images que vous souhaitez enregistrer ne sont pas simplement pour l'affichage mais pour une sorte de post-traitement où vous avez besoin d'une précision supplémentaire? Si pas, alors je suggère de supprimer le moins significatif de 8 bits, et le stockage de plus simple bitmap 8 bits avec une carte de couleur pour faire correspondre chaque valeur RGB, avec une valeur -> (valeur, valeur, valeur) RGB cartographie.
OriginalL'auteur trumpetlicks
Hormis l'aide d'une palette, vous pouvez créer une échelle de gris BMP (8 bits par pixel) par la rédaction d'un BMP avec un
BITMAPV4HEADER
. et ensemblebV4RedMask
,bV4GreenMask
etbV4BlueMask
à la même valeur. Toutefois, le minimumbcBitCount
valeur pour un tel format est de 16, de sorte que chaque pixel sera encore besoin d'occuper deux octets. Vous pouvez utiliser le deuxième octet pour le canal alpha (transparence).Il ne ressemble pas du tout BMP version prend en charge 16 bits de profondeur de couleur. Même si le format de fichier apparemment le permet (
bcBitCount=16
etbV4…Mask=0xFFFF
), à l'image des éditeurs et des bibliothèques de jeter l'extra.Certains documents reportez-vous à la version 64 BITS fichiers BMP, cependant il ne sait pas comment cela pourrait être compatible avec la
BITMAPV4HEADER
champs, que le masque de champs sont tous 32 bits (donc il n'est pas possible de spécifier un canal de masque pour la version 64 BITS).Vous n'avez pas à compresser les fichiers PNG si vous ne souhaitez pas. À l'aide d'un niveau de compression de 0 mettra les pixels comme ils sont (plus d'un zlib en-tête/pied de page).
16 bits de profondeur permettrait de 65536 distinctes par le canal des valeurs de luminosité, pas de 4096. La distorsion des sons comme un problème avec la courbe gamma, et n'est pas vraiment lié au format de fichier question.
OriginalL'auteur Vladimir Panteleev