ANSI-C. Фильтр High-Pass3 для изображений .pgm - PullRequest
0 голосов
/ 23 ноября 2010

Я брожу по сети, и ни один из учебных пособий, которые я читал, мне не совсем понятен. Как мне реализовать фильтр 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

};

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

1 Ответ

2 голосов
/ 23 ноября 2010

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

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

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

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

...