|
Истинная ценность компьютерной
обработки изображений зависит от того, что можно сделать с изображением,
как только оно оказалось в компьютере. Существует великое множество полезных
манипуляций с фотографиями, введенными цифровым способом. Снимок сделан
с передержкой? Нет проблем; выдержку можно сократить, уменьшив цветовые
значения пикселов. При необходимости, красную, зеленую и синюю компоненты
можно изменять раздельно, чтобы получить наилучший цветовой баланс. А если
изображение снято не в фокусе? В расплывчатых изображениях можно увеличить
резкость, и, наоборот, четкие, контрастные изображения можно размыть, имитируя
эффект смягчающих фотофильтров.
Если в вашем распоряжении хорошее программное обеспечение для обработки
изображений, нет почти никаких пределов для чудес, которые вы можете творить.
С алгоритмической точки зрения, получение этих эффектов не представляет
особого труда. Секрет каждого из них заключен в крошечной матрице чисел,
которую называют ядром свертки. Матрица размером 3-на-3 содержит три строки
по три числа в каждой. Чтобы преобразовать один пиксел в изображении, вы
умножаете значение его цвета на число в центре ядра. Затем вы умножаете
восемь значений цветов пикселов, окружающих центральный пиксел, на соответствующие
им коэффициенты ядра, суммируете все девять значений, и получаете в результате
новое значение цвета центрального пиксела. Этот процесс повторяется для
каждого пиксела в изображении, тем самым изображение, как принято говорить,
фильтруется. Коэффициенты ядра определяют результат процесса фильтрации.
Ядро размывания, например, состоит из совокупности коэффициентов, каждый
из которых меньше 1, а их сумма составляет 1. Это означает, что каждый
пиксел поглотит что-то из цветов соседей, но полная яркость изображения
останется неизменной. (Если сумма коэффициентов больше чем 1, яркость увеличится;
если меньше чем 1, яркость уменьшится.) В ядре резкости центральный коэффициент
больше 1, а окружен он отрицательными числами, сумма которых на единицу
меньше центрального коэффициента. Таким образом увеличивается любой существующий
контраст между цветом пиксела и цветами его соседей. Это звучит немного
мистически, но цифровое изображение, в конце концов, всего лишь связка
чисел. Изменяя эти числа правильным способом, можно прийти к удивительными,
возможно, очень полезным спецэффектам.
'На пальцах': в начале создается матpица 3x3:
|a b c|
|d e f|
|g h k|
Затем делаешь цикл по изобpажению: допустим кооpдината текущей точки P(i,j),
то в эту кооpдинату записываешь такое значание:
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);
|