LINUX.ORG.RU

Обработка изображений на AWK

 


3

2

AWK внезапно оказался неплохим языком для обработки изображений — весь код уложился где-то в 180 строчек, можно посмотреть здесь.

Реализован алгоритм определения границ Дж. Кэнни, который, как известно, состоит из нескольких этапов. Каждый этап был вынесен в отдельный скрипт awk, и затем всё вместе собрано пайпами. Получаем труЪ потоковую обработку — эдакий OpenCL «за 40 лет до».

На скриншоте в терминале показан сам конвеер и как с ним справляются разные реализации awk. Моя в конкурсе пока не участвует - сыровата ещё :-) Собственно, для сравнения всё и задумывалось (бенчмаркаться на простых текстах поднадоело).

В остальном — дефолт, дебиан, гном3, ещё и вейленд, как выяснилось.

>>> Просмотр (1366x768, 671 Kb)

★★★★★

Проверено: JB ()

а зачем ты в /dev/zero пишешь?

demidrol ★★★★★ ()
Ответ на: комментарий от demidrol

Чтобы при замерах нивелировать запись на диск например

yoghurt ★★★★★ ()

Когда-то у derlafff видел анализатор аудиокапчи на ImageMagick, теперь у yoghurt есть обработчик изображений на AWK. Вещества в комплект не входят.

r3lgar ★★★★★ ()

Наркомания годная, но есть придирки.

$AWK -f alignRow.awk <&0
Зачем stdin перенаправлять в stdin? (Вопрос риторический.)
 cat lena.ppm | bash ...
Вам премия http://porkmail.org/era/unix/award.html#cat

unterwulf ()

Можно покороче и побыстрее :-)

$ cat alignRow.awk
{ print }
NR == 1 { if (/^P[23]$/) chan = substr($0, 2, 1); else exit(-1) }
NR == 2 { width = $1 }
NR == 3 { len = chan*width; RS="[ \n]+"; ORS=" " }
NR > 3 && !(++c % len) { printf("\n") }
$ time gawk -f alignRow.awk <xxx.ppm >xxx

real    0m0.281s
user    0m0.272s
sys     0m0.008s
$ time gawk -f alignRow.awk.orig <xxx.ppm >xxx

real    0m0.419s
user    0m0.408s
sys     0m0.008s

unterwulf ()

А почему оригинала не видно? Там, наверное, мужик с усами?

Virtuos86 ★★★★★ ()
Ответ на: комментарий от atsym

По ходу эта Лена та еще проститутка. У всех ее фотки есть.

Virtuos86 ★★★★★ ()

yoghurt, stop piping cats!

«Моя реализация» - вот это наркомания так наркомания, учитывая брутальность авка

mos ★★★★★ ()
Ответ на: комментарий от mos

Простой язык на самом деле, и довольно приятное упражнение - реализовать его :)

yoghurt ★★★★★ ()

Ох и извращение использовать awk для кэнни-фильтрации текстовых картинок...

aido ★★ ()
Ответ на: очевидно от mos

Да и вещества, судя по всему, одни. И упарываются они в одном притоне. И лечащий врач у них тоже наверняка один. Однако, наркомания занятная.

r3lgar ★★★★★ ()

Круто, теперь нужно реализовать дип лернинг на авке:) А что, разных слоев в скрипты напихал, пайпов навставлял — сетка готова!

Anvill ()
Ответ на: комментарий от Anvill

Ага, и обучится она где-то к следующей цивилизации на Земле :)

yoghurt ★★★★★ ()
Ответ на: комментарий от Anvill

Я Хаара думал портануть, но нашлись другие дела)

yoghurt ★★★★★ ()
Ответ на: комментарий от unterwulf

Потому что не ставил +x на .sh. Но теперь буду знать, спасибо :}

yoghurt ★★★★★ ()
Ответ на: комментарий от unterwulf

Что-то мне подумалось, что c регекспом в RS будет только медленнее, но проверять не стал. Приму к сведению, спасибо :) В остальном - да, годно.

yoghurt ★★★★★ ()

Теперь я видел все в этой жизни :)

garik_keghen ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.