Vous avez donné trop peu d'informations. Tout d'abord, quel est le format d'image fourni par votre appareil photo? Est-ce un format RAW, jpeg, ou quoi d'autre?
Faire programmatiquement (en C pour l'exemple):
La meilleure façon d'aller était d'utiliser une bibliothèque de chargement d'images (par exemple SDL_image), et charger l'image en mémoire, RVB non compressé étant le format cible. Une fois que vous avez un format non compressé image RVB, vous pouvez faire quelque chose comme
// bufPtr points to the start of the memory containing the bitmap
typedef unsigned char byte;
struct rgb { byte red, green blue; } * colorPtr = bufPtr;
for (int i = 0; i < bufSize; i++, bufPtr++) {
byte gray = (unsigned char) (((float) bufPtr->red * 0.3f +
(float) bufPtr->green * 0.59f +
(float) bufPtr->blue * 0.11f))/3.0f * 255.0f + 0.5f);
bufPtr->red = bufPtr->green = bufPtr->blue = gray;
}
Si vous ne voulez pas de code, vous pourriez par exemple utilisez GIMP, chargez votre image et appliquez des désaturés dans le menu des couleurs. Vous pouvez installer le plugin ufraw pour GIMP pour charger des images au format RAW. Si vous voulez stocker l'ensemble des informations de couleur en 8 bits (et n'utilisez pas 8 bits par canal de couleur), il y a une autre option dans GIMP pour diminuer la profondeur de couleur.
Dans quel langage de programmation travaillez-vous? –
Programatically, ou en utilisant un programme d'édition d'image? – karx11erx