Вопрос

Я блуждаю через Интернет, и ни один из учебников я читал, я на самом деле не понимаю. Как реализовать фильтр High-Pass3 для картинок .PGM? У меня структура изображения:

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

};

И теперь как начать? Насколько я знаю, я должен считать какую-то сумму, но я полностью не знаю, как, и это сумма одна для всего изображения или это для одного пикселя? Хорошо, тогда что? Мне нужно разделить его кавыжным. Это аргумент функции или он должен посчитать его сам по себе. Я действительно путаю об этом. Может кто-нибудь объяснить реализацию этого фильтра для меня в простых терминах, который мог бы понять?

Это было полезно?

Решение

Во-первых, вам необходимо прочитать изображение PGM в свой структурой. Если вы не знаете, как это сделать, прочитайте о Формат PGM.

Как только вы это сделали, вам нужно построить свой фильтр. Из вашего слегка неоднозначного вопроса звучит так, как вам нужен фильтр размера 3x3. Отказ Теоретически, вы можете повторно использовать свой Image структура для представления фильтра - содержимое фильтра ( pixels Часть) будет зависеть от конкретного фильтра, который вы используете (например, лаплацын или сорель). После того, как вы получите свой фильтр, озвучивать Это с изображением, которое вы загрузили на первом шаге. Технически, вы сделали здесь, но предполагая, что вы на самом деле хотите увидеть результат, вам нужно записывать Результат свертки к другому файлу PGM.

Вам нужно будет написать свою собственную функцию свертки (это будет включать часть «подсчет какой-то суммы», которую вы упомянули в вашем вопросе). Вам также понадобится ваши собственные функции ввода / вывода I / O, если они уже не были предоставлены.

Вывод свертки будет выглядеть что-то вроде это.

В качестве бокового примечания было бы лучше отделить представление изображения в памяти и представлении изображения в файловой системе в вашем дизайне. Например, в настоящее время ваш Image структура предполагает, что каждое изображение имеет соответствующий filename, что будет бессмысленным, если Image Разве не загружено из файловой системы (например, если это фильтр, который вы создали самостоятельно).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top