2013-11-14 6 views
1

Я тестирую некоторые алгоритмы свертки, которые я нашел на некоторых сайтах, но ни один из них не применяет матричные фильтры, как следует.Реализация конверсии изображений (обработка изображений) в C

Я пишу очень простой 24-битную библиотеку BMP самостоятельно, но теперь мне нужна небольшая помощь в свертке, мне не нужен БПФ или сложный алгоритм, время работы в данный момент не важно.

Последний код, который я тестировал, был следующим: http://lodev.org/cgtutor/filtering.html Но я не работал нормально.

Может ли кто-нибудь указать мне код или алгоритм в C ?.

спасибо.

ответ

0

Вы можете посмотреть на этом алгоритме - это ближайший, который я могу найти:

Convolution to blur the image

Знайте, что основной алгоритм свертки является более или менее то же самое, влияют на изменения только по значения ядра.

0

Существует открытый источник C# library, который предоставляет методы для выполнения свертки изображений простых фильтров. Это был бы легкий порт для C.

Фактические методы выполнения свертки могут быть found here. Класс BitmapContext используется для простого привязки указателя к растровому изображению. Я считаю, что в C# это рассматривается как int *, поэтому этот код работает на 4 байта за раз.

0

Я создал библиотеку конвертирования изображений для простых случаев - https://github.com/RoyiAvital/Projects/tree/master/ImageConvolution.

Это довольно быстро (OpenMP + SIMD).
Хотя я не продвинутый программист чего-то, просто попытался сделать это, чтобы сделать первые шаги в использовании SIMD. Тем не менее, из того, что можно увидеть в VS 2015, загрузка процессора довольно хороша.

Если у вас есть идеи, чтобы сделать это еще быстрее, я буду счастлив.

Не стесняйтесь использовать его любым удобным вам способом.

+0

Прочитайте [Как предлагать личные библиотеки с открытым исходным кодом?] (// meta.stackexchange.com/q/229085) –

Смежные вопросы