Programme info
{
fichimage_entree ifich(p[0].p_fname.fname); imacouleur imacol((imadata)ifich.LoadPGM()); imadata imaR=imacol.select_composante(0), imaG=imacol.select_composante(1), imaB=imacol.select_composante(2);
/************************ début à compléter *************************/
//Image RVB normalisée à une composante en couleur imacol.RVB2NormeL1();
//Extraction de chaque canal de l'image (Rouge et Bleu principalement) dans des images différentes imaR=imacol.select_composante(0); imaG=imacol.select_composante(1); imaB=imacol.select_composante(2);
//Binarisation avec choix du seuil pour les pixels avec une forte valeur dans le canal bleu et rouge imabin imaRbin(imaR,p[1].p_float.val), imaBbin(imaB,p[1].p_float.val);
//Binarisation avec choix du seuil pour les pixels avec une faible valeur dans le canal bleu, vert et rouge imabin imabin_lowG(imaG,p[2].p_float.val), imabin_lowB(imaB,p[2].p_float.val), imabin_lowR(imaR,p[2].p_float.val); imabin_lowG=imabin_lowG.negatif(); imabin_lowB=imabin_lowB.negatif(); imabin_lowR=imabin_lowR.negatif();
//Sélection des pixels de forte intensité rouge et de forte intensité bleu, sans imaRbin=(imaRbin&&imabin_lowG&&imabin_lowB); imaBbin=(imaBbin&&imabin_lowG&&imabin_lowR);
//Elément structurant 3*3 eltstruct S3(3,3);
//Ouverture pour filtrer les imperfections avec choix de l'élément structurant imaRbin=imaRbin.erode(S3,p[4].p_sel.sel_cur+1).dilate(S3,p[4].p_sel.sel_cur+1); imaBbin=imaBbin.erode(S3,p[4].p_sel.sel_cur+1).dilate(S3,p[4].p_sel.sel_cur+1);
//Fermeture pour combler les trous avec choix de l'élément structurant imaRbin=imaRbin.dilate(S3,p[4].p_sel.sel_cur+1).erode(S3,p[4].p_sel.sel_cur+1); imaBbin=imaBbin.dilate(S3,p[4].p_sel.sel_cur+1).erode(S3,p[4].p_sel.sel_cur+1);
//Création de l'image de contour sur l'image binaire de rouge char *masqR; masqR="Sobel"; imacontours