Je sais qu'il existe une bibliothèque rawpy python pour ouvrir le fichier brut, mais pour modifier les données de pixel, les données d'origine de raw doivent être démasquées. Quelqu'un pourrait-il fournir une solution pour échanger le canal de couleur pour fichier brut codé en tant que BGGR? Merci!Echanger le canal de couleur pour le fichier brut (BGGR -> RGGB)
Edit1: J'ai maintenant un script python (2.7) qui peut fait le travail, mais il enregistre comme le format tiff au lieu de brut.
import rawpy
import imageio
path = 'xxxx.raw'
raw = rawpy.imread(path)
rgb = raw.postprocess()
for x in rgb:
for y in x:
temp = y[0]
y[0] = y[2]
y[2] = temp
raw.raw_image
imageio.imsave('default.tiff', rgb)
Fondamentalement, la question est de savoir comment puis-je stocker l'image de nouveau dans format RAW? Est-ce que la conversion de tiff en raw lossy?
De plus, est-il possible de ne pas démolir le fichier brut et d'échanger les octets (SBGGR8 à SRGGB8)? De cette façon semble pas de problème de perte de données. Edit2: Voici mon code MATLAB brut de processus de métadonnées qui peut permuter le canal sans perte. Mais MATLAB n'est pas un logiciel libre, je suis à la recherche d'une version python. Comme je ne suis pas un expert en traitement de fichiers python, quelqu'un pourrait-il m'aider avec mon script?
row = 640; col = 480;
fin = fopen('original.raw','r');
input = fread(fin,row*col,'uint8=>uint8');
output = reshape(input,row,col);
for y = 1:2:639
for x = 1:2:479
temp = output(y,x);
output(y,x) = output(y+1, x+1);
output(y+1, x+1) = temp;
end
end
fout = fopen('swapped.raw', 'w');
fwrite(fout,output);
fclose(fin);
fclose(fout);
Que diriez-vous de le faire en premier? – Marichyasana