Pergunta

Estou vagando pela web e nenhum dos tutoriais que li que realmente não entendo. Como faço para a implementação do filtro de alta passa3 para imagens .pgm? Eu tenho estrutura de imagem:

struct Image {

 char* file_name; //name of .pgm file
 char header[3];  
 int max_grey_value; 
 int height;   
 int width;   
 int **pixels;  //pixels matrix
 struct Image *next; //next element in the list

};

E agora como começar? Até onde eu sei, tenho que contar uma soma, mas não sei completamente como, e essa soma é uma imagem inteira ou é para um pixel único? OK, então o quê? Eu preciso dividi -lo por algum quociente. É esse argumento de função ou deve contar por si mesmo. Estou realmente confuso sobre este. Alguém pode explicar a implementação desse filtro para mim em termos simples que um iniciante poderia entender?

Foi útil?

Solução

Primeiro, você precisa ler sua imagem PGM em sua estrutura. Se você não sabe como fazer isso, leia sobre o Formato PGM.

Depois de fazer isso, você precisa construir seu filtro. Da sua pergunta um pouco ambígua, parece que você precisa de um filtro de tamanho 3x3. Em teoria, você pode reutilizar seu Image estrutura para representar o filtro - o conteúdo do filtro (o pixels parte) dependerá do filtro específico que você está usando (por exemplo, Laplacian ou Sobel). Depois de ter seu filtro, complicações com a imagem que você carregou na primeira etapa. Tecnicamente, você terminou aqui, mas supondo que você realmente queira ver o resultado, você precisará Escreva O resultado da convolução para outro arquivo PGM.

Você precisará escrever sua própria função de convolução (isso envolverá a parte "contagem de alguma soma" que você mencionou em sua pergunta). Você também precisará de suas próprias funções de E/S de imagem, a menos que elas já tenham sido fornecidas.

A saída da convolução será como algo como isto.

Como nota lateral, seria melhor separar a representação da imagem na memória e representação da imagem em um sistema de arquivos em seu design. Por exemplo, atualmente, seu Image struct pressupõe que cada imagem tenha um correspondente filename, que não terá sentido se o Image não foi carregado no sistema de arquivos (por exemplo, se for um filtro que você criou por você).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top