ResourceReadImage - двумерный массив - страница 2

 
Karputov Vladimir:

...

А вот если есть мысли по применению размытия - пожалуйста делитесь. 

Если носим очки, то можно их снять
 
Artyom Trishkin:
Если носим очки, то можно их снять
Я имел в виду буквально следующее: "Если есть мысли по алгоритму реализации размытия средствами MQL5, то пожалуйста делитесь". 
 
Karputov Vladimir:
Я имел в виду буквально следующее: "Если есть мысли по алгоритму реализации размытия средствами MQL5, то пожалуйста делитесь". 

1. Фильтр Гаусса это просто низкочастотный фильтр. Сумма коэффициентов == 1, саму маску несложно вычислить один раз для любого заданного размера маски, даже в кодобазе реализацию думаю можно найти.

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

3. Почему нельзя вынести само размытие массива в нормальную универсальную функцию?

 
Комбинатор:

1. Фильтр Гаусса это просто низкочастотный фильтр. Сумма коэффициентов == 1, саму маску несложно вычислить один раз для любого заданного размера маски, даже в кодобазе реализацию думаю можно найти.

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

3. Почему нельзя вынести само размытие массива в нормальную универсальную функцию?

  1. Уже делаю таблицу коэффициентов для разного радиуса размытия. Таблица будет прописана в коде.
  2. Уже переписываю алгоритм - проход идёт по строкам и столбцам. Захвата с другого края уже нет. При этом крайние пиксели инициализируются нулём и никак не обрабатываются (позже будут заполняться соседними пикселями для правильного размытия).
    Вот оригинал изображения (размер изображения 6x6 пикселей):
    Оригинал


    После размытия пока так (размер изображения 6x6 пикселей):
    После размытия

  3. Универсальную для любого радиуса размытия?
 

Karputov Vladimir: 

Универсальную для любого радиуса размытия?
А почему нет?
 
Комбинатор:
А почему нет?
Тогда нужно проверить, что возвращает формула Гаусса из Alglib. Это будет, вероятно универсально.
 

Версия 1.11:

Важно: формат первоначальной картинки - *.bmp и глубина цвета 24 бита.

Новое: теперь достаточно просто задать радиус размытия.

Недостатки: по периметру изображения сохраняется полоса необработанных (или прозрачных или с чёрным цветом) пикселей, по ширине равная радиусу размытия. Устраню позже.

Версия 1.11

Файлы:
Gauss.mq5  8 kb
 
Karputov Vladimir:

Версия 1.11:

Важно: формат первоначальной картинки - *.bmp и глубина цвета 24 бита.

Новое: теперь достаточно просто задать радиус размытия.

Недостатки: по периметру изображения сохраняется полоса необработанных (или прозрачных или с чёрным цветом) пикселей, по ширине равная радиусу размытия. Устраню позже.


А в чем смысл сего действа???

убийца фотошопа? 

 
Karputov Vladimir:

Недостатки: по периметру изображения сохраняется полоса необработанных (или прозрачных или с чёрным цветом) пикселей, по ширине равная радиусу размытия. Устраню позже.

Артефакты обычно убираются размытием мнимым продолжением крайнего пикселя или зеркальным отражением картинки
 

Версия 1.12:

Важно: формат первоначальной картинки - *.bmp и глубина цвета 24 бита.

Новое: по периметру изображения нет артефактов.

Пример с размытием радиусом 2:

Оригинал 

 

и после размытия радиусом 2:

После размытия радиусом 2 

Файлы:
Gauss.mq5  10 kb
Причина обращения: