|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.06.2009, 13:29 | #1 |
Пользователь
Регистрация: 31.05.2009
Сообщений: 19
|
Как можно зашумить изображение?
Добрый день)
столкнулся с такой проблемой, мне нужно зашумлять изображение разными способами... на данный момент реализованы два способа зашумления - гауссов шум и гауссово размытие.. что можно еще использовать? одно НО - не надо производить изменения формы фигуры(в плане поворотов, растягиваний,сжатий и пр.), т.к. производится сравнение с эталонными фигурами.... заранее благодарен!!! Последний раз редактировалось antonyLW; 04.06.2009 в 13:38. |
04.06.2009, 13:47 | #2 |
Форумчанин
Регистрация: 29.05.2009
Сообщений: 320
|
Например по преобразованию Бернулли можно получить квази-зашумление:
// x(n+1) = k * x(n) (mod 1) double BernoulyChaos(double Arg, double k) { double x = Arg; long i = 0; i = x *= k; x -= i; return x; } x = BernoulyChaos(x, 1.000002365); // Последовательно + Конечно метод Монте-Карло часто используют. |
04.06.2009, 18:08 | #3 |
Пользователь
Регистрация: 31.05.2009
Сообщений: 19
|
на делфи это будет выглядеть вот так?
function BernoulyChaos(Arg,k: real): real; var x,i: integer; begin x:=arg; i:= x*k; x:= x - i; result:=x; end; щас буду пробовать, разбираться... ps А что за метод монте карло? т.е. как преобразуется изображение? |
04.06.2009, 21:07 | #4 |
Пользователь
Регистрация: 31.05.2009
Сообщений: 19
|
попробовал сделать по Бернулли....написал следующий код
Код:
при К = 2 при первом зашумлении получилась та же фигура, только белый свет стал сиреневым.... что не так? |
05.06.2009, 01:17 | #5 |
Пользователь
Регистрация: 31.05.2009
Сообщений: 19
|
еще трабла....извиняюсь за длинный код модуля...
проблема - при значениях радиуса в районе 0.5 - 0.8 монохромное изображение инвертируется... как можно от этого избавиться? просто при тестах у меня проходит зашумление этого изображения при разных коэффициентах (т.е. радиусах размывания, в среднем от 0.1 до 20), и возникает это инвертирование.... Код:
|
05.06.2009, 02:39 | #6 | ||
Студент, не
Старожил
Регистрация: 29.01.2009
Сообщений: 2,067
|
Цитата:
Цитата:
Небольшой набросок: Код:
I am the First of Cyber Evolution...
I am the First to Program your Future... |
||
05.06.2009, 08:57 | #7 |
Пользователь
Регистрация: 31.05.2009
Сообщений: 19
|
дык этот случайный есть уже...это обыкновенный гауссовский шум...
|
05.06.2009, 23:19 | #8 |
Форумчанин
Регистрация: 29.05.2009
Сообщений: 320
|
По Бернулли - это когда умножаешь дробное от 0 до 1 на 2 (или k) и берешь остаток по модулю 1. x(n+1) = k * x(n) (mod 1). Например:
{0.13; 0.26; 0.52; 0.04; 0.08; 0.16; 0.32; 0.64; 0.28... } Получается непредсказуемая последовательность. Для картинки соответственно нужно организовать две таких последовательности, и смотреть когда они заканчиваются (начинают повторяться, для этого я взял k длинное). На дельфи будет так: BernoulyChaos(Arg : Double, k : Double) : Double; begin Result = frac(x * k); end; А про алгоритм Монте-Карло можно в Вики посмотреть. Там наверно про разные алгоритмы шума есть (псевдо, на основе чисел, реальный хаос). Кстати, насчет randomize и random() в Дельфи. Если вы откроете их и посмотрите, то обнаружите, что в Дельфях случайные числа это некое арифметическое от текущего системного времени, т.е. берутся часы, минуты, секунды, все это в кучку - вот и случайное число :-) Далеко НЕ Гауссов шум! Последний раз редактировалось BaronTreep; 06.06.2009 в 19:48. |
07.06.2009, 20:48 | #9 |
Пользователь
Регистрация: 31.05.2009
Сообщений: 19
|
за объяснение Бернулли - спасибо!)))
вообще, меня больше интересуют не то чтобы алгоритмы шума, а эффекты, получающиеся при зашумление, т.е. например изображение размывается...или эффект распыления (распылитель в ms paint), просто случайные точки... а гауссов шум у меня реализован, и не с помощью рандома)))) просто эффект примерно тот же - случайные точки на изображении |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как можно отбразить изображение Gif | eldar | Работа с сетью в Delphi | 2 | 25.09.2008 23:07 |
Чем в Делфи можно открыть TIF(F) изображение | dimfil | Компоненты Delphi | 2 | 12.12.2007 09:03 |
RichEdit. как можно вставлять картинку туда? как можно Скрол програмно вниз двигать? | Svop | Компоненты Delphi | 7 | 28.11.2006 21:07 |