1
Introdução à Lógica e Programação
UMG
5
Introdução à Lógica e Programação
UMG
147
Introdução à Lógica e Programação
UMG
16
Introdução à Lógica e Programação
UMG
1
Introdução à Lógica e Programação
UMG
4
Introdução à Lógica e Programação
UMG
53
Introdução à Lógica e Programação
UMG
5
Introdução à Lógica e Programação
UMG
10
Introdução à Lógica e Programação
UMG
7
Introdução à Lógica e Programação
UMG
Texto de pré-visualização
Descrição Desenvolva um programa em C que realiza operações básicas de processamento de imagens incluindo leitura aplicação de filtros e gravação das imagens processadas O projeto deve lidar com formatos de imagem populares como JPEG PNG ou BMP utilizando bibliotecas externas para simplificar o manuseio desses formatos Objetivos de Aprendizado Desenvolver competências práticas em programação na linguagem C enfatizando leitura processamento e escrita de imagens Este projeto visa a utilização de bibliotecas externas e a implementação de algoritmos fundamentais de processamento de imagens Ler e escrever arquivos de imagem em formatos comuns Manipular dados de imagem utilizando vetores e matrizes Aplicar conceitos de alocação dinâmica de memória Implementar algoritmos de processamento de imagens Requisitos Leitura e Escrita de Arquivos Ler imagens em formatos como JPEG PNG ou BMP Gravar a imagem processada no mesmo formato Manipulação de Dados Utilizar vetores e matrizes para manipular os pixels da imagem Empregar alocação dinâmica de memória Processamento de Imagens Implementar ao menos dois dos seguintes filtros Escala de cinza Filtro de média blur Detecção de bordas Sobel Inversão de cores negativo Interface de Usuário Criar um menu para escolher entre diferentes filtros Filtros e Matrizes 1 Escala de Cinza o Conversão RGB para cinza Gray 03R 059G 011B 2 Filtro de Média Blur o Kernel matriz de exemplo para blur 3x3 19 19 19 19 19 19 19 19 19 3 Detecção de Borda Sobel o Kernel horizontal Gx o Kernel vertical Gy 1 0 1 2 0 2 1 0 1 1 2 1 0 0 0 1 2 1 4 Inversão de Cores Negativo o Para cada pixel Invertido 255 Original Bibliotecas Externas stbimageh e stbimagewriteh para leitura e escrita de imagens Essas bibliotecas podem ser baixadas de httpsgithubcomnothingsstb include stdioh include stdlibh include stringh include mathh define STBIMAGEIMPLEMENTATION include stbimageh define STBIMAGEWRITEIMPLEMENTATION include stbimagewriteh void applyNegativeFilterunsigned char img int width int height int channels void applyGrayScaleFilterunsigned char img int width int height int channels void applyBlurFilterunsigned char img int width int height int channels void applySobelFilterunsigned char img int width int height int channels void saveImageconst unsigned char img int width int height int channels const char outputFileName int main int width height channels char inputFile100 Yenginputjpg char outputFileName100 Carregar a imagem unsigned char img stbiloadinputFile width height channels 0 if img NULL fprintfstderr Erro ao carregar a imagem return 1 int choice printfEscolha o filtro a ser aplicado printf1 Negativo printf2 Escala de Cinza printf3 Blur printf4 Sobel printfDigite sua escolha scanfd choice switchchoice case 1 applyNegativeFilterimg width height channels strcpyoutputFileName negativojpg break case 2 applyGrayScaleFilterimg width height channels strcpyoutputFileName escaladecinzajpg break case 3 applyBlurFilterimg width height channels strcpyoutputFileName blurjpg break case 4 applyGrayScaleFilterimg width height channels Para Sobel primeiro converte para escala de cinza applySobelFilterimg width height channels strcpyoutputFileName sobeljpg break default printfEscolha inválida stbiimagefreeimg return 1 Salvar a imagem processada com o nome apropriado saveImageimg width height channels outputFileName Liberar memória stbiimagefreeimg return 0 void applySobelFilterunsigned char img int width int height int channels Aqui você precisa implementar a lógica para aplicar o filtro Sobel em X e Y e em seguida combinar os resultados usando a distância euclidiana Esta é uma tarefa avançada que requer manipulação detalhada dos pixels e do buffer de imagem Implementação das outras funções de filtro1 void saveImageconst unsigned char img int width int height int channels const char outputFileName char outputPath200 sprintfoutputPath Yengs outputFileName Constrói o caminho no diretório atual stbiwritejpgoutputPath width height channels img 100 printfs outputPath void applyNegativeFilterunsigned char img int width int height int channels Implementação do Filtro Negativo void applyGrayScaleFilterunsigned char img int width int height int channels Implementação do filtro de escala de cinza void applyBlurFilterunsigned char img int width int height int channels Implementação do filtro de blur
1
Introdução à Lógica e Programação
UMG
5
Introdução à Lógica e Programação
UMG
147
Introdução à Lógica e Programação
UMG
16
Introdução à Lógica e Programação
UMG
1
Introdução à Lógica e Programação
UMG
4
Introdução à Lógica e Programação
UMG
53
Introdução à Lógica e Programação
UMG
5
Introdução à Lógica e Programação
UMG
10
Introdução à Lógica e Programação
UMG
7
Introdução à Lógica e Programação
UMG
Texto de pré-visualização
Descrição Desenvolva um programa em C que realiza operações básicas de processamento de imagens incluindo leitura aplicação de filtros e gravação das imagens processadas O projeto deve lidar com formatos de imagem populares como JPEG PNG ou BMP utilizando bibliotecas externas para simplificar o manuseio desses formatos Objetivos de Aprendizado Desenvolver competências práticas em programação na linguagem C enfatizando leitura processamento e escrita de imagens Este projeto visa a utilização de bibliotecas externas e a implementação de algoritmos fundamentais de processamento de imagens Ler e escrever arquivos de imagem em formatos comuns Manipular dados de imagem utilizando vetores e matrizes Aplicar conceitos de alocação dinâmica de memória Implementar algoritmos de processamento de imagens Requisitos Leitura e Escrita de Arquivos Ler imagens em formatos como JPEG PNG ou BMP Gravar a imagem processada no mesmo formato Manipulação de Dados Utilizar vetores e matrizes para manipular os pixels da imagem Empregar alocação dinâmica de memória Processamento de Imagens Implementar ao menos dois dos seguintes filtros Escala de cinza Filtro de média blur Detecção de bordas Sobel Inversão de cores negativo Interface de Usuário Criar um menu para escolher entre diferentes filtros Filtros e Matrizes 1 Escala de Cinza o Conversão RGB para cinza Gray 03R 059G 011B 2 Filtro de Média Blur o Kernel matriz de exemplo para blur 3x3 19 19 19 19 19 19 19 19 19 3 Detecção de Borda Sobel o Kernel horizontal Gx o Kernel vertical Gy 1 0 1 2 0 2 1 0 1 1 2 1 0 0 0 1 2 1 4 Inversão de Cores Negativo o Para cada pixel Invertido 255 Original Bibliotecas Externas stbimageh e stbimagewriteh para leitura e escrita de imagens Essas bibliotecas podem ser baixadas de httpsgithubcomnothingsstb include stdioh include stdlibh include stringh include mathh define STBIMAGEIMPLEMENTATION include stbimageh define STBIMAGEWRITEIMPLEMENTATION include stbimagewriteh void applyNegativeFilterunsigned char img int width int height int channels void applyGrayScaleFilterunsigned char img int width int height int channels void applyBlurFilterunsigned char img int width int height int channels void applySobelFilterunsigned char img int width int height int channels void saveImageconst unsigned char img int width int height int channels const char outputFileName int main int width height channels char inputFile100 Yenginputjpg char outputFileName100 Carregar a imagem unsigned char img stbiloadinputFile width height channels 0 if img NULL fprintfstderr Erro ao carregar a imagem return 1 int choice printfEscolha o filtro a ser aplicado printf1 Negativo printf2 Escala de Cinza printf3 Blur printf4 Sobel printfDigite sua escolha scanfd choice switchchoice case 1 applyNegativeFilterimg width height channels strcpyoutputFileName negativojpg break case 2 applyGrayScaleFilterimg width height channels strcpyoutputFileName escaladecinzajpg break case 3 applyBlurFilterimg width height channels strcpyoutputFileName blurjpg break case 4 applyGrayScaleFilterimg width height channels Para Sobel primeiro converte para escala de cinza applySobelFilterimg width height channels strcpyoutputFileName sobeljpg break default printfEscolha inválida stbiimagefreeimg return 1 Salvar a imagem processada com o nome apropriado saveImageimg width height channels outputFileName Liberar memória stbiimagefreeimg return 0 void applySobelFilterunsigned char img int width int height int channels Aqui você precisa implementar a lógica para aplicar o filtro Sobel em X e Y e em seguida combinar os resultados usando a distância euclidiana Esta é uma tarefa avançada que requer manipulação detalhada dos pixels e do buffer de imagem Implementação das outras funções de filtro1 void saveImageconst unsigned char img int width int height int channels const char outputFileName char outputPath200 sprintfoutputPath Yengs outputFileName Constrói o caminho no diretório atual stbiwritejpgoutputPath width height channels img 100 printfs outputPath void applyNegativeFilterunsigned char img int width int height int channels Implementação do Filtro Negativo void applyGrayScaleFilterunsigned char img int width int height int channels Implementação do filtro de escala de cinza void applyBlurFilterunsigned char img int width int height int channels Implementação do filtro de blur