/* On filtre l'image sans la redimensionner */
void Fenetre::Filtrage()
{
  float angle;

  if (BBox->isChecked())
    {
      PictModif = filtrer_grayscale(Picture);
      PictModif = filtrer_seuillage(PictModif,155);
      angle = rotation_calcul_angle(PictModif);
      
      if (angle != 0.0)   
	PictModif = filtrer_rotation(PictModif, angle);
      
      PictModif = filtrer_median(PictModif, NBelt_listd,155);
      qualite_image = 1;
    }
  else
    {
      PictModif = filtrer_grayscale(Picture);
      PictModif = filtrer_seuillage(PictModif,200);
      qualite_image = 0;
    }
  Image2Apercu(&PictModif);

  BBut->show(); // on propose de sauvegarder
  BBut->resize(90, 40);
  BBut->move(440, 400);
  BBut->setText("Sauver");
  connect(BBut, SIGNAL(clicked()), this, SLOT(Sauvegarde()));
}
Beispiel #2
0
void mat_Filtrer_bien(QImage *pix, QLabel *lblCadre, int NBelt_listd,int s)
{
 QImage ima;
 QPixmap * img;
 // QImage pix;
 float angle;
 int w,h;
 
 // img = lblCadre->pixmap();
 //pix = img->convertToImage();
      
  //*******************************************************************/  

  *pix = filtrer_redim(*pix);

  w = pix->width();
  h = pix->height();
  lblCadre->setGeometry(QRect(10,130,w,h ));
  *pix = filtrer_grayscale(*pix);
  *pix = filtrer_seuillage(*pix,s);

    angle = rotation_calcul_angle(*pix);

  if (angle != 0.0)   
    ima = filtrer_rotation(*pix,angle);
  else
    ima = *pix;
  
  ima = filtrer_median(ima, NBelt_listd,s);
  lblCadre->setPixmap(ima);
  *pix = ima;
}
void Fenetre::Filtrage_simple(QImage * im) // filtrage pour les tests : pas de rotation.
{
  int s;
  if (qualite_image)
    s = 155;
  else
    s = 200;

  *im = filtrer_median(*im, NBelt_listd,s);
 // Image2Apercu(im);
}
Beispiel #4
0
int main(int argc, char *argv[]) {
  if (argc == 2) {
    char *path = my_strdup(argv[1]);
    image_t *img = charger_image_pgm(path);
    if (!img) { fprintf(stderr, "main: Invalid image abort\n"); return 1;}
    image_t *new_img = rotation(img, 90);
    image_t *tmp = rotation(new_img, 180);
    detruire_image(new_img);
    new_img = rotation(tmp, 270);
    detruire_image(tmp);
    tmp = rotation(new_img, 90);
    detruire_image(new_img);
    new_img = tmp;
    if (memcmp(new_img->buff, img->buff, img->h * img->w)) {
      fprintf(stderr, "Error image are differents after 4 * 90 rot.\n");
    } else {
      fprintf(stderr, "Images are equals rotation is OK!\n");
    }
    sauver_image_pgm("replique2.pgm", new_img);
    char const *noyaux[11] = {
      "noyaux/noyau_deriv.txt",
      "noyaux/noyau_deriv2.txt",
      "noyaux/noyau_derivxy2.txt",
      "noyaux/noyau_derivy2.txt",
      "noyaux/noyau_exp.txt",
      "noyaux/noyau_gauss.txt",
      "noyaux/noyau_laplace4.txt",
      "noyaux/noyau_laplace8.txt",
      "noyaux/noyau_moy.txt",
      "noyaux/noyau_sobelx.txt",
      "noyaux/noyau_sobely.txt"};
    for (size_t x = 0; x < 11; x += 1) {
      noyau_t *core = charger_noyau(noyaux[x]);
      fprintf(stderr, "%zu: core.path: %s"
          " | core.dim: %d\n",x, noyaux[x], core->dim);
      for (size_t i = 0; i < core->dim; i += 1) {
        for (size_t j = 0; j < core->dim; j += 1) {
          fprintf(stderr, "%d ", core->coeffs[j + core->dim * i]);
        }
        putchar('\n');
      }
      image_t *img2 = convoluer(new_img, core);
      detruire_image(img2);
      detruire_noyau(core);
    }

    detruire_image(img);
    img = filtrer_median(new_img);
    detruire_image(img);
    detruire_image(new_img);
    free(path);
  }
  return (0);
}
Beispiel #5
0
void OnMedian(GtkWidget* widget, gpointer data) {
  (void) widget;
  (void) data;
  pile_new_image(filtrer_median(cur_image));
}