LINUX.ORG.RU

Быстрый гауссов блюр на JS - готов!

 ,


1

1

https://github.com/nodeca/glur - ловите кому надо.

Штука вычисляет гауссов блюр со скоростью, не зависящей от радиуса (рекурсивным IIR-фильтром). На чистом яваскрипте. Там же по ссылке демки.

Благодаря комраду inline проект разморозился и был доведен до ума. За что ему большое спасибо.

★★★★★

он не строго гауссов, это интерполяция? надо раскурить в gimp там интерполяция или что, а то там адово тормозит и все не покидает мысль что-то с этим сделать

Deleted
()

Штука вычисляет гауссов блюр со скоростью, не зависящей от радиуса

Это нельзя называть скоростью.

anonymous
()

Импульсную, переходную характеристики и карту полюсов в студию. Разностное уравнение тоже можно (а мы посмотрим и докопаемся, что это не Гаусс).

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

В них закодирована суть всего мироздания. Понимание этих чисел доступно только посвященным.

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

Там в референсах статья на хабре. Циферьки оттуда.

Vit ★★★★★
() автор топика

О! Спасибо за чистый код.

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

В гимпе и имагмагиках считают в лоб. Сильно удивился когда узнал. Посмотри в референсах интеловскую статью, там готовая имплементация, можно почти без изменений брать и втыкать.

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

но там какието настройки при размытии есть и неясно на что они влияют на результат или только на скорость, другие реализации они не юзают ибо лицнзия и прочие красноглазые тараканы

Deleted
()
Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от Deleted

У блюра всего одна настройка - радиус. А у этих дятлов есть вторая, чтобы ограничить хоть как-то количество вычислений.

Короче, если ты нормально считаешь блюр, то ничего кроме радиуса задавать не надо. Этот радиус в гимпе и имагмагике называется сигма.

Vit ★★★★★
() автор топика
Последнее исправление: Vit (всего исправлений: 1)
Ответ на: комментарий от smilessss

Попробуй найти на яваскрипте другую имплементацию. Причем чтобы скорость от радиуса не зависела особо.

Vit ★★★★★
() автор топика

Помню такой «блюр» в глазах от var на поцкале в 90-х :) Правда, там был еще фонг.

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)

Первые три радиуса отрабатывает за 350ms, потом скатывается на три секунды. Фокс.

A1
()

Интересно, сколько будет у изображения 4000х4000 жабоскрипт считать адаптивную медианную фильтрацию? Бывают же в мире извращенцы... Ладно еще, такую фигню на жабоскрипте сделать.

Eddy_Em ☆☆☆☆☆
()

P.S. Гауссова фильтрация со скоростью, независящей от радиуса, вычисляется ТОЛЬКО через БПФ. И как ты БПФ на жабоскрипте реализовал?

Eddy_Em ☆☆☆☆☆
()

Глянул исходники. Нас обманули. Расходимся.

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

на квадрат 4х4 всего-то

Иди закуси и проспись.

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

По-моему, проще было бы (и значительно шустрей) сделать БПФ через шейдеры в webGL.

Eddy_Em ☆☆☆☆☆
()

Константы в коде — плохая идея.
Надо рефакторить.

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

Каждый пишет код так, как ему удобно
Лишь бы работало и не тормозило
Как видишь, эти два условия тут выполнены

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

Тем что он гауссов. А там кривое и медленное говно, где даже свертка боксблюра с ошибками сделана.

Vit ★★★★★
() автор топика
    r0 = r;
    g0 = g;
    b0 = b;
    a0 = a;

    r1 = r0;
    g1 = g0;
    b1 = b0;
    a1 = a0;

    r2 = r1;
    g2 = g1;
    b2 = b1;
    a2 = a1;


Я, конечно, математику пишу редко. Да и критиковать каждый горазд. Но по мне - это жесть какая-то.

unikoid ★★★
()

Поздравляю, молодцы что довели до ума.

Любопытно на сколько реальной была твоя начальная оценка на твой сегодняшний взгляд? Напомню, когда я пытался его реализовать у тебя, ты говорил что там не слишком сложно, изначально на пару дней работы отводил, потом до недели вроде расширил, если мне не изменяет память.

В общем мне любопытен скорее вопрос, если его поставить так: была ли задача в общем выполнима без специальных знаний или всё таки для этой задачи нужно было прочитать те статьи ссылки на которые есть на гитхабе?

AndreyKl ★★★★★
()
Последнее исправление: AndreyKl (всего исправлений: 1)
Ответ на: комментарий от unikoid

это может быть от того что человек не уверен в том что будет если написать r0 = r1 = r2 = r; вроде как если мне не изменяет память где то в старом си порядок операций этих не был определён стандартом и в общем случае неопределён. Человек просто не рискует да и всё, а красоты тут особой в длинных цепочках нет, как по мне.

А может просто забил..

AndreyKl ★★★★★
()
Последнее исправление: AndreyKl (всего исправлений: 1)
Ответ на: комментарий от Vit

А там кривое и медленное говно, где даже свертка боксблюра с ошибками сделана.

В фоксе он на два порядка быстрее.

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

В фоксе он на два порядка быстрее.

Если даже не больше.

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

Ну а вот это чем объяснить?

    r = src[in_offs];
    g = src[in_offs + 1];
    b = src[in_offs + 2];
    a = src[in_offs + 3];

    r0 = r;
    g0 = g;
    b0 = b;
    a0 = a;
Это то же самое, что
    r0 = src[in_offs];
    g0 = src[in_offs + 1];
    b0 = src[in_offs + 2];
    a0 = src[in_offs + 3];
Я такого идиотизма, честно говоря, даже у нубья не видел, просто реально никогда и нигде. Он здоров вообще, этот поциэнт? За стиль *проджектирования* я уже молчу, это аообще полный абзац.

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

Нормальной оценка была. Если кому задача доставалось в качестве тестовой, там не было пожеланий доводить до продуктового варианта и разбираться с положением ручек в гимпе и фотошопе. Расписать unsharp mask через HSL вообще чисто механическая вещь.

Я не помню что именно досталось тебе, но всегда стараюсь чтобы требования были реалистичными.

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

Пиши чаще, напиши лучше :) .

Там есть бенчмарк, ты молодой и талантливый, перед тобой открыты все двери :)

Vit ★★★★★
() автор топика
Ответ на: По ссылке не ходил от Stil

Ну ты сходи, почитай :) . По ссылке обычный боксблюр прокатывают. Тут гуассов.

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

Лишь бы работало и не тормозило

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

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

Поддерживаю.
С присвоениями там некоторый перебор.

Goury ★★★★★
()

Вобщем когда рефакторить соберётесь — зовите меня. Математика там не на мой вкус, но красоты навести помогу.

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

Когда ты соберешься не просто балаболить, а писать быстрый код, возьми бенчмарк, и сделай лучше. Тогда поговорим.

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

Извините, ошибочно посчитал вас адекватным человеком.
Для хамов я ничего рефакторить не буду, перелицензирую под AGPL и можете обосраться со внутренним испоьзованием.

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

Слушай, никому не интересны твои фантазии «как бы ты все улучшил если бы ты умел и у тебя получилось». Сделай доброе дело, избавь топик от твоего бреда.

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

Чего взъершился-то? Anonimous настроение испортил что ли? Тю.

Он у нас сейчас в новом амплуа: ходит по смежным тредам и пародирует Царя.

Распустили модераторы anonimous'а. Раньше как только тред создавался, так сразу он банан получал. А теперь жалеют его, думают образумится. А ему это на руку: побродить по чужим тредам, да пописать гадости.

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

На анонимуса обижаться глупо, он же девиант и к программированию не имеет отношения. Его наоборот, иногда под настроение прикольно погнобить, он так забавно срывается.

Ну а по делу - я на полном серьезе советую любому желающему, перед тем как рассуждать об улучшении кода, сначала посмотреть эти изменения в бенчмарке.

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

Какие к чертям изменения в бенчмарке, если я тебе предлагаю просто мусор из кода выбросить и написать его более аккуратно?
Алгоритм не изменится, разницы никакой в бенчмарке не будет.
Разница будет в поддерживаемости этого кода.

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