Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 08.07.2008, 00:26
Dimonte вне форума Посмотреть профиль Отправить личное сообщение для Dimonte Найти все сообщения от Dimonte
  № 1  
Ответить с цитированием
Dimonte

Регистрация: Jun 2008
Сообщений: 51
По умолчанию Реализация алгоритма размытия

Здравствуйте. Написал тут класс для простенького размытия точечных изображений (только градации серого). Алгоритм простой - берутся значения соседних точек по углам с весом 1/16 каждое, берутся значения точек по сторонам с весом 1/8 каждое, и значение самой точки с весом 1/4. Для повышения скорости расчеты значений сделал по возможности битовым сдвигом, но возникла проблема. Накапливается ошибка вычислений, в результате, уже на 10и проходах заметно заметное затемнение рисунка, а на 15и реализация уже откровенно проваливается. Сделал еще две реализации, одна несколько "честнее" обсчитывает точки и в основном цикле захватывает еще и крайние точки изображения (первая реализации обсчитывает их и угловые точки изображения отдельно). Другая работает практически как первая, но расчет значения через битовый сдвиг применяет не на каждое значение точек, а на блоки значений угловых и соседних точек. Результаты работы алгоритмов показаны на рисунках ниже.

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

10 проходов:


15 проходов:


При этом 10 проходов занимают на моем компьютере время (исходное изображение - 100х100 пикселей):
"честный" алгоритм - 223мс
битовый сдвиг каждого значения - 147мс
битовый сдвиг блоков - 165мс

Исходники приложены.

Для достижения сильного размытия больших изображений понадобится заметно больше проходов. Имеет смысл работать с какой-то из данных реализаций? Если да, то как можно поправить накапливающуюся ошибку (честное округление достаточно сильно бьет по скорости)? Или лучше отказаться от алгоритма вовсе и перейти к Гауссовому размытию, например?
Вложения
Тип файла: rar smooth2d.rar (5.8 Кб, 182 просмотров)

Создать новую тему   Часовой пояс GMT +4, время: 11:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:09.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.