Ejemplo n.º 1
0
Mat preProcess(Mat &img){

    Mat res = Mat(img.rows, img.cols, CV_8UC1);

    blur( img, res, Size( 3, 3 ), Point(-1,-1) );
    Mat aux = res.clone();
    bilateralFilter ( aux, res, 5, 5*2, 5/2 );
    aux = res.clone();
    cv::GaussianBlur(aux, res, cv::Size(0, 0), 3);
    cv::addWeighted(aux, 1.5, res, -0.5, 0, res);

    //Filtro de Wiener
    cvWiener2ADP(res, res, 5, 5);

    //Binarizacao e Afinamento
    threshold(res, res, mediana(res), 255, THRESH_BINARY_INV);

    //Esqueletização
    thinning(res);

    /*namedWindow("Preprocess", CV_WINDOW_AUTOSIZE);
    imshow("Preprocess", res);
    waitKey(0);*/
    return res;
}
Ejemplo n.º 2
0
void Imagen::acuarela(int k) {
    Pixel pixel_negro(0, 0, 0);

    Pixel2DContainer nuevo_pixels;

    Pixel1DContainer filaNegra(ancho(), pixel_negro);
    int iter = 0;
    while (iter < alto()) {
        nuevo_pixels.push_back(filaNegra);
        iter++;
    }

    int i = 0;
    while (i < alto()) {
        int j = 0;
        while (j < ancho()) {
            vector<Pixel> kVec = kVecinos(pixels, i, j, k);

            if(kVec.size() == (2 * k - 1) * (2 * k - 1))
                nuevo_pixels[i][j] = mediana(kVec);
            else nuevo_pixels[i][j] = pixel_negro;

            j++;
        }
        i++;
    }
    pixels = nuevo_pixels;
}
Ejemplo n.º 3
0
int main(void) {
	unsigned char src[RESOLUCAO][RESOLUCAO][21];
	unsigned char baixa[RESOLUCAO][RESOLUCAO][21];
	unsigned char alta[RESOLUCAO][RESOLUCAO][21];
	unsigned char bin[RESOLUCAO][RESOLUCAO][21];
	int i;
	char fileName[21] = "ImageIrDA/dataxx.csv";
	char fileNameS[22] = "ImageIrDA/ALTASxx.csv";
	char fileNameT[22] = "ImageIrDA/BAIXAxx.csv";

	for(i=1; i<=20; i++) {
		fileName[14] = (i/10) + 0x30;		// Itera nos nomes dos arquivos
		fileName[15] = (i%10) + 0x30;

		imRead(fileName, src, (i-1));
	}
	showImage(src);

	for(i=0; i<20; i++) {

		mediana(src, baixa, i, 5);

	}
	//showImage(baixa);

	for(i=0; i<20; i++) {

		binariza(baixa, bin, i);

	}
	//showImage(bin);

	for(i=0; i<20; i++) {

		laplaciano(bin, alta, i);

	}
	//showImage(alta);

	for(i=1; i<=20; i++) {					// Salva arquivos das imagens pré processadas
		fileNameT[15] = (i/10) + 0x30;		// Itera nos nomes dos arquivos
		fileNameT[16] = (i%10) + 0x30;

		imWrite(fileNameT, baixa, (i-1));
	}

	for(i=1; i<=20; i++) {					// Salva arquivos das imagens pós processadas
		fileNameS[15] = (i/10) + 0x30;		// Itera nos nomes dos arquivos
		fileNameS[16] = (i%10) + 0x30;

		imWrite(fileNameS, alta, (i-1));
	}

	return 0;
}
Ejemplo n.º 4
0
int main(int argc, const char **argv){

    int posicion;
    int numeros[N] = {1, 1, 2, 3, 4, 7};

    posicion = mediana();

    printf("Mediana:  %.2lf\n", numeros[posicion] + 0.5);

    return EXIT_SUCCESS;

}
Ejemplo n.º 5
0
main () {
 clrscr();
int a[]={8,7,8,8,2,1};
int f[10]={0};

void promedio (int []);//Prototipo
void mediana (int []);//Prototipo
void moda (int [],int []);//Prototipo

promedio (a);
mediana (a);
moda (f,a);

getch();
}
Ejemplo n.º 6
0
void quickSort2(int anArray[], int aLeftIndex, int aRightIndex)
{
	int theSize = aRightIndex - aLeftIndex + 1;
	
	if (theSize <= 3)
	{
		m_manualSort(anArray, aLeftIndex, aRightIndex);
	}
	else
	{
		int thePivot = mediana(anArray, aLeftIndex, aRightIndex);
		int thePartitionIndex = m_partitionIt(anArray, aLeftIndex, aRightIndex, thePivot);
		
		//left part sorting
		quickSort(anArray, aLeftIndex, thePartitionIndex - 1);
		
		//right part sorting
		quickSort(anArray, thePartitionIndex + 1, aRightIndex);
	}
}
Ejemplo n.º 7
0
int main() {
	float *nums;
	int i,aux,n = 0;

	printf("Ola, voce deseja calcular a media e mediana de quantos numeros?\n");
	scanf("%d",&n);
	aux = n;
	n *= sizeof(*nums);
	nums = (float*)malloc(n);

	for (i = 0;i < aux;i++) {
		printf("Por favor digite o %d numero\n",i+1);
		scanf("%f",&*(nums+i));
	}
	printf("Media: %.2f\nMediana: %.2f\n",media(nums,n),mediana(nums,n));

	free(nums);
	getche();
	return 0;
}
Ejemplo n.º 8
0
Mat ce(Mat img)
{
    int quartil = mediana(img);
    Mat aux = img.clone();
    for (int i = 0; i < img.rows; i++)
    {
        for (int j = 0; j < img.cols; j++)
        {
            //cout << (int)img.at<uchar>(i, j) << " ";
            if((int)img.at<uchar>(i, j) < quartil)
            {
                aux.at<uchar>(i, j) = 0;
            }
            else
            {
                aux.at<uchar>(i, j) = 255;
            }
        }
        //cout << endl;
    }
    return aux;
} 
Ejemplo n.º 9
0
int main() {
  bool menu = true;
  char pontuacao[100];
  char vida[100];
  ALLEGRO_COLOR  font_color;
  ALLEGRO_FONT *font,*font2;
  ALLEGRO_AUDIO_STREAM *musica = NULL;
  
  camera *cam = camera_inicializa(0);
  if(!cam)
    erro("erro na inicializacao da camera\n");
  int x = 0, y =  0;
  int largura = cam->largura;
  int altura = cam->altura;
  int fps = 0,tempo = 5;
  int ndisco = 9;
 
  if(!al_init())
    erro("erro na inicializacao do allegro\n");

  if(!al_init_image_addon())
    erro("erro na inicializacao do adicional de imagem\n");

  al_init_font_addon();
  al_init_ttf_addon();

    font_color = al_map_rgb(0, 0, 0);
    
    font = al_load_ttf_font("Fontes/Blokletters-Viltstift.ttf", 20, 0);
    font2 = al_load_ttf_font("Fontes/Blokletters-Viltstift.ttf", 50, 0);
    


  if(!al_init_primitives_addon())
    erro("erro na inicializacao do adicional de primitivas\n");

  ALLEGRO_TIMER *timer = al_create_timer(1.0 / FPS);
  if(!timer)
    erro("erro na criacao do relogio\n");

  ALLEGRO_DISPLAY *display = al_create_display(2 * largura,altura);
  if(!display)
    erro("erro na criacao da janela\n");

  ALLEGRO_EVENT_QUEUE *queue = al_create_event_queue();
  if(!queue)
    erro("erro na criacao da fila\n");

   if (!al_install_audio())
    {
        fprintf(stderr, "Falha ao inicializar áudio.\n");
        return false;
    }
 
    if (!al_init_acodec_addon())
    {
        fprintf(stderr, "Falha ao inicializar codecs de áudio.\n");
        return false;
    }
    if (!al_reserve_samples(1))
    {
        fprintf(stderr, "Falha ao alocar canais de áudio.\n");
        return false;
    }

  musica = al_load_audio_stream("Audio/elementary.ogg", 4, 1024);
  if(!musica)
        erro("Erro na alocação da musica de fundo\n");

  al_attach_audio_stream_to_mixer(musica, al_get_default_mixer());
  al_set_audio_stream_playing(musica, true);

  al_register_event_source(queue, al_get_timer_event_source(timer));
  al_register_event_source(queue, al_get_display_event_source(display));

  al_start_timer(timer);
  
  unsigned char ***matriz = camera_aloca_matriz(cam);
  ALLEGRO_BITMAP *buffer = al_get_backbuffer(display);
  ALLEGRO_BITMAP *fundo = al_load_bitmap("Imagens/Elementary2.png");

  if(!fundo)
    erro("erro ao carregar Elementary.png");

  ALLEGRO_BITMAP *esquerda = al_create_sub_bitmap(buffer, 0, 0, largura, altura);
  ALLEGRO_BITMAP *direita = al_create_sub_bitmap(buffer, largura, 0, largura, altura);

  /**********/
  Disco *discos[9];
  bool perdeu = false;
  carregarDiscos(discos);
  int pontos=0,velo = 1;
  int aux1 = 1;
  int vidas = 10;
  int ultimoDisco = 0;
  int distance = 0;
  int desenhar = 0;
  int terminar = 0;
  al_set_target_bitmap(esquerda);
  al_draw_bitmap(fundo,0,0,0);
  while(1) {

    ALLEGRO_EVENT event;

    al_wait_for_event(queue, &event);

    switch(event.type) {
    case ALLEGRO_EVENT_TIMER:
      desenhar = 1;
      break;
    case ALLEGRO_EVENT_DISPLAY_CLOSE:
      terminar = 1;
      break;
   
    }

    if(terminar)
      break;

    if(desenhar && al_is_event_queue_empty(queue)) {
      desenhar = 0;
      camera_atualiza(cam);
      mediana(cam);
      /**********/
      al_set_target_bitmap(esquerda);
      al_draw_bitmap(fundo,0,0,0);
      
      if(!menu){
        while(aux1 <= ndisco){
          if(discos[aux1]->status == false){
            if(distance > 50 || ultimoDisco==0  ){
              printf("%d\n",aux1 );
              al_draw_bitmap(discos[aux1]->elemento,discos[aux1]->pos_x,discos[aux1]->pos_y,0);
              discos[aux1]->status = true;
              distance = 0;
              ultimoDisco = aux1;
              break;
            }else
             aux1++;
          }else{
              discos[aux1]->pos_y+=(10+velo);
              al_draw_bitmap(discos[aux1]->elemento,discos[aux1]->pos_x,discos[aux1]->pos_y,0);
            aux1++;
              
            }
        }
        distance = discos[ultimoDisco]->pos_y;
        for(aux1 = 1;aux1<ndisco;aux1++){
          if(discos[aux1]->pos_x >= x-30 && discos[aux1]->pos_x <= x+30 && discos[aux1]->pos_y >= y-30 &&  discos[aux1]->pos_y <= y+30){
            if(discos[aux1]->tipo == 2){ // Tipo do fogo(Necessario para vencer o jogo)
            pontos +=10;
            velo += 1;
            discos[aux1]->pos_x = rand()%9 * 55;
            discos[aux1]->pos_y = 0;
            discos[aux1]->status = false;
          }else if(discos[aux1]->tipo == 1){ //Tipo da agua(Perde o jogo se destruir esse disco)
            discos[aux1]->pos_x = rand()%9 * 55;
            discos[aux1]->pos_y = 0;
            discos[aux1]->status = false;
            al_flip_display();
            vidas--;
          }else if(discos[aux1]->tipo == 3){//Tipo planta(Aumenta velocidade de queda das peças)
            velo *= 2;
            discos[aux1]->pos_x = rand()%9 * 55;
            discos[aux1]->pos_y = 0;
            discos[aux1]->status = false;
          }

        }else if( discos[aux1]->pos_y > 480){
          if(discos[aux1]->tipo == 2){ //Tipo da agua e Planta(Não perde se deixar cair)
               discos[aux1]->pos_x = rand()%9 * 55;
            discos[aux1]->pos_y = 0;
            discos[aux1]->status = false;
            al_flip_display();
            vidas--;
          }else{
            discos[aux1]->pos_x = rand()%9 * 55;
            discos[aux1]->pos_y = 0;
            discos[aux1]->status = false;
          }
        }
      }

        aux1 = 1;
      sprintf(pontuacao,"PONTUAÇÃO: %d",pontos);
      al_draw_text(font, al_map_rgb(255, 255, 255), 50, 5, 0,pontuacao);
       sprintf(vida,"VIDAS: %d",vidas);
      al_draw_text(font, al_map_rgb(255, 255, 255), 300, 5, 0,vida);
      al_flip_display();

      }
       if(perdeu){
        al_draw_text(font2, al_map_rgb(255, 0, 0), 50, 100, 0,"PONTUAÇÃO FINAL");
        sprintf(pontuacao,"%d",pontos);
        al_draw_text(font2, al_map_rgb(255, 0, 0), 250, 170, 0,pontuacao);
        al_flip_display();
        al_rest(3);
        break;
      }
       
      if(vidas == 0){
        perdeu = true;
      }

      if(menu){
        if(abrirJogo(x,y,&fps,&tempo,font,font2, font_color)){
          fundo = al_load_bitmap("Imagens/galaxia.png");
          menu = false;
        }
      }
      cameraRastreia(cam,&x,&y);
   

      al_set_target_bitmap(direita);
      camera_copia(cam, cam->quadro, direita);
      al_flip_display();
    }
  }
  al_destroy_bitmap(direita);
  al_destroy_bitmap(fundo);
  al_destroy_bitmap(esquerda);
  camera_libera_matriz(cam, matriz);
int fri = 9;
while(fri != 0){
  free(discos[fri]);
  fri--;

}


  al_stop_timer(timer);

  al_unregister_event_source(queue, al_get_display_event_source(display));
  al_unregister_event_source(queue, al_get_timer_event_source(timer));

  al_destroy_event_queue(queue);
  al_destroy_display(display);
  al_destroy_timer(timer);
  al_destroy_audio_stream(musica);
  al_shutdown_primitives_addon();
  al_shutdown_image_addon();
  al_uninstall_system();

  camera_finaliza(cam);

  return EXIT_SUCCESS;
}
Ejemplo n.º 10
0
 void tests() {
     auto feq = [](float a, float b){return (max(a,b)-min(a,b)<0.1);};
     cerr << "#open mediana OURO IF FOR" << endl;
     cerr << (feq(mediana({0, 1, 2}), 1.0));
     cerr << (feq(mediana({0, 9, 3.2, 1}), 2.1));
 }
Ejemplo n.º 11
0
void main(int argc, char **argv) {

	FILE *file, *fout, *mask_file; // arquivos de entrada e saída

	char line[MAX], header_type[MAX]; // strings

	int matrix_width, matrix_height, grayscale, weight, soma, mask_size; // colunas, linhas, escala de cinza, weight da máscara, soma dos elementos

	int i, j, w, z, x, y; // contadores e auxiliares

	int **array, **output, **mask; // matriz da imagem original, matriz da imagem de saída, matriz da mascara

	int c, r = 0; // colunas, linhas

	// verifica se os argumentos foram passados corretamente
	if (argc != 5 && argc != 4) {
		printf(
				"Os argumentos foram passados incorretamente. Por favor, consulte a documentação.");
		exit(EXIT_FAILURE);
	} else {
		if (!(file = fopen(argv[1], "r"))) {
			printf("Não foi possível abrir a imagem.");
			exit(EXIT_FAILURE);
		}

		if (!(fout = fopen(argv[argc - 1], "w+"))) {
			printf("Não foi possível abrir a imagem.");
			exit(EXIT_FAILURE);
		}
	}

	// se for utilizado o filtro de média, abre a imagem
	if (argc == 4) {
		if (!(mask_file = fopen(argv[2], "r"))) {
			printf("Não foi possível abrir a máscara.");
			exit(EXIT_FAILURE);
		}
	}

	// tipo da imagem: P5 ou P2
	get_image_type(file, &header_type);

	// tamanho da matrix: col lin
	get_matrix_size(file, &matrix_width, &matrix_height);

	// maior valor da escala de cinza
	get_grayscale(file, &grayscale);

	// verifica se o nível de cinza é o permitido
	if (grayscale > MAX_GRAYSCALE) {
		printf("O valor da escala de cinza é maior do que o permitido.");
		exit(EXIT_FAILURE);
	}

	// escreve o cabeçalho da imagem no arquivo
	write_image_header(fout, header_type, matrix_width, matrix_height,
			grayscale);

	// aloca memória para a imagem de saída
	output = (int **) (mallocc(sizeof(int *) * matrix_height));
	for (i = 0; i < matrix_height; i++) {
		output[i] = (int *) (mallocc(sizeof(int) * matrix_width));
	}

	// copia o corpo da imagem para a matriz
	array = read_matrix_elements(file, matrix_width, matrix_height);
	output = read_matrix_elements(file, matrix_width, matrix_height);

	// filtro da média
	mask_size = get_mask_size(mask_file);
	if(argc == 4){
		// aloca memória para a imagem de saída
		mask = (int **) (mallocc(sizeof(int *) * mask_size));
		for (i = 0; i < mask_size; i++) {
			mask[i] = (int *) (mallocc(sizeof(int) * mask_size));
		}

		// passa os elementos do arquivo para uma array
		mask = read_matrix_elements(mask_file, mask_size, mask_size);

		// verifica se o tamanho da mascara está correto
		if ((mask_size % 2 == 0) || mask_size < 3) {
			printf("Tamanho da máscara incorreto.");
			exit(EXIT_FAILURE);
		}

		// calcula o weight da máscara
		for (i = 0; i < mask_size; i++) {
			for (j = 0; j < mask_size; j++) {
				weight = weight + mask[i][j];
			}
		}

		// aplica o filtro
		media( matrix_height, matrix_width, mask_size, weight, array, output );
	} else
		mediana(matrix_height, matrix_width, mask_size, array, output);

	// grava imagem
	write_image_body(fout, matrix_width, matrix_height, output);

	// libera a memória alocada
	free(array);
	free(output);

	// fecha o buffer dos arquivos
	fclose(file);
	fclose(fout);

	return;
}