Изображения и обработка изображений
Tip
Дополнительные сведения см. на вкладке "Текст и изображения ".
На компьютере изображение представляет собой массив числовых значений пикселей . Например, рассмотрим следующий массив:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
Массив состоит из семи строк и семи столбцов, представляющих значения пикселей для изображения с разрешением 7x7 пикселей (это и есть разрешение изображения). Каждый пиксель имеет значение от 0 (черный) до 255 (белый); со значениями между этими границами, представляющими оттенки серого. Изображение, представленное этим массивом, похоже на следующее изображение (увеличенное):
Массив значений пикселей для этого изображения является двумерным (представляющим строки и столбцы или координаты x и y) и охватывает один прямоугольник значений пикселей. Один слой значений пикселей, как данный, представляет изображение в градациях серого. В действительности большинство цифровых изображений являются многомерными и состоят из трех слоев (известных как каналы), которые представляют красный, зеленый и синий цвет (RGB). Например, можно представить цветное изображение, определив три канала значений пикселей, создающих ту же квадратную фигуру, что и предыдущий пример серого масштабирования:
Red:
150 150 150 150 150 150 150
150 150 150 150 150 150 150
150 150 255 255 255 150 150
150 150 255 255 255 150 150
150 150 255 255 255 150 150
150 150 150 150 150 150 150
150 150 150 150 150 150 150
Green:
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
Blue:
255 255 255 255 255 255 255
255 255 255 255 255 255 255
255 255 0 0 0 255 255
255 255 0 0 0 255 255
255 255 0 0 0 255 255
255 255 255 255 255 255 255
255 255 255 255 255 255 255
Ниже приведен итоговый образ:
Фиолетовые квадраты представлены сочетанием:
Red: 150
Green: 0
Blue: 255
Желтые квадраты в центре представлены сочетанием:
Red: 255
Green: 255
Blue: 0
Фильтры
Распространенным способом выполнения задач обработки изображений является применение фильтров , которые изменяют значения пикселей изображения для создания визуального эффекта. Фильтр определяется одним или несколькими массивами значений пикселей, называемыми ядрами фильтра . Например, можно определить фильтр с ядром 3x3, как показано в этом примере:
-1 -1 -1
-1 8 -1
-1 -1 -1
Затем ядро свёртывается по всему изображению, вычисляя взвешенную сумму для каждой области 3x3 пикселей и записывая результат в новое изображение. Проще понять, как работает фильтрация, изучая пошаговый пример.
Начнем с изображения в градациях серого, которое мы изучили ранее.
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 255 255 255 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
Во-первых, мы применяем ядро фильтра к верхнему левому участку изображения, умножая каждое значение пикселя на соответствующее значение веса в ядре, и добавляя результаты:
(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (0 x -1) + (255 x -1) = -255
Результат (-255) становится первым значением в новом массиве. Затем мы переместим ядро фильтра по одному пикселю вправо и повторите операцию:
(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (255 x -1) + (255 x -1) = -510
Опять же, результат добавляется в новый массив, который теперь содержит два значения:
-255 -510
Процесс повторяется до тех пор, пока фильтр не будет связан по всему изображению, как показано в этой анимации:
Фильтр связан с изображением, вычисляя новый массив значений. Некоторые значения могут находиться за пределами диапазона значений пикселей от 0 до 255 пикселей, поэтому значения корректируются в соответствии с этим диапазоном. Из-за формы фильтра внешний край пикселей не вычисляется, поэтому применяется значение заполнения (обычно 0). Результирующий массив представляет новое изображение, в котором фильтр преобразовал исходное изображение. В этом случае фильтр оказал эффект выделения краев форм на изображении.
Чтобы увидеть эффект фильтра более четко, вот пример того же фильтра, примененного к реальному изображению:
| Исходное изображение | Отфильтрованное изображение |
|---|---|
|
|
Так как фильтр сворачивается по изображению, этот вид обработки изображения часто называется сверточной фильтрацией. Фильтр, используемый в этом примере, является определенным типом фильтра (который называется фильтром Laplace ), который выделяет края объектов на изображении. Существует множество других типов фильтров, которые можно использовать для создания размытия, резкости, инверсии цвета и других эффектов.