Принципы обработки компьютерных изображений

Обновлено: 30.06.2024

Необходимо отметить, что мы будем манипулировать с двумерными изображениями. Под изображением будем понимать функцию двух вещественных переменных , где – это интенсивность (яркость) в точке с координатами . Иногда обработке будет подвергаться не всё изображение, а некоторая его часть, которую в англоязычной литературе принято называть region-of-interest, ROI (область представляющая интерес, ОПИ). Для обработки на компьютере изображение должно быть дискретизировано и квановано. Дискретизованное и квантованное изображение называется цифровым. Цифровое изображение представлено в дискретном двумерном пространстве, где – номер строки, а – номер столбца. Элемент, расположенный на пересечении -ой строки и -го столбца называется пиксел (pixel – picture element). Интенсивность пиксела может описываться либо вещественным или целым числом. Относительная интенсивность в вещественных числах обычно изменяется от 0 до 1, а в целых числах от 0 до 255. Обычно физический сигнал, возникающий в точке , является функцией зависящей от многих параметров ( - глубина, – длина волны, – время). Однако мы будем рассматривать статические, и чаще монохроматические изображения.

В основе алгоритмов обработки изображений положены в основном интегральные преобразования: cвертка, преобразование Фурье и др. Также используются статистические методы. Методы обработки изображений классифицируют обычно по количеству пикселов участвующих в одном шаге преобразования:

Субъективность восприятия изображений человеком сильно усложняет применение формализованных подходов при решении некоторых задач их обработки. Поэтому часто строгие математические критерии оптимальности заменяют качественные представления о целесообразности той или иной обработки, опирающиеся на субъективные оценки результатов. К такому классу методов относится и препарирование изображений. Препарирование используется, когда необходимо подчеркнуть, усилить какие-то черты, особенности, нюансы наблюдаемого изображения с целью улучшения субъективного восприятия. В отличие от методов фильтрации при выполнении процедур препарирования на результат оказывает влияние значение интенсивности только в обрабатываемой точке, а не в ее окрестности. Такая обработка называемая поэлементной. Сущность поэлементной обработки изображений сводится к следующему. Пусть , – значения яркости исходного и получаемого после обработки изображений соответственно в точке кадра, имеющей декартовы координаты i (номер строки) и j (номер столбца). Поэлементная обработка означает, что существует функциональная однозначная зависимость между этими яркостями,позволяющая по значению исходного сигнала определить значение выходного продукта. В общем случае, как это учтено в данном выражении, вид или параметры функции , описывающей обработку, зависят от текущих координат. При этом обработка является неоднородной. Однако в большинстве практически применяемых процедур используется однородная поэлементная обработка. В этом случае индексы i и j в выражении могут отсутствовать. При этом зависимость между яркостями исходного и обработанного изображений описывается функцией: одинаковой для всех точек кадра.

Зеркальные отражения изображений в библиотеке IPL можно осуществить с использованием функции iplMirror, которая принимает три аргумента. При вызове функции iplMirror кроме указателей на исходное изображение srcImage и изображение-результат dstImage передается целочисленный аргумент flipAxis, который указывает, относительно какой оси будет осуществляться зеркальное отражение. Аргумент flipAxis может принимать следующие значения:

  • 0 – для отражения относительно горизонтальной оси;
  • 1 – для отражения относительно вертикальной оси;
  • -1 – для отражения сразу относительно вертикальной и горизонтальной оси

Для исследования методов фильтрации или других целей можно воспользоваться функцией iplNoiseImage, которая позволяет сгенерировать шум и добавить его к изображению (зашумить). Эта функция имеет следующий прототип: IPLStatus iplNoiseImage(IplImage* image, const IplNoiseParam* noiseParam); где image – изображение, а noiseParam – параметры шума, которые создаются с помощью функции iplNoiseUniformInit (для шума распределенного равномерно) или iplNoiseGaussianInit (для шума с Гауссовым распределением): void iplNoiseUniformInit(IplINoiseParam* noiseParam, unsigned int seed, int low, int high); void iplNoiseGaussianInit(IplINoiseParam* noiseParam, unsigned int seed, int mean, int stDev); где noiseParam – указатель на структуру типа IplINoiseParam, в которую функция запишет параметры для генерации шума, seed – число для инициализации генератора случайных чисел. Для равномерного шума задаются аргументы low и high, которые определяют верхнюю и нижнюю границы диапазона равномерно распределенных значений. Для гауссового шума задаётся аргумент mean, который определяет среднее значение распределения Гаусса, а stDev – среднеквадратическое отклонение. Таким образом, процедура для зашумления изображения может быть реализована следующим образом: void NoiseImage < // Задание параметров шума IplNoiseParam noiseParam; iplNoiseUniformInit(&noiseParam, 0, 100, 200); // Зашумление изображения iplNoiseImage(m_img, &noiseParam);>

Читайте также: