Computação Gráfica

CG é uma área da computação dedicada a criação, armazenamento e manipulação de imagens baseada em modelos matemáticos.

images/img0.png

Lecture 1

Iniciaremos nosso curso aprendendo como construir uma imagem.

Portable Pixel Map (PPM)

O formato PPM nasceu no final da década de $80$ para compartilhar imagens facilmente entre diferentes plataformas.

images/img1.png
Figure 1. Definição da Wikipedia

Código

Podemos escrever um código em C para construir uma imagem usando o formato PPM. Este objetivo será alcançado através da análise do programa ppm_create.c.

images/img2.png
Figure 2. Imagem PPM construída a partir do código "ppm_create.c"
/**
 * \file ppm_create.c
 *
 * \brief Criacao de uma imagem em PPM.
 *
 * \author
 * Petrucio Ricardo Tavares de Medeiros \n
 * Universidade Federal Rural do Semi-Árido \n
 * Departamento de Engenharias e Tecnologia \n
 * petrucio at ufersa (dot) edu (dot) br
 *
 * \version 1.0
 * \date April 2025
 */

#include <stdio.h>

int main(){

  // dimensoes da imagem
  int width = 256;
  int height = 256;

  // Configurando o header do formato PPM
  printf("P3\n %d \t %d\n 255\n", width, height);

  for (int i = 0; i < height; i++){ // Altura
    for (int j = 0; j < width; j++){ // Largura
      printf("%d \t %d \t %d \n", i, j, 63);
    }
  }

  return 0;
}

Descrição do programa

Inserimos na primeira linha do arquivo a biblioteca para lidar com entrada/saída de dados na linguagem C.

#include <stdio.h>

Definimos as dimensões (largura e altura) da imagem que estamos construindo.

int width = 256;
int height = 256;

Em seguida, configuramos o cabeçalho do formato PPM.

printf("P3\n %d \t %d\n 255\n", width, height);

No laço de repetição, percorremos a largura e altura da imagem preenchendo as cores dos pixels.

for (int i = 0; i < height; i++){ // Altura
    for (int j = 0; j < width; j++){ // Largura
      printf("%d \t %d \t %d \n", i, j, 63);
    }
}

Compilação

O processo de compilação é realizado através do compilador GCC através do seguinte comando:

gcc <nome_arquivo>.c -o <nome_executavel>

Este comando criará um arquivo executável e a saída deve ser direcionada para um arquivo com extensão ".ppm".

./<nome_executavel> > output.ppm

Exercício

  • Construa uma imagem $100 \times 100$ usando o formato PPM com fundo preto que tem apenas 1 pixel vermelho no centro da imagem.

  • Implemente uma função que altera o valor de um pixel da imagem.

  • Codifique uma função que salva a imagem no formato PPM.

  • Crie uma função que inicializa uma imagem com branco.

  • Construa uma imagem $100 \times 100$ usando o formato PPM com fundo preto e escreva o caractere ' T ' no centro da imagem com alto contraste em relação ao fundo da imagem.