Фильтры для изображений -программа на Delphi7
Рефераты >> Программирование и компьютеры >> Фильтры для изображений -программа на Delphi7

Содержание:

  1. Постановка задачи
  2. Описание алгоритма
  3. Инструкция пользователя
  4. Выводы
  5. Список использованных источников

1.Постановка задачи

Написать программу фильтры для изображений. В программе должно быть реализовано 4-5 фильтров, также программа должна работать для любых размеров изображений, предусмотреть возможность применять несколько фильтров одновременно. Организовать также сохранение измененного изображения.

2.Описание алгоритма

Истинная ценность компьютерной обработки изображений зависит от того, что можно сделать с изображением, как только оно оказалось в компьютере. Существует великое множество полезных манипуляций с фотографиями, введенными цифровым способом. Снимок сделан с передержкой? Нет проблем; выдержку можно сократить, уменьшив цветовые значения пикселов. При необходимости, красную, зеленую и синюю компоненты можно изменять раздельно, чтобы получить наилучший цветовой баланс. А если изображение снято не в фокусе? В расплывчатых изображениях можно увеличить резкость, и, наоборот, четкие, контрастные изображения можно размыть, имитируя эффект смягчающих фотофильтров. Если в вашем распоряжении хорошее программное обеспечение для обработки изображений, нет почти никаких пределов для чудес, которые вы можете творить. С алгоритмической точки зрения, получение этих эффектов не представляет особого труда. Секрет каждого из них заключен в крошечной матрице чисел, которую называют ядром свертки. Матрица размером 3-на-3 содержит три строки по три числа в каждой. Чтобы преобразовать один пиксел в изображении, вы умножаете значение его цвета на число в центре ядра. Затем вы умножаете восемь значений цветов пикселов, окружающих центральный пиксел, на соответствующие им коэффициенты ядра, суммируете все девять значений, и получаете в результате новое значение цвета центрального пиксела. Этот процесс повторяется для каждого пиксела в изображении, тем самым изображение, как принято говорить, фильтруется. Коэффициенты ядра определяют результат процесса фильтрации. Ядро размывания, например, состоит из совокупности коэффициентов, каждый из которых меньше 1, а их сумма составляет 1. Это означает, что каждый пиксел поглотит что-то из цветов соседей, но полная яркость изображения останется неизменной. (Если сумма коэффициентов больше чем 1, яркость увеличится; если меньше чем 1, яркость уменьшится.) В ядре резкости центральный коэффициент больше 1, а окружен он отрицательными числами, сумма которых на единицу меньше центрального коэффициента. Таким образом увеличивается любой существующий контраст между цветом пиксела и цветами его соседей. Это звучит немного мистически, но цифровое изображение, в конце концов, всего лишь связка чисел. Изменяя эти числа правильным способом, можно прийти к удивительными, возможно, очень полезным спецэффектам.

Итак: в начале создаем матpица 3x3:

|a b c| |d e f| |g h k|

Затем делаем цикл по изображению: допустим координата текущей точки P(i,j), то в эту координату записываем такое значение:

P(i,j) = (a*P(i-1,j-1)+b*P(i,j-1)+c*P(i+1,j-1)+ + d*P(i-1,j) + e*P(i,j) + f*P(i+1,j) + g*P(i-1,j+1)+h*P(i,j+1)+k*P(i+1,j+1) ) / (a+b+c+d+e+f+g+h+k);

Рассмотрим работу некоторых фильтров приведенных в программе более подробно.

Размывание и увеличение резкости.

При размывании перераспределяются цвета в изображении и смягчаются резкие границы, в то время как при увеличении резкости подчеркиваются различия между цветами смежных пикселов и выделяются незаметные детали.

Ядро размывания, состоит из совокупности коэффициентов, каждый из которых меньше 1, а их сумма составляет 1. Это означает, что каждый пиксел поглотит что-то из цветов соседей, но полная яркость изображения останется неизменной. (Если сумма коэффициентов больше чем 1, яркость увеличится; если меньше чем 1, яркость уменьшится.) В ядре резкости центральный коэффициент больше 1, а окружен он отрицательными числами, сумма которых на единицу меньше центрального коэффициента. Таким образом увеличивается любой существующий контраст между цветом пиксела и цветами его соседей.

Как работают размывание и увеличение резкости.

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

2. Ядро размывания размером 3х3 применяется к красной, зеленой и синей компонентам цвета каждого пиксела в изображении. Значение цвета пиксела, который находится внизу под центром ядра, вычисляется умножением весовых коэффициентов ядра на соответствующие значения цвета в изображении и суммированием результатов.

3. Итоговое изображение получилось размытым по сравнению с оригиналом потому, что цвет каждого пиксела распространился среди соседей. Степень размывания можно увеличить либо используя ядро большего размера, чтобы распределить цвета среди большего числа соседей, либо, подбирая коэффициенты ядра и уменьшая влияние центрального коэффициента, либо фильтруя изображение еще раз с ядром размывания.

Тиснение.

Тиснение преобразует изображение так, что фигуры внутри изображения смотрятся так, как будто они выдавлены на металлической поверхности, подобно профилю Джоржа Вашингтона на лицевой стороне монеты достоинством в 25 центов

Как работает тиснение.

1. Тиснение делается почти также как размывание и увеличение резкости. Процесс начинается с обычным цветным изображением.

2. Каждый пиксел в изображении обрабатывается ядром тиснения размером 3х3. В отличие от ядер размывания и резкости, в которых сумма коэффициентов равна 1, сумма весов в ядре тиснения равна 0. Это означает, что "фоновым" пикселам (пикселам, которые не находятся на границах перехода от одного цвета к другому) присваиваются нулевые значения, а нефоновым пикселам - значения, отличные от нуля.

3. После того, как значение пиксела обработано ядром тиснения, к нему прибавляется 128. Таким образом значением фоновых пикселов станет средний серый цвет (красный = 128, зеленый = 128, синий = 128). Суммы, превышающие 255, можно округлить до 255 или взять остаток по модулю 255, чтобы значение оказалось между 0 и 255.

4. В тисненом варианте изображения, контуры кажутся выдавленными над поверхностью. Направление подсветки изображения можно изменять, меняя позиции 1 и -1 в ядре. Если, например, поменять местами значения 1 и -1, то реверсируется направление подсветки.

Акварелизация.

Акварельный эффект превращает фотографическое изображение в картинку, как будто бы написанную акварелью.

1. Акварельный фильтр преобразует изображение, и после обработки оно выглядит так, как будто написано акварелью. Выше - цифровое изображение, просканированное с фотографии.

2. Первый шаг в применении акварельного фильтра - сглаживание цветов в изображении. Одним из способов сглаживания является процесс медианнного осреднения цвета в каждой точке. Значение цвета каждого пиксела и его 24 соседей помещаются в список и сортируются от меньшего к большему. Медианное (тринадцатое) значение цвета в списке присваивается центральному пикселу.


Страница: