Como os computadores processam imagens?
Respostas
Esta é uma pergunta difícil de responder, simplesmente porque a questão é bastante aberta. Eu farei o meu melhor embora…
Primeiro, vamos examinar a palavra “processo”. Vou entender que isso significa ler o arquivo do disco e exibi-lo na tela. Se isso estiver incorreto, apenas esclareça o que você realmente quer dizer e eu corrigirei minha resposta de acordo.
Dependendo do formato da imagem, os dados da imagem serão compactados ou não. O formato descompactado mais comum será o BMP. Os formatos compactados comuns são JPG, GIF e PNG (o WebP está ganhando força ultimamente).
OBS: Vou abordar apenas os formatos raster, pois são os mais comuns. Também existem formatos vetoriais, mas eles são tratados de maneira totalmente diferente.
O primeiro passo seria o aplicativo localizar e abrir o arquivo em questão. Depois que o arquivo é aberto, o aplicativo visualizador lê os dados do arquivo na memória de trabalho.
Todos os formatos de imagem contêm informações adicionais para indicar vários bits de informação, como dimensões da imagem, profundidade de bits e outros itens. Essas informações são extraídas dos dados do arquivo e armazenadas.
Supondo que os dados da imagem estejam compactados, eles serão extraídos e passados por um codec (codificador/decodificador), que é apenas um termo técnico para código que pode compactar ou descompactar dados (imagens, áudio e vídeo).
Depois que o codec faz seu trabalho, ele retorna um monte de bytes contendo os dados reais da imagem.
É aqui que os dados do cabeçalho entram em jogo. Para exibir uma imagem, um aplicativo precisa de quatro coisas: a largura da imagem, a altura da imagem, o formato do pixel (profundidade de bits e ordenação) e os dados não compactados. As duas primeiras variáveis são usadas para configurar o tamanho da imagem de saída. Em seguida, cada pixel nos dados da imagem é lido, convertido para a profundidade de bits nativa e formato usando o formato de pixel do cabeçalho da imagem e copiado para o local apropriado nos dados de saída.
A saída final é então copiada para a memória de vídeo, onde é exibida ao usuário.
Tenha em mente que esta é uma descrição bastante simplificada. Cada uma das etapas acima pode ser realizada de várias maneiras diferentes, mas os conceitos gerais estão corretos.
No nível conceitual, uma imagem é representada como uma matriz bidimensional. Se for uma imagem colorida, você está lidando com três dessas matrizes, cada uma correspondendo a um canal de cor. No caso de imagem em preto e branco, você está lidando com uma única matriz. Os elementos da matriz têm tipicamente valores na faixa de 0 a 255.
O computador pode processar uma matriz de entrada (ou matrizes) de uma imagem para produzir uma matriz de saída (ou matrizes) de imagem. Alternativamente, uma matriz de entrada (ou matrizes) de uma imagem pode ser processada para produzir um número ou escalar de saída, como dizer se a imagem corresponde a um determinado objeto ou rosto de uma pessoa ou número de rostos na imagem e assim por diante.
Algoritmos matemáticos exatos operando na matriz de entrada podem ser bastante complexos.