(C) Кручинин Александр, 2010. http://vidikon.com support@vidikon.com
(C) Российский фонд фундаментальных исследований, 2010.


ImagePak
Библиотека для обработки и распознавания графических изображений
Версия 1.1
  1. Назначение
  2. Geometry
  3. Img
  4. Img_transf
  5. Math_a
  6. Geoman
  7. Detect_img
  8. Contour
  9. Grid
  10. Histogram
  11. Segment
  12. Comparison
  13. Дополнительно
Img

     Описывается версия Img 1.04. Операции над изображениями.
Изменения (1.04):
- исправлена ошибка в функции DrawLine;
- исправлена функция Adaptive2ThresholdImage;
- исправлена функция ClearImage;
- добавлена функция DrawFillRect;
- добавлена функция DeleteImg.


Структура IMG

struct IMG
{
         byte* bytes;
         int Width;
         int Width_1;
         int Height;
         bool on;
         BYTE format;
};

     Структура описывает изображение. Изображение хранится перевёрнутым (как в файле формата BMP).
bytes - указатель на данные изображения;
Width - ширина;
Width_1 - длина строки изображения в байтах;
Height - высота;
on - указывает загружено изображение или нет (не везде используется);
format - формат изображения (0 - 24 бит, 1 - 8 бит градации серого).


Функция OpenDF

IMG OpenDF(char* filename);

     Функция загружает изображение из 24-битного BMP-файла в IMG.

Функции DrawLine

int DrawLine(IMG img,F_LINE f,byte c1,byte c2,byte c3);
int DrawLine(IMG img, C_POINT p1,C_POINT p2,byte c1,byte c2,byte c3);

     Функции рисуют линию с BGR цветом (c1,c2,c3) неограниченно по линии f и ограниченно между точками p1 и p2 на изображении img.

Функция DrawRect

int DrawRect(IMG img,RECT rect,byte c1,byte c2,byte c3);

     Функция рисует прямоугольник rect с BGR цветом (c1,c2,c3) на изображении img.

Функция UpDownImage

int UpDownImage(IMG img);

     Отображает изображение сверху вниз.

Функция LoadPictureFile

HBITMAP LoadPictureFile(LPCTSTR szFile);

     Функция из MSDN для загрузки изображений из BMP и JPEG файлов в HBITMAP.

Функция OpenGraphFile

IMG OpenGraphFile(char* filename);

     Функция использует LoadPictureFile для загрузки изображения из BMP и JPEG файлов в IMG.

Функция SaveDF

int SaveDF(char* filename,IMG img);

     Функция сохраняет img в BMP файл filename.

Функция CopyIMG

int CopyIMG(IMG in,IMG &out);

     Функция копирует изображение из in в out.

Функция Transform1

IMG Transform1(IMG Img);

     Функция осуществляет трансформацию изображения Img путём добавления с каждого края по 10 пикселей, после чего возвращает новый IMG. Img не удаляется.

Функция ThresholdImage

void ThresholdImage(IMG Img,byte param,RECT rect);

     Функция оставляет в участке описанного rect изображения Img только два цвета - максимальный и минимальный, разделяемые по пороговому значению param. В 24 битном изображении param является значением яркости.

Функция AdaptiveThresholdImage

IMG AdaptiveThresholdImage(IMG Img,int block_size,RECT rect,DWORD flags);

     Функция аналогична адаптивной монохромной трансформации из OpenCV.
Параметры:
Img - входное изображение, которое НЕ удаляется;
block_size - размер блока при проведении трансформации (чем больше, тем медленней);
rect - размер участка, на котором осуществляется трансформация;
flags - флаги, либо 0, либо THRESH_BINARY_INV - инвертировать цвета.
     Функция возвращает новое изображение того же формата.


Функция Adaptive2ThresholdImage

void Adaptive2ThresholdImage(IMG Img,byte param,byte delta,RECT rect,int pixels);

     Функция адаптивной монохромной трансформации.
Параметры:
Img - входное изображение, в котором и будет находиться результат;
param - пороговое значение перевода в монохромное изображение;
delta - 1/2 диапазона изменения порогового значения;
rect - размер участка, на котором осуществляется трансформация;
pixels - количество пикселей на отдельный квадрат, желательно, чтобы квадраты были не маленькие и обязательно кратные.
     Все изображение делится на квадраты со сторонами pixels. Для каждого квадрата считалось среднее значение яркости (Br), а затем для каждого квадрата уточнялось пороговое значение по формуле: New_param=param-delta+Br*delta*2/256. Далее осуществляется разделение на чёрное и белое.


Функции AllocationBorders

void AllocationBorders(IMG img);
void AllocationBordersRect(IMG img,RECT r, DWORD flags);

     Функции выделяют границы между белым и чёрным (сначала необходимо выполнить операцию "Threshold") для всего изображения или участка rect. По умолчанию проверяются все чёрные точки, и, если сверху или снизу, или справа, или слева есть белый пикселей, то текущий пиксель считается граничным и ему присваивается значение 128 (для 24 битных изображений в 128 устанавливаются все 3 компонента). В функции AllocationBordersRect, если будет установлен флаг ALLOCATE_WHITE, то проверяются белые пиксели.

Функция ReduceImage

IMG ReduceImage(IMG img,int param);

     Функция уменьшает изображение img в кратное число раз param, возвращая новое изображение. Старое изображение не удаляется.

Функция IncreaseImg

IMG IncreaseImg(IMG img,int param);

     Функция увеличивает изображение img в кратное число раз param, возвращая новое изображение. Старое изображение не удаляется.

Функции Img24To8 и Img8To24

IMG Img24To8(IMG Img);
IMG Img8To24(IMG Img);

     Функции преобразуют изображение img из 24 битного формата в 8 битный и наоборот, возвращая новое изображение. Старое изображение не удаляется.

Функция ClearImage

void ClearImage(IMG img);

     Функция очищает 24 битное изображение.

Функция DrawPoint

void DrawPoint(IMG img,int x,int y,byte c1,byte c2,byte c3);

     Функция рисует точку с координатами x и y с BGR цветом (c1,c2,c3) на изображении img.

Функция DrawFillRect

void DrawFillRect(IMG Img,RECT Rect,byte c1,byte c2,byte c3);

     Функция рисует закрашенный прямоугольник с размерами rect и BGR цветом (c1,c2,c3) на изображении Img.

Функция DeleteImg

void DeleteImg(IMG Img);

     Удаление массива байт из ранее выделенного изображения Img.