L'obtention de valeurs RVB de chaque pixel d'une image raw en C
Je veux lire les valeurs RVB de chaque pixel d'une image raw. Quelqu'un peut me dire comment faire? Merci pour l'aide!
le format de mon image raw est .CR2 qui viennent de la caméra.
Vous devez spécifier comment la "première image" est représenté et ce format c'est.
Définir "image raw". C'est un fichier image? Si oui, quel genre de fichier? Ou êtes-vous essayer de faire une capture d'écran? De modifier une question à ajouter les détails.
Quel est le format de votre "brut" de l'image. Est-ce une image ou un fichier image prise à partir d'un appareil photo peut-être?
Définir "image raw". C'est un fichier image? Si oui, quel genre de fichier? Ou êtes-vous essayer de faire une capture d'écran? De modifier une question à ajouter les détails.
Quel est le format de votre "brut" de l'image. Est-ce une image ou un fichier image prise à partir d'un appareil photo peut-être?
OriginalL'auteur | 2009-10-08
Vous devez vous connecter pour publier un commentaire.
En supposant que l'image est w * h pixels, et stockés dans le vrai "paniers" format RGB avec aucune composante alpha, chaque pixel aurez besoin de trois octets.
Dans la mémoire, la première ligne de l'image peut être représentée dans awesome graphiques ASCII comme ceci:
Ici, chaque Rn Gn et Bn représente un octet unique, donnant le rouge, le vert ou le bleu de la composante de pixel n de scanline. Notez que l'ordre des octets peut être différente pour différents "crus" formats; il n'y a pas de norme mondiale. Les différents environnements (cartes graphiques, caméras, ...) le faire différemment pour quelque raison que ce soit, vous avez simplement à savoir la mise en page.
La lecture d'un pixel peut alors être effectuée par cette fonction:
Remarquez comment la hauteur de l'image n'est pas nécessaire pour ce travail, et la façon dont la fonction est gratuite à partir de vérification de limites. Une production de qualité en fonction pourraient être plus blindée.
Mise à jour Si vous êtes inquiet de cette approche sera trop lent, vous pouvez bien sûr juste une boucle sur les pixels, au lieu de:
Cela pourrait être vrai, en supposant qu'aucun inline. J'ai ajouté une explicite imbriquée pour extrait pour montrer que, trop. Merci.
J'ai un fichier jpg, j'ai utilisé imagemagick et appliquée seuil, et qui change tous les pixels au-dessus de la valeur seuil que des noirs et d'autres blancs. Maintenant, je veux vérifier pour chaque pixel, si il est noir ou blanc. Va à la méthode de travail. Quelle sera la valeur pour le rouge , le vert et le bleu? 255?
Aussi, comment puis-je indiquer mon fichier. Si j'ai mon fichier "abc.jpg" alors d'où vient cette info, allez? Merci.
OriginalL'auteur unwind
Aucune des méthodes posté jusqu'à présent sont susceptibles de travailler avec un appareil photo "brute" du fichier. Les formats de fichier pour les fichiers raw sont propres à chaque fabricant, et peut contenir des données sur l'exposition, les constantes d'étalonnage, et la balance des blancs de l'information, en plus des données de pixel, qui sera probablement dans un format compressé, où chaque pixel prend plus de place qu'un octet, mais moins de deux.
Je suis sûr qu'il y a open-source fichier raw convertisseur de programmes que vous pouvez consulter pour trouver les algorithmes à utiliser, mais je ne sais pas du tout vers le sommet de ma tête.
Viens de penser à une complication supplémentaire. Le fichier raw ne stocke pas les valeurs RVB de chaque pixel. Chaque pixel enregistre une seule couleur. Les deux autres couleurs doivent être interpolées à partir de heighboring pixels. Vous aurez certainement être mieux de trouver un programme ou une bibliothèque qui fonctionne avec votre appareil photo.
OriginalL'auteur Mark Bessey
Une image RAW est un format non compressé, donc vous avez juste à point où votre pixel (en ignorant tout possible de l'en-tête, puis en ajoutant la taille du pixel fois le nombre de colonnes fois le nombre de ligne plus le nombre de la colonne), puis lire ce que des données binaires est de donner un sens au format de la présentation des données (avec des masques et des équipes, vous savez).
C'est la procédure générale, pour votre format actuel, vous aurez pour vérifier les détails.
OriginalL'auteur fortran