[cdev] Фильтрация и конволюция
Grigoriy A. Sitkarev
sitkarev на komitex.ru
Вс Фев 20 05:26:17 MSK 2011
Всех приветствую.
В субботу я показывал слайды 145-й группе, которые сделал. Там
действительно многовато было опечаток, я постарался всё исправить. А
самое главное -- быстренько написал для вас учебную программу, чтобы вам
было понятно как это работает.
Чтобы её скомпилировать вам нужна установленная библиотека GTK+2.0 и
пакет libgtk2.0-dev (это для Debian-like систем) или тот в котором лежат
заголовки для GTK+2.0 в вашем дистрибутиве. Я на самом деле использую из
неё только GDK-PixBuf для загрузки изображений в формате PNG, JPEG и
сохранения их в файл.
Распакуете архив:
$ tar -zxvf imgfilter.tar.gz
Зайдете в каталог:
$ cd imgfilter
И соберёте программу:
$ make
Если вдруг не найдёт какого-то заголовка -- попробуйте поправить руками.
Но по идее если у вас Debian Lenny то всё должно работать.
Дальше, берёте любую картинку в формате JPEG или PNG и натравливаете на
неё Гауссов фильтр (сейчас там задан фиксированный радиус 5, можете
поэкспериментировать с ним).
$ ./imgfilter /home/sitkarev/image.png
Утилита отфильтрует изображение, применив к нему Гауссов фильтр (ядро
фильтра задаётся функцией gauss()), и поместит его в файл out.png в
формате PNG, даже если вы открывали JPEG.
Для простоты, там не обрабатываются краевые случаи поэтому вокруг
изображения нетронутая каёмка шириной в радиус фильтра. Она также не
оптимальна, т.к. например нет смысла каждый раз вычислять значения
фильтра, можно их просто поместить в массив. Но мне нужно было
продемонстрировать как это всё на самом деле считается, а задача
оптимизации отложена на потом. RGB компоненты изображения выдираются и
сохраняются в массиве float -- для того чтобы было понятно как они
хранятся в буфере и как их оттуда заполучить.
В коде оставлена функция которая делает конволюцию так как это даётся в
книгах. Ради эксперимента попробуйте воспользоваться ей и посмотрите
насколько медленнее она работает.
--
Г.А.
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: imagefiltering.pdf
Type: application/pdf
Size: 78642 bytes
Desc: отсутствует
URL: <http://amplab.syktsu.ru/pipermail/cdev/attachments/20110220/cc96f987/attachment.pdf>
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: imgfilter.tar.gz
Type: application/x-gzip
Size: 1678 bytes
Desc: отсутствует
URL: <http://amplab.syktsu.ru/pipermail/cdev/attachments/20110220/cc96f987/attachment.bin>
Подробная информация о списке рассылки cdev