Bonjour
je suis sur un système ou je prend une image d'une camera et celle ci est du format .raw et je me dois d'utilisé l'application Rawdisp
L'image est assez mauvaise donc je fait un ravivement des couleurs
Le contour de ma zone d'acquisition est sur fond noir, ma zone d'acquisition est sur fond blanc, et je dois détecter des formes cylindrique de couleur rouge, bleu ou vert qui serai présente sur ma zone d'acquisition.
Le problème est que j'arrive a renforcé les couleur Noir Blanc et Rouge, mais je n'arrive pas à raviver les couleurs bleues et vertes, elles sont soit considérées comme blanc, soit comme noir.
Quelqu'un aurait une idée pour me sortir de la ?
Voici mon code
#include "stdafx.h"
#include <stdio.h>
#include <io.h>
#include <fcntl.h>
void lissage (unsigned short *image)
{
int y,x;
for(y=0; y<=479; y++)
{
for(x=0; x<639; x++)
{
if (image[(y*640)+x]!=0 || image[(y*640)+x]!=1)
{
// NOIR
// lissage horizontale
if (((image[(y*640)+(x-1)]==0)||(image[(y*640)+(x-2)]==0 )) && ((image[(y*640)+(x+1)]==0) ||(image[(y*640)+(x+2)]==0)))
image[(y*640)+x]=0;
//lissage verticale
if (((image[(y-1)*640+x]==0)||(image[(y-2)*640+x]==0 )) && ((image[(y+1)*640+x]==0) ||(image[(y+2)*640+x]==0)))
image[(y*640)+x]=0;
//blanc
// lissage horizontale
if (((image[(y*640)+(x-1)]==0xFFFF)||(image[(y*640)+(x-2)]==0xFFFF )) && ((image[(y*640)+(x+1)]==0xFFFF) ||(image[(y*640)+(x+2)]==0xFFFF)))
image[(y*640)+x]=0xFFFF;
//lissage verticale
if (((image[(y-1)*640+x]==0xFFFF)||(image[(y-2)*640+x]==0xFFFF )) && ((image[(y+1)*640+x]==0xFFFF) ||(image[(y+2)*640+x]==0xFFFF)))
image[(y*640)+x]=0xFFFF;
//rouge
// lissage horizontale
if ((image[(y*640)+(x-1)]==0xF800) && (image[(y*640)+(x+1)]==0xF800))
image[(y*640)+x]=0xF800;
//lissage verticale
if ((image[((y-1)*640)+x]==0xF800) && (image[((y+1)*640)+x]==0xF800))
image[(y*640)+x]=0xF800;
//lissage étoile
if((image[((y-1)*640)+x]==0xF800) && (image[(y*640)+(x-1)]==0xF800)|| (image[((y-1)*640)+x]==0xF800) && (image[(y*640)+(x+1)]==0xF800)|| (image[((y+1)*640)+x]==0xF800) && (image[(y*640)+(x-1)]==0xF800) || (image[((y+1)*640)+x]==0xF800) && (image[(y*640)+(x+1)]==0xF800))
image[(y*640)+x]=0xF800;
}
}
}
}
Merci beaucoup
JB