Описание построения сумм GSG-1-4 в KAS
--------------------------------------

Для построения MD5-суммы - массив порционно загружается в md5_list_t.

--------------------------------------
GSG-1
--------------------------------------

Если файл (или загруженный массив) имеет достаточной размер (> 5 байт) и менее 50 процентов данных 
состоит из пробелов - по данным этим строится md5-сумма = GSG-1.

--------------------------------------
GSG-2
--------------------------------------

Происходит попытка распознать формат данных и загрузить данные в соответствующую формату структуру.
Поддержаны форматы: gif, jpg, png. Для этого используются соответствующая библиотека:
smtp-filter\ungif, gnu\jpeg, gnu\libpng. 
Если формат не распознан, или произошли ошибки при загрузке - работа прекращается.

В процессе загрузки - картинка масштабируется следующим образом:

    If     (Width > 800 && Height>800)
        Scale = 0.125;
    else if(Width > 400 && Height>400)
        Scale = 0.25;
    else if(Width > 200 && Height>200)
        Scale = 0.5;

Если картинка слишком большая - работа прекращается.
Далее картинка переводится в серую палитру.
Строится md5-сумма по получившейся серой масштабированной картинке = GSG-2.

--------------------------------------
GSG-3
--------------------------------------

Из получившейся серой картинки строится гистограмма цветов (сколько пикселей какого цвета в картинке).
1) Строятся 3 уровня отсечения
 а) отделяющие 10% (5% для GSG-4) темных пикселей от остальных
 б) по центру тяжести гистограммы
 в) по уровню 90% темных пикселей
Уровни игнорируются, если в них попало менее 1% пикселей в обе стороны
2) по уровням строится однобитная картинка
3) а по ней - GSG3/4 (md5 от нее) 

--------------------------------------
GSG-4
--------------------------------------

GSG-4 - представляет собой GSG-3, к исходным данным которого предварительно применяется медианная фильтрация.

Медианный фильтр удаляет мелкие детали (шумы). А у крупных, наоборот, поднимает резкость.

"... Одномерный медианный фильтр представляет собой скользящее окно охватывающее нечетное число элементов изображения.
Центральный элемент заменяется медианой элементов изображения в окне. Медианой дискретной последовательности М 
элементов при нечетном 1 называют элемент, для которого существует (М-1)/2 элементе меньших или равных ему по 
величине и (М-1)/2 элементов больших или равных ему по величине. 
Медианный фильтр в одних случаях обеспечивает подавление шума, а в других - вызывает нежелательное подавление сигнала. 
Медианный фильтр не влияет на пилообразные и ступенчатые функции, что обычно является полезным свойством, однако 
он подавляет импульсные сигналы, длительность которых составляет менее половины ширины окна. Фильтр также вызывает 
уплощение вершины треугольной функции."

--------------------------------------
GSG-7
--------------------------------------

GSG-7 использует не масштабированную картинку, приходящую на вход GSG-2, при условии, что её размер не превышает 1500х1500.
GSG-7 - сигнатура, построенная библиотекой smtp-filter/libosr. libosr производит анализ картинки на предмет наличия на ней
"машинного текста". Сигнатура будет построена, если количество этого "текста" удовлетворит "ограничению снизу", заданного
параметрами, установленными в libosr по умолчанию, либо параметрами, заданными извне (на данный момент используются 
параметры по умолчанию). Если libosr посчитает, что на картинке нет текста, в GSG-7 вернётся пустая строка.



Путь в CVS к данному документу:
smtp-filter\libgsg2\readme

   С уважением,
   Евгений Смирнов,
   mailto:Evgeny.Smirnov@kaspersky.com
