Programme en Python et/ou en C pour connaître l'intensité reçu par un pixel...

Démarré par Laure-Anh, Octobre 11, 2015, 17:10:21

« précédent - suivant »

Laure-Anh

Connaissez-vous un programme informatique en Python ou en langage C permettant de connaître l'intensité lumineuse reçue par un pixel de capteur CCD ? Idem pour un pixel de capteur CMOS ?
Merci par avance pour vos contributions.

spinup

Tu veux dire a partir du RAW? Je crois pas que l'intensite absolue soit accessible, c'est toujours une valeur relative en fonction du gain de l'amplification.
Pour la valeur contenue dans le RAW pour chaque photosite, tu peux poser la question aux developpeurs qui s'occupent du dematricage sur le forum de Rawtherapee, je pense qu'il doivent pouvoir connaitre ca.
http://rawtherapee.com/forum/

Laure-Anh

Merci spinup d'avoir pris le temps de répondre.

Il y a tous les risques que je sois amenée à reproduire et à expliquer en labo le principe de l'autofocus par détection de phase et par détection de contraste, avant d'envisager d'enregistrer une image quelle qu'elle soit. Je suis à la recherche d'infos me permettant d'exploiter en pratique un CCD puis deux CCD, très en amont de l'enregistrement du fichier image, jpeg ou RAW...Mais tout est bon à prendre, tant que ce sont des données à ma portée. Bien à toi,

spinup

Citation de: Laure-Anh le Octobre 11, 2015, 21:14:03
Je suis à la recherche d'infos me permettant d'exploiter en pratique un CCD puis deux CCD, très en amont de l'enregistrement du fichier image, jpeg ou RAW...

OK, je l'ai fait en TP quand j'etais etudiant avec du C/C++ si je me souviens bien mais ca date un peu. Y a pas de reponse simple a ta question: ca depend si cest un CCD analogique ou numerique, si tu veux exploiter un signal temps reel ou seulement des captures.
Dans tous les cas il faudra trouver les bonnes librairies en C (windows image acquisition semble etre la plus repandue) ou toolbox python pour l'acquisition d'image, et avoir la carte d'acquisition et les drivers pour le CCD.

Je connais pas bien python, mais matlab est peut etre un choix plus accessible avec plus d'aide et d'exemples disponibles: http://uk.mathworks.com/products/imaq/

Laure-Anh


fred134

Je n'ai pas bien compris ce que tu veux faire, ni de quoi tu pars ? Tu veux connaitre l'intensité lumineuse en fonction du signal ? Il faut que tu caractérises ton capteur a priori (à moins que les données soient dispo ?)

En amont du capteur tu as une intensité lumineuse que tu peux mesurer directement sur la lumière. En aval, tu as des photoélectrons (entre les photons et les e- il y a le rendement quantique), puis le signal (les e- amplifiés).
Si c'est le nombre d'e- qui t'intéresse, tu peux le calculer à partir du bruit d'un signal "moyen". Et en déduire le rendement quantique, si tu as besoin des e- en fonction de l'intensité lumineuse. Ou d'autres correspondances.

NB : je ne suis pas spécialiste, et ce type d'éléments très généraux ne correspond probablement pas à ton besoin, désolé si j'ai répondu à côté mais je me suis dit que ça pouvait toujours servir...

spinup

Je crois qu'il s'agit simplement de recuperer le signal de sortie d'un CCD sous formes d'un tableau de valeurs pour chaque pixels. Et ensuite, je suppose, d'utiliser le signal pour faire la mise au point soit par difference de phase, soit par maximisation du contrastes.

Ca depend du materiel a disposition. En partant de zéro, une idee peut etre de se rapprocher d'universités qui font ce genre de choses en TP et demander ce qu'ils utilisent comme matos et logiciel.

http://www.creatis.insa-lyon.fr/~bernard/files/courses/TP_VISION.pdf
http://www.telecom-physique.fr/formation/ingenieur-generaliste/programmes-2014-2015/programme-2a-2014-2015/image-et-vision/

Laure-Anh

Citation de: spinup le Octobre 16, 2015, 17:24:11
Je crois qu'il s'agit simplement de recuperer le signal de sortie d'un CCD sous formes d'un tableau de valeurs pour chaque pixels. Et ensuite, je suppose, d'utiliser le signal pour faire la mise au point soit par difference de phase, soit par maximisation du contrastes.

Ca depend du materiel a disposition. En partant de zéro, une idee peut etre de se rapprocher d'universités qui font ce genre de choses en TP et demander ce qu'ils utilisent comme matos et logiciel.

http://www.creatis.insa-lyon.fr/~bernard/files/courses/TP_VISION.pdf
http://www.telecom-physique.fr/formation/ingenieur-generaliste/programmes-2014-2015/programme-2a-2014-2015/image-et-vision/

C'est exactement ça. On nous demande de comprendre une technologie donnée, d'expliquer le principe de cette technologie et de reproduire cette technologie en labo...
Merci à vous deux,

chelmimage

Cette manip me parait intéressante: elle peut permettre de savoir combien de bits sont nécessaires pour quantifier de façon utile l'amplitude du signal de sortie selon les niveaux d'éclairement.
A rapprocher du Pb Sony, 12 bits, 14 bits?
Ai-je bien compris?
edit: pour ceux qui savent déjà ce ne sera évidemment pas une découverte! pour moi si!  ;) ;)

Laure-Anh

J'avance dans mes recherches...
Pour ceux que cela peut concerner ou intéresser, voici quelques liens :

Principe des CCD  :  http://www.lesia.obspm.fr/perso/stephane-erard/docs/CCD/CCD1.html
Formations d'images, exemple de l'oeil et de l'appareil-photo : http://109.26.139.116/s.remyhtml/ph_ch_1S_2011/corrige-activites/Act03-oeil-appareil-photo_corrige.pdf
TP proprement dit portant sur l'autofocus : http://www2.ac-lyon.fr/enseigne/physique/spip.php?article374

baséli

Citation de: spinup le Octobre 11, 2015, 22:55:26
les drivers pour le CCD.

De ce que je comprends de ta question, c'est ça le plus important. On va sûrement te donner un modèle de CDD avec une électronique qui va bien et une interface informatique quelconque sur cette électronique (USB, port série, que sais-je) et des API basiques qui vont bien. Si c'est un modèle courant, tu trouveras peut-être des librairies de plus haut niveau bâties sur les API de base, qui te faciliteront bien le travail.

Si tu dois trouver toi-même le CCD à acheter, c'est différent, cherche le truc le plus connu et le moins cher, il y a sûrement les programmes qui vont bien disponibles sur internet ou livrés avec le matos.

sledof

Voir peut-être ce qui n'existe dans le monde raspberry ou arduino, c'est assez riche extensions 'imageur' et il'yna en général!le nécessaire pour développer...

Stephane

Laure-Anh


elscode

L'histoire devrait toujours commencé par une bonne grosse lecture du datasheet du composant CCD utilisé  ;D

Ce sera plus instructif qu'un échange sur un forum dédié à la photo.

elscode

Une piste rapide : une fois que tu as ta matrice de points (image), il faut la travailler dans le domaine fréquentiel pour isoler les informations de hautes fréquences (donc ceux qui sont hors de la zone de flou).

Ca se fait très bien avec des simples filtres a réponse impulsionelle finie (FIR). Il existe des lib dans presque tous langages, et ca s'implémente assez bien sur DSP.

Il "suffit" de modéliser un filtre passe haut :D

Bon courage ;-)

spinup

Citation de: elscode le Novembre 11, 2015, 13:30:58
Une piste rapide : une fois que tu as ta matrice de points (image), il faut la travailler dans le domaine fréquentiel pour isoler les informations de hautes fréquences (donc ceux qui sont hors de la zone de flou).

Ca se fait très bien avec des simples filtres a réponse impulsionelle finie (FIR). Il existe des lib dans presque tous langages, et ca s'implémente assez bien sur DSP.

Il "suffit" de modéliser un filtre passe haut :D
C'est des notions qui peuvent sembler obscures mais qui ne sont pas tres difficiles a expliquer:

Pour quantifier/mesurer/detecter un contour net, on fait la difference entre un pixel et son ou ses voisins. On peut le faire dans la direction horizontale (pour detecter les contours verticaux) ou dans la direction verticale (pour dtecter les contours horizontaux). On peut aussi le faire dans tous les directions.

Pour une image 1024x680, ca donnerait quelque chose comme ca en C:

for (i=1; i<1024; i++)
{
for (j=1, j<680; j++)
{

ContourVertical[ i][j]= Image[ i][j]-Image[i-1][j] + Image [ i][j]-Image[i+1][j];

ContourHorizontal[ i][j]= Image[ i][j]-Image[ i][j-1] + Image[ i][j]-Image[ i][j+1];

}
}


Les filtres a reponses impulsionnelle finies sont des outils sous forme de matrice qui realisent la meme operation, mais peuvent faire d'autre choses: http://docs.gimp.org/2.6/fr/plug-in-convmatrix.html

Pour le contour vertical tel que  j'ai donné au dessus on utilisera la matrice
0 0 0
1 -2 1
0 0 0

Pour le contour horizontal
0 1 0
0 -2 0
0 1 0


marco56

Au cas où, je ne sais pas si cela peut t'intéresser, j'enseigne un peu le python. Dans cette partie, je fais du traitement d'image : seuillage, modification de contraste, floutage, ... à partir d'image en jpg ou png.
Si besoin, j'ai un poly sur le net destiné à mes étudiants.
Une manoeuvre réussie est une catastrophe évitée de justesse.

Laure-Anh

Citation de: marco56 le Novembre 11, 2015, 22:36:11
Au cas où, je ne sais pas si cela peut t'intéresser, j'enseigne un peu le python. Dans cette partie, je fais du traitement d'image : seuillage, modification de contraste, floutage, ... à partir d'image en jpg ou png.
Si besoin, j'ai un poly sur le net destiné à mes étudiants.

Je suis preneuse et t'en remercie par avance.

(PS : J'ai trouvé une présentation - un peu costaud pour mon niveau - qui donne les principes théoriques dans les grandes lignes.
Pour ceux que cela pourrait également concerner, c'est ici : http://paristech.institutoptique.fr/site.php?id=31&fileid=13012 )

marco56

Citation de: Laure-Anh le Novembre 11, 2015, 22:48:17
Je suis preneuse et t'en remercie par avance.

(PS : J'ai trouvé une présentation - un peu costaud pour mon niveau - qui donne les principes théoriques dans les grandes lignes.
Pour ceux que cela pourrait également concerner, c'est ici : http://paristech.institutoptique.fr/site.php?id=31&fileid=13012 )


Voici l'adresse :
http://obelix56.free.fr/spip.php?article55
Tu prends "info-eleve.pdf".
Si tu souhaites t'entraîner, tu peux aussi télécharger le fichier-eleve.
Les fichiers pdf python-eleve et scilab-eleve sont des parties de info-eleve.
Si tu le souhaites, je peux ne mettre que la partie sur le traitement d'images, il faut juste que je recompile les fichiers.
Enfin, j'ai la version prof (avec les solutions). Si tu veux, tu peux me contacter à l'adresse du site (remplace le premier . par  [at] )
Une manoeuvre réussie est une catastrophe évitée de justesse.

Miaz3

Ça demande un investissement certain (en temps surtout) : http://fr.mathworks.com/
La toolbox des image process : http://fr.mathworks.com/help/images/index.html

Sinon est que les lib dispo dans les sources de daveCoffin (dcRaw) permuteraient de faire avancer le chmilblik ?

marco56

Citation de: Miaz3 le Novembre 12, 2015, 11:05:48
Ça demande un investissement certain (en temps surtout) : http://fr.mathworks.com/
La toolbox des image process : http://fr.mathworks.com/help/images/index.html

Sinon est que les lib dispo dans les sources de daveCoffin (dcRaw) permuteraient de faire avancer le chmilblik ?

Ce serait dommage d'utiliser matlab, payant, alors que python et scilab, par exemple, sont gratuits (sauf si Laure-Anh possède déjà une licence matlab).
Une manoeuvre réussie est une catastrophe évitée de justesse.

elscode


Miaz3

Je ne connais ni l'un ni l'autre j'utilise énormément les fonctions (très bien détaillés) toolbox sur le site de mathwork.
Mais dans ce cas, effectivement si scilab est gratos au temps partir dessus.

marco56

Une manoeuvre réussie est une catastrophe évitée de justesse.