Что такое граничные пиксели
Алгоритмы взяты из прекрасной книги
П.В.Вельтмандер "Машинная графика"
В большинстве приложений используется одно из существенных достоинств растровых устройств - возможность заполнения областей экрана.
Существует две разновидности заполнения:
· первая, связанная как с интерактивной работой, так и с программным синтезом изображения, служит для заполнения внутренней части многоугольника, заданного координатами его вершин.
· вторая, связанная в первую очередь с интерактивной работой, служит для заливки области, которая либо очерчена границей с кодом пиксела, отличающимся от кодов любых пикселов внутри области, либо закрашена пикселами с заданным кодом;
В данном разделе рассмотрим алгоритм заполнения многоугольника. В следующем разделе будут рассмотрены алгоритмы заливки области.
Простейший способ заполнения многоугольника, заданного координатами вершин, заключается в определении принадлежит ли текущий пиксел внутренней части многоугольника. Если принадлежит, то пиксел заносится.
Определить принадлежность пиксела многоугольнику можно, например, подсчетом суммарного угла с вершиной на пикселе при обходе контура многоугольника. Если пиксел внутри, то угол будет равен 360 ° , если вне - 0 ° (рис. ).
Вычисление принадлежности должно производиться для всех пикселов экрана и так как большинство пикселов скорее всего вне многоугольников, то данный способ слишком расточителен. Объем лишних вычислений в некоторых случаях можно сократить использованием прямоугольной оболочки - минимального прямоугольника, объемлющего интересующий объект, но все равно вычислений будет много. Другой метод определения принадлежности точки внутренней части многоугольника будет рассмотрен ниже при изучении отсечения отрезков по алгоритму Кируса-Бека.
Реально используются алгоритмы построчного заполнения, основанные на том, что соседние пикселы в строке скорее всего одинаковы и меняются только там где строка пересекается с ребром многоугольника. Это называется когерентностью растровых строк (строки сканирования Yi, Yi+1, Yi+2 на рис. ). При этом достаточно определить X-координаты пересечений строк сканирования с ребрами. Пары отсортированных точек пересечения задают интервалы заливки.
Кроме того, если какие-либо ребра пересекались i-й строкой, то они скорее всего будут пересекаться также и строкой i+1. (строки сканирования Yi и Yi+1 на рис. 0.2). Это называется когерентностью ребер. При переходе к новой строке легко вычислить новую X-координату точки пересечения ребра, используя X-координату старой точки пересечения и тангенс угла наклона ребра:
(тангенс угла наклона ребра - k = dy/dx, так как dy = 1, то 1/k = dx).
Смена же количества интервалов заливки происходит только тогда, когда в строке сканирования появляется вершина.
Учет когерентности строк и ребер позволяет построить для заполнения многоугольников различные высокоэффективные алгоритмы построчного сканирования. Для каждой строки сканирования рассматриваются только те ребра, которые пересекают строку. Они задаются списком активных ребер (САР). При переходе к следующей строке для пересекаемых ребер перевычисляются X-координаты пересечений. При появлении в строке сканирования вершин производится перестройка САР. Ребра, которые перестали пересекаться, удаляются из САР, а все новые ребра, пересекаемые строкой заносятся в него.
Общая схема алгоритма, динамически формирующего список активных ребер и заполняющего многоугольник снизу-вверх, следующая:
В Приложении 5 приведены две подпрограммы заполнения многоугольника - V_FP0 и V_FP1. Первая реализует данный (простейший) алгоритм. Эта программа вполне работоспособна, но генерирует двух и трехкратное занесение части пикселов. Это мало приемлемо для устройств вывода типа матричных или струйных принтеров.
В отличие от V_FP0, в программе V_FP1 используется более сложный алгоритм формирования списка активных ребер, обеспечивающий практически полное отсутствие дублирований (рис. ).
Понятно, что одна из важнейших работ в алгоритме построчного сканирования - сортировка. В связи с заведомо ограниченной разрешающей способностью растровых дисплеев (не более 2048) иногда целесообразно использовать чрезвычайно эффективный алгоритм сортировки методом распределяющего подсчета.
Для рассмотрения алгоритма предположим, что надо отсортировать числа, заданные в массиве с именем "Исходный_массив"; количество сортируемых чисел задается скаляром "Кол-во_чисел"; сортируемые числа J удовлетворяют условию:
Для сортировки потребуются описания:
-
Обнуляется служебный массив для подсчета числа повторений исходных кодов.
Как уже отмечалось, для приложений, связанных в основном с интерактивной работой, используются алгоритмы заполнения области с затравкой.
При этом тем или иным образом задается заливаемая (перекрашиваемая) область, код пиксела, которым будет выполняться заливка и начальная точка в области, начиная с которой начнется заливка.
По способу задания области делятся на два типа:
· гранично-определенные, задаваемые своей (замкнутой) границей такой, что коды пикселов границы отличны от кодов внутренней, перекрашиваемой части области. На коды пикселы внутренней части области налагаются два условия - они должны быть отличны от кода пикселов границы и кода пиксела перекраски. Если внутри гранично-определенной области имеется еще одна граница, нарисованная пикселами с тем же кодом, что и внешняя граница, то соответствующая часть области не должна перекрашиваться;
· внутренне-определенные, нарисованные одним определенным кодом пиксела. При заливке этот код заменяется на новый код закраски.
В этом состоит основное отличие заливки области с затравкой от заполнения многоугольника. В последнем случае мы сразу имеем всю информацию о предельных размерах части экрана, занятой многоугольником. Поэтому определение принадлежности пиксела многоугольнику базируется на быстро работающих алгоритмах, использующих когерентность строк и ребер (см. предыдущий раздел). В алгоритмах же заливки области с затравкой нам вначале надо прочитать пиксел, затем определить принадлежит ли он области и если принадлежит, то перекрасить.
С использованием связности областей и стека можно построить простые алгоритмы закраски как внутренне, так и гранично-определенной области. В [] рассматриваются совсем короткие рекурсивные подпрограммы заливки. В [] - несколько более длинные итеративные подпрограммы.
Рассмотрим простой алгоритм заливки гранично-определенной 4-х связной области. В [] приведена рекурсивная реализация подпрограммы заливки 4-х связной гранично-определенной области:
void V_FAB4R (grn_pix, new_pix, x_isx, y_isx)
int grn_pix, new_pix, x_isx, y_isx;
if (getpixel (x_isx, y_isx) № grn_pix &&
getpixel (x_isx, y_isx) № new_pix)
putpixel (x_isx, y_isx, new_pix);
V_FAB4R (grn_pix, new_pix, x_isx+1, y_isx);
V_FAB4R (grn_pix, new_pix, x_isx, y_isx+1);
V_FAB4R (grn_pix, new_pix, x_isx-1, y_isx);
V_FAB4R (grn_pix, new_pix, x_isx, y_isx-1);
Заливка выполняется следующим образом:
· определяется является ли пиксел граничным или уже закрашенным,
· если нет, то пиксел перекрашивается, затем проверяются и если надо перекрашиваются 4 соседних пиксела.
Полный текст тестовой программы V_FAB4R с использованием этой подпрограммы приведен в Приложении 6.
Понятно, что несмотря на простоту и изящество программы, рекурсивная реализация проигрывает итеративной в том, что требуется много памяти для упрятывания вложенных вызовов.
В [] приведен итеративный алгоритм закраски 4-х связной гранично-определенной области. Логика работы алгоритма следующая:
Поместить координаты затравки в стек
Пока стек не пуст
Извлечь координаты пиксела из стека.
Для всех четырех соседних пикселов проверить
является ли он граничным или уже перекрашен.
Если нет, то занести его координаты в стек.
На рис. а) показан выбранный порядок перебора соседних пикселов, а на рис. б) соответствующий ему порядок закраски простой гранично-определенной области.
a)
Порядок перебора соседних пикселов
Ясно, что такой алгоритм экономнее, так как в стек надо упрятывать только координаты.
Программа V_FAB4, реализующая данный алгоритм, приведена в Приложении 6.
Сравнительные прогоны тестовых программ V_FAB4R и V_FAB4 подтвердили соображения о неэкономности рекурсивного алгоритма: при стандартном окне стека в 64 K с помощью рекурсивной программы можно закрасить квадратик не более чем 57×57 пикселов. Итеративная же программа V_FAB4 при тех же условиях позволяет закрасить прямоугольник размером 110×110 истратив на массив координат 16382 байта.
Как уже отмечалось, очевидный недостаток алгоритмов непосредственно использующих связность закрашиваемой области - большие затраты памяти на стек, так как на каждый закрашенный пиксел в стеке по максимуму будет занесена информация о еще трех соседних. Кроме того, информация о некоторых пикселах может записываться в стек многократно. Это приведет не только к перерасходу памяти, но и потере быстродействия за счет многократной раскраски одного и того же пиксела. Значительно более экономен далее рассмотренный построчный алгоритм заливки.
Использует пространственную когерентность:
· пикселы в строке меняются только на границах;
· при перемещении к следующей строке размер заливаемой строки скорее всего или неизменен или меняется на 1 пиксел.
Таким образом, на каждый закрашиваемый фрагмент строки в стеке хранятся координаты только одного начального пиксела [], что приводит к существенному уменьшению размера стека.
Последовательность работы алгоритма для гранично определенной области следующая:
В данном приложении приведены две процедуры заливки многоугольника: V_FP0 и V_FP1. Обе они реализуют алгоритм построчного заполнения, описанный в разделе 5.
В данных процедурах все массивы используются, начиная с элемента с индексом 1, а не 0, как это принято в языке C.
В данном приложении приведены три процедуры заливки гранично-определенной области с затравкой.
Первая процедура - V_FAB4R реализует рекурсивный алгоритм заполнения для 4-х связной области соответствующий алгоритму, помещенному в [4].
Вторая процедура - V_FAB4 реализует итеративный алгоритм заполнения для 4-х связной области близкий к алгоритму, помещенному в [3].
Характерная особенность таких алгоритмов - очень большие затраты памяти под рабочий стек и многократное дублирование занесения пикселов. Характерные значения для размера стека (см. ниже определение константы MAX_STK) около десяти тысяч байт при размере порядка 70×70 пикселов и очень сильно зависят от размеров заливаемой области, ее конфигурации и выбора начальной точки. Так, например, для заливки квадрата со стороной, равной 65 дискретам, и старте заливки из точки (20,20) относительно угла квадрата требуется 7938 байт для стека.
Третья процедура - V_FAST реализует алгоритм построчного заполнения с затравкой гранично-определенной области, близкий к соответствующему алгоритму из [3]. Отличительная черта таких алгоритмов - большие объемы программного кода, небольшие затраты памяти под рабочий стек и практически отсутствующее дублирование занесения пикселов. Характерные значения для размера стека (см. ниже определение константы MAX_STK) около сотни байт.
[2] Ньюмен У., Спрулл Р. Основы интерактивной машинной графики. Пер. с англ. М.: Мир, 1976.
[3] Роджерс Д. Алгоритмические основы машинной графики. Пер. с англ. М.: Мир, 1989. 512 c.
[4] Фоли Дж., вэн Дэм А. Основы интерактивной машинной графики: В 2-х книгах. Пер. с англ. М.: Мир, 1985.
Добрый день,
довольно редко, но все же встает вопрос о необходимости в автоматическом режиме делить изображение на логические фрагменты. Если вы ограничены только средствами PHP, то задача становится немного трудней, но все же решаема.
В данной статье я рассмотрю частный случай распознавания образов, ориентированный на не слишком изощренную публику.
В статье используются примеры с одного из сайтов с явным указанием ссылки, сайт не мой, изначально не было мыслей писать статью.
Итак, рассмотрим исходные данные
Прямоугольные картинки разного размера и пропорций, с белым фоном, на которых изображены фигурки киндер сюрприза и water mark, который иногда касается фигурок. Задача — получить картинки фигурок без water mark'a
Изображения довольно простые, поэтому из всего спектра возможных вариантов (ссылки указаны в конце статьи) разумно применить метод разрастания областей. Его суть в том, что мы первоначально тыкаем в произвольную точку и сравниваем цвет соседних пикселей, в нашем случае критерий схожести — цвет не должен быть белым. Если цвет не белый, мы запоминаем координаты пикселя и сравниваем его соседей, таким образом наша область расползается, пока не будет достигнут край сегмента. Затем мы тыкаем в следующую точку и так далее. Всем понятно, что тыкать совершенно рандомно, это не самый оптимальный путь так как можно долго перебирать пустые пиксели. Этот способ называют еще метод выжженной земли.
Интерация 1. Выбор не белых областей
На этом шаге мы получаем высоту и ширину исходной картинки и в двойном цикле попиксельно считываем цвет. Все данные заносим в двойной массив, если пиксель белый ставим 0, если не белый, ставим единичку. Выводим данные на экран для наглядности и что бы проверить, не ошиблись ли мы.
В приведенном коде отбрасывается соседний пиксель если он близок к белому, так как на входе у нас jpg не самого лучшего качества.
Закрасим теперь полученные области на исходном изображении.
Как видно сейчас наш алгоритм цепляет кусочки мусора (поэтому в вышеприведенном коде и есть фильтрация по цвету)
Ошибочный подход, попытка выделения граничных областей сегментов
У каждого из сегментов можно определить его граничные точки, для границы сегмента с левой стороны это будут точки у которых нет цветного пикселя слева, аналогичным образом для верхней, нижней, правой границы.
Пробуем реализовать
Еще шлифуем, на следующей картинке уже более-менее приемлемый результат, хотя все еще захвачено много пикселей по ошибке
Теперь если мы закрасим все цветные точки внутри данных ограничений, то получим в результате картинку, на которой уже можно понять, что это смурфы)
Со стороны человеческого взгляда эти сегменты уже можно однозначно разделить, но со стороны нашего алгоритма это все еще массив единичек и ноликов, а так же массив ноликов и единиц – только границ сегментов (но сейчас это все еще 1 массив и основной вопрос в том, как разделить его в соответствии с сегментами).
На исходном изображении можно видеть явные белые пробелы между сегментами, попробуем разделить сегменты по принципу: «Если у нас есть большие разрывы (больше чем N) между закрашенными сегментами, то делим пиксели в основном массиве по левую и правую сторону от разрыва».
Далее таким же образом мы можем сделать горизонтальные разрывы, но их сделать сложнее из-за надписи по центру картинки.
Но на этом моменте я понял, что двигаюсь не в том направлении, поэтому закончил данные эксперименты.
Итак, возвращаемся к исходам – у нас есть большой массив единиц – цветные пиксели, как их разделить на сегменты?
Метод разрастания областей
Краткое описание дано выше (в начале статьи), поэтому приступим сразу к делу.
Поджигаем смурфа, ясно, что весь процесс идет через рекурсию, раскрасим блоки интераций в свои цвета.
С помощью данной функции массив с пикселями разбивается на множество подмассивов (многомерный массив). Каждый под массив соответствует одному сегментированному изображению. Далее, анализируя полученные подмассивы мы можем удалить самый широкий массив, который соответствует надписи.
Всем известный пример, я думаю все угадали персонажа.
Тем не менее, иногда алгоритм срабатывает неверно. Например в следующей картинке первая фигурка разделена на две из-за слишком белого предмета в руках персонажа. В таких случаях нужна либо более тонкая настройка по отсеиваемым цветам, либо ручная корректировка.
ПИКСЕЛЬНАЯ МАТРИЦА / ДЕФЕКТЫ ЦИФРОВОГО ИЗОБРАЖЕНИЯ / ПОДАВЛЕНИЕ ЦИФРОВОГО ШУМА / ОПЕРАЦИЯ ДВУМЕРНОЙ СВЕРТКИ / ШУМОФИЛЬТРАЦИЯ / ГРАНИЧНЫЕ ПИКСЕЛИ / ПОЛУТОНОВЫЕ ИЗОБРАЖЕНИЯ / PIXEL MATRIX / DIGITAL IMAGE DEFECTS / DIGITAL NOISE SUPPRESSION / 2D CONVOLUTION / NOISE FILTERING / BOUNDARY PIXELS / HALFTONE IMAGE
Текст научной работы на тему «АЛГОРИТМ ВЕСОВОГО ОПРЕДЕЛЕНИЯ ГРАНИЧНЫХ ПИКСЕЛЕЙ»
Д. В. ЗАЕРКО, В. А. ЛИПНИЦИКИЙ
АЛГОРИТМ ВЕСОВОГО ОПРЕДЕЛЕНИЯ ГРАНИЧНЫХ ПИКСЕЛЕЙ
Белорусский государственный университет информатики и радиоэлектроники,
Минск, Республика Беларусь
При работе с методами подавления цифрового шума, основанных на операций двумерной свертки, возникает необходимость обхода алгоритмами граничных пикселей в пиксельной матрице полутонового изображения. Проблема возникает в связи с особенностью самого алгоритма свертки, по которому происходит воздействие центра ядра матрицы свертки к элементу пиксельной матрицы. Данная особенность характерна для целого класса методов, использующих операцию двумерной свертки. Существует ряд примитивных способов ее решения, однако, ни один из этих способов не соблюдает консенсус между экономным использованием ресурсов и заполнением граничных пикселей кодом (числом бит на пиксел) полутона, наиболее близким по полутонам с соседними пикселями. Объект исследования в статье - пиксельная матрица полутонового изображения. Предмет изучения - алгоритмы заполнения граничных пикселей близким кодом полутона при воздействии ядра на пиксельную матрицу полутонового изображения. Основная цель - создание эффективного алгоритма заполнения граничных пикселей матрицы близкими по коду полутона с соседними для последующего использования этих граничных значений при выполнении двумерной свертки. Заполненные граничные пиксели позволят учесть в операции свертки все пиксели исходного полутонового изображения. Предлагается алгоритм заполнения проблемного граничного пикселя на этапе пошагового вычисления величины влияния центра ядра свертки на пиксел, при обращении к которому алгоритм свертки выходит за границы пиксельной матрицы оригинального полутонового изображения. Алгоритм учитывает «особые» случаи выхода за границы и позволяет при обращении к несуществующему элементу определить код полутона пикселя. Алгоритм прост для программирования и легко интегрируется с базовым алгоритмом работы двумерной свертки в методах подавления цифрового шума.
Ключевые слова: Пиксельная матрица, дефекты цифрового изображения, подавление цифрового шума, операция двумерной свертки, шумофильтрация, граничные пиксели, полутоновые изображения.
Пиксельная матрица, с точки зрения компьютерной обработки, является главным объектом изучения и содержит всю полноту информационных характеристик растрового изображения. Логично, что при обработке исходной пиксельной матрицы машина работает лишь с численными значениями и не имеет понятия об эффектах, критически важных для восприятия человеческим глазом: эффектах отсутствия четкости, цветовых дефектах, наличии цифрового шума и т.д. Все эти дефекты цифрового изображения должны быть устранены на этапе предварительной обработки. Данный этап предполагает получение на основе оригинала максимально точного и адаптированного для автоматического анализа изображения. От его выполнения существенно зависит сохранение или изменение полноты информационных характеристик анализируемого изображения.
Предварительная обработка изображения 2 для подавления цифрового шума, как основного побочного эффекта, возникающего при работе с фото-сенсорами и электронными устройствами, предполагает использование математических методов работы с матрицами линейного усреднения точек по соседям и т.д. Связующим звеном в этих методах, кроме использования пиксельной матрицы как объекта преобразования, является использование алгоритма двумерной свертки. Однако, использование данного алгоритма сопряжено с проблемой вычисления значений сверки на граничных пикселях матрицы растрового изображения [6]. Рассмотрим подробнее эту проблему и предложим метод ее решения.
Операция двумерной свертки, проблема граничных пикселей
В практике цифровой обработки изображений широко используется некаузальная
1. Создание изображения большего размера, чем исходное, у которого на краях будут заданы дополнительные значения пикселей. Дополнительные значения могут быть: равными 0, полученными с другой стороны изображения, продублированным крайним пикселем изображения, отраженными относительно границ, полученными экстраполяцией и т.д.
2. Создание промежуточного изображения. В центр изображения копируется входная картинка, а края заполняются крайними пикселями изображения. Размытие применяется
к промежуточному буферу, а потом из него извлекается результат.
Это лишь немногие методы решения возникшей проблемы. Учитывая все возрастающий интерес к визуальному распознаванию и коррекции растровых изображений, однозначно можно утверждать то, что число разнообразных фильтров на основе операции двумерной свертки будет лишь увеличиваться. В свою очередь, это приводит к поиску более эффективных способов решения проблемы граничных пикселей в алгоритме двумерной свертки. Применение различных методов для обработки одного и того же изображения предполагает неодинаковое использование вычислительных ресурсов. Основной же целью является улучшение качества обрабатываемого изображения. Это указывает на необходимость соблюдения консенсуса между экономией вычислительных ресурсов и улучшением обрабатываемого изображения. Алгоритм свертки, дополненный модификацией для корректной обработки граничных пикселей, не должен расточительно использовать ресурсы, но определять наиболее близко код полутона граничных пикселей относительно исходного изображения.
Весовой алгоритм определения кода полутона
для граничных пикселей полутонового изображения
На наш взгляд, наиболее эффективным здесь является следующий, альтернативный, весовой метод работы с кодами полутона граничных пикселей для алгоритма двумерной свертки, основные черты которого были впервые представлены в [10]. Модификация не предполагает создания промежуточного изображения, а лишь использования квадратной
подматрицы пикселей А + = пхп порядка
~ 2 « ' п, состоящей из п пикселей оригинальной
Очень важны диапазоны изменения индексов строк и столбцов г, у (далее так же k,р ) элементов пиксельной подматрицы. Диапазоны изменений будут существенно разниться, в зависимости от расположения стороны (левая, нижняя, правая, верхняя)
граничных пикселей относительно оригинальной пиксельной матрицы полутонового изображения А. Расположение и соответствующие ему диапазоны индексов будут
Далее указание изменения диапазонов строк и столбцов в описании формул будет опускаться, предполагая выбор его заранее, в зависимости от I = 0, h +1, I = 0, w +1.
Код полутона проблемного пикселя определяется, исходя из наиболее часто встречающихся кода полутонов среди других (2 пикселей а+! подматрицы АА и располагается в непосредственной близости от граничного пикселя.
Под близкими, имеется в виду 12 пикселей, являющихся смежными к граничному пикселю на глубину до t пикселей. Величина t определяется произвольно, исходя только из трех условий: четного значения, ограничений вычислительных возможностей системы и размера изображения, ограниченных меньшей
Модификация предполагает использование специальных весовых коэффициентов пикселей а, ■ для каждого пикселя, отвечающего за оценку «встречаемости» этого кода полутона среди других кодов полутонов t2 пикселей.
Итак, опишем основные этапы алгоритма, учитывая известные строку и столбец I = 0, h +1, I = 0, w +1 граничного пикселя, для которого необходимо провести вычисление.
1. Вычисление угловых точек. Особым случаем будет расчёт 4 «угловых» граничных пикселей относительно оригинального полутонового изображения, которые могут быть вычислены сразу же, и из-за их небольшого числа не будут играть существенную роль.
а0,0 = а1,1;ай+1,0 = ай,1; а0;п+1 = ;ай+^+1 = .
2. Подготовка весовых коэффициентов пикселей. Все весовые коэффициенты а, 3 для элементов а+3 принимают равные значения
определяться, исходя из заданных номеров строк и столбцов I = 0, h +1, I = 0, w +1 граничного элемента матрицы требующего вычисления по правилу:
а:: = . Значение t выбирается, исходя их
двух приведенных выше ограничений.
3. Вычисление результирующих весовых коэффициентов. Для вычисления результирующего весового коэффициента res(а, 3) для пикселя а+3 необходимо суммировать весовые коэффициенты ак р; для пикселей а+ при а+: = а+ . Иначе, оставить результирующий вес :) неизменным, то есть
а: , 3) = а к , р 1 а+3 = ак, р
Определение значения кода полутона граничного пикселя. Значения граничных пикселей определяется по оценке результирующих весовых коэффициентов, полученных на шаге 2.
Среди результирующих весовых коэффициентов res(аi 3) для пикселей а+3 находится коэффициент с максимальным значением. Если его значение не равно заданному значению на первом шаге: тах <га(а, 3)>^ —, то очевидно, что коэффициент характеризует пиксель а+з с наиболее часто повторяемым полутоном среди других t2 пикселей, и граничный пиксель примет его значение. Если максимальное значение не изменилось: 1 2 шах <ге5(а,- 3)>= то все t пиксели имеют
различные коды/ полутона или сформировались группы пикселей, равные по числу пикселей, но различные по коду полутона. В этом случае граничным пикселем будет первый ближайший смежный пиксель, то есть: а+ для левых граничных пикселей на изображении, а+у/ для правых, для верхних, а+ , для нижних. Представим вышесказанное в виде формул, подставляя вместо I = 0 ,h +1,1 = 0 , w +1 номер строки и столбца для пикселя, для которого необходимо провести вычисление.
3D-функции Photoshop будут удалены в будущих обновлениях. Пользователям, работающим с 3D-функциями, рекомендуется ознакомиться с новой коллекцией Adobe Substance 3D, которая представляет собой новое поколение 3D-инструментов от Adobe.
Дополнительную информацию о прекращении поддержки 3D-функций Photoshop можно найти здесь: Photoshop 3D | Распространенные вопросы об упраздненных 3D-функциях.
В некоторых фильтрах для применения предусмотренных в них эффектов загружаются и используются другие изображения: текстуры, схемы искривления и др. К этой категории относятся следующие фильтры: «Волшебный карандаш», «Смещение», «Стекло», «Эффекты освещения», «Пастель», «Текстуризатор», «Рисование на обороте» и «Заказной». Но не во всех этих фильтрах загрузка изображений или текстур осуществляется одинаково.
В диалоговом окне фильтра во всплывающем меню «Текстура» выберите «Загрузить текстуру», а затем найдите и откройте изображение, содержащее текстуру.
Все текстуры должны храниться в формате Photoshop. Большинство фильтров берут из файла только информацию, относящуюся к градациям серого.
Фильтры «Пастель», «Рисование на обороте», «Стекло», «Волшебный карандаш» и «Текстуризатор» позволяют задавать параметры текстурирования. В результате применения этих параметров создается изображение, которое выглядит так, как будто оно нарисовано на холсте или кирпичной кладке либо рассматривается сквозь стеклянный блок или стекло с морозным узором.
В меню «Фильтр» выберите «Имитация» > «Пастель», «Имитация» > «Рисование на обороте», «Искажение» > «Стекло», «Эскиз» > «Волшебный карандаш» или «Текстура» > «Текстуризатор».
Перетаскивая ползунок «Рельеф» (если он доступен), можно корректировать глубину поверхности текстуры.
Фильтры «Смещение», «Искривление» и «Волна» в подменю «Искажение» и фильтр «Сдвиг» в подменю «Другие» позволяют трактовать области как не определенные фильтром (или не защищенные фильтром) следующим образом.
Вставить отсеченные фрагменты
Заполняет неопределенное пространство содержимым, взятым с противоположного края изображения.
Повторить граничные пиксели
Распространяет цвета пикселов, находящихся вдоль края изображения, в указанном направлении. Применение этого параметра может привести к полошению, если граничные пикселы имеют разные цвета.
Заполнить фоновым цветом (только фильтр «Сдвиг»)
Заполняет выбранную область текущим фоновым цветом.
В случае необходимости измените коэффициент масштабирования в области просмотра, пока не станет видимой область, содержащая шум.
Передвиньте ползунок «Порог» влево до значения 0, чтобы отключить это значение и получить возможность исследовать все пикселы в выделенной области или изображении.
Значение параметра «Порог» определяет, насколько несхожими должны быть пикселы для того, чтобы они были удалены.
Ползунок «Порог» обеспечивает больший контроль для значений в диапазоне от 0 до 128 (наиболее широко применяемый диапазон для изображений), чем для значений от 128 до 255.
Передвигайте ползунок «Радиус» влево или вправо или введите в текстовом поле значение от 1 до 16 пикселов. Значение параметра «Радиус» определяет размер области, в которой осуществляется поиск пикселов с несходными характеристиками.
При увеличении радиуса изображение становится более размытым. Используйте наименьшее значение, при котором устраняются дефекты.
Увеличивайте порог постепенно, вводя все большее и большее значение или перетаскивая ползунок, пока не будет достигнуто максимально возможное значение, при котором устраняются дефекты.
Фильтр «Смещение» сдвигает выделенную область с использованием значения цвета из схемы искривления. Значение 0 определяет максимальный отрицательный сдвиг, значение 255 — максимальный положительный, а значение 128 (серый цвет) соответствует нулевому сдвигу. Если схема искривления содержит только один канал, то изображение сдвигается по диагонали, определяемой горизонтальным и вертикальным коэффициентами масштабирования. Если же схема искривления имеет больше одного канала, то первый канал управляет сдвигом по горизонтали, а второй — сдвигом по вертикали.
Фильтр создает схемы искривления с использованием сведенного файла, сохраненного в формате Adobe Photoshop. (Растровые изображения не поддерживаются.)
Если горизонтальный и вертикальный масштаб равны 100 %, то наибольший сдвиг составляет 128 пикселов (поскольку применение среднего значения, соответствующего серому цвету, соответствует отсутствию сдвига).
Если схема искривления имеет не тот же размер, что и выделенная область, то укажите, каким образом должно быть установлено соответствие между схемой и изображением: «Растянуть» (изменить размеры схемы) или «Мозаика» (заполнить выделенную область, повторяя схему в виде узора).
Выберите «Вставить отсеченные фрагменты» или «Повторить граничные пикселы», чтобы определить, каким образом должна проводиться обработка неискаженных областей изображения.
Рис. 9.3. Нахождение границ при помощи подавления немаксимумов. Вверху - карта максимальных пикселей. Внизу - результат после пороговой фильтрации максимальных пикселей.
Будучи двухмерным вектором, градиент яркости в каждой точке характеризуется длиной и направлением. До сих пор при поиске граничных точек мы использовали только длину вектора. Проблемы, которые при этом возникли, а именно неопределенность порога и утолщение линий, можно во многом решить, опираясь на направление градиента.
Направление градиента есть направление максимального возрастания функции. На этом основана процедура подавления немаксимумов. При этой процедуре для каждой точки рассматривается отрезок длиной в несколько пикселей, ориентированный по направлению градиента и с центром в рассматриваемом пикселе. Пиксель считается максимальным тогда и только тогда, когда длина градиента в нем максимальна среди всех длин градиентов пикселей отрезка. Граничными можно признать все максимальные пиксели с длинами градиента больше некоего порога (рис. 9.3).
Градиент яркости в каждой точке перпендикулярен границе, поэтому после подавления немаксимумов жирных линий не остается: на каждом перпендикулярном сечении жирной линии останется один пиксель с максимальной длиной градиента.
Перпендикулярность градиента яркости к границе может быть использована для прослеживания границы, начиная с некоторого граничного пикселя. Такое прослеживание используется в гистерезисной фильтрации максимальных пикселей. При проведении гистерезисной фильтрации вводят не одно, а два пороговых значения. Меньшее (), как и раньше, соответствует минимальной длине градиента, при которой пиксель может быть признан граничным. Большее (), соответствует минимальной длине градиента, при которой пиксель может инициализировать контур. После того как контур инициализируется в максимальном пикселе P с длиной градиента, большей , рассматриваются каждый соседний с ним максимальный пиксель Q . Если пиксель Q имеет длину градиента, большую , и угол между векторами - " />
и близок к " />
, то Q добавляется к контуру, и процесс рекурсивно переходит к Q . Идея гистерезисной фильтрации заключается в том, что длинный устойчивый граничный контур, скорее всего, содержит в себе пиксели с особенно большим перепадом яркости, и, начиная с такого пикселя, контур можно проследить, переходя по граничным пикселям с меньшим перепадом яркости.
Таким образом, описаный нами алгоритм нахождения границ на основе градиента заключается в последовательном применении следующих операций:
- гауссовская сглаживающая фильтрация;
- нахождение градиента яркости в каждом пикселе;
- нахождение максимальных пикселей;
- гистерезисная фильтрация максимальных пикселей.
Этот алгоритм носит названия алгоритма Кэнни (Canny) [18]. Его результат показан на рис. 9.4. Алгоритм Кэнни является наиболее часто применяемым на сегодняшний день алгоритмом нахождения границ.
Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Заерко Д. В., Липницкий В. А.
WEIGHTED DETERMINATION ALGORITM OF BOUNDARY PIXELS
While working with digital noise reduction techniques, which are based on theory of convolution matrix and used convolution operation, it necessary to use algorithms to bypass boundary pixels in the image pixel matrix . The problem exists because convolution itself algorithm have peculiarity, it mean that peculiarity convolution kernel used to each element of pixel matrix . That feature characterize a lot of classes of methods which used idea of convolution matrix. There are a lot of primitive ways to solve it, but none of these ways made a consensus between economical use of resources and filling border pixels with colour coding, which is not so far from colours of corresponding pixels. The object of research is pixel matrix of image. The subject of study is algorithms for filling boundary pixels when superimposing a convolution matrix on a pixel matrix of an image. The main target is creating of effective filled algorithm for border pixels which are close to code colour to relation pixels for used in convolution matrix. Filled border pixels will use to operation convolution for each pixels original image. Algorithm of filled border pixels by step of applied convolution kernel anchors to the pixel, when pixel accessing in convolution algorithm goes beyond the pixel matrix of the original image. Algorithm takes into account the «special» cases of overstepping and allows to do fast calculation to determine the colour code of the missing pixel. The algorithm is simple to program and easily integrates with the basic convolution matrix algorithm in digital image defects .
Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Заерко Д. В., Липницкий В. А.
При работе с методами подавления цифрового шума , основанных на операций двумерной свертки , возникает необходимость обхода алгоритмами граничных пикселей в пиксельной матрице полутонового изображения . Проблема возникает в связи с особенностью самого алгоритма свертки, по которому происходит воздействие центра ядра матрицы свертки к элементу пиксельной матрицы . Данная особенность характерна для целого класса методов, использующих операцию двумерной свертки . Существует ряд примитивных способов ее решения, однако, ни один из этих способов не соблюдает консенсус между экономным использованием ресурсов и заполнением граничных пикселей кодом (числом бит на пиксел) полутона, наиболее близким по полутонам с соседними пикселями. Объект исследования в статье - пиксельная матрица полутонового изображения . Предмет изучения - алгоритмы заполнения граничных пикселей близким кодом полутона при воздействии ядра на пиксельную матрицу полутонового изображения . Основная цель - создание эффективного алгоритма заполнения граничных пикселей матрицы близкими по коду полутона с соседними для последующего использования этих граничных значений при выполнении двумерной свертки. Заполненные граничные пиксели позволят учесть в операции свертки все пиксели исходного полутонового изображения . Предлагается алгоритм заполнения проблемного граничного пикселя на этапе пошагового вычисления величины влияния центра ядра свертки на пиксел, при обращении к которому алгоритм свертки выходит за границы пиксельной матрицы оригинального полутонового изображения . Алгоритм учитывает «особые» случаи выхода за границы и позволяет при обращении к несуществующему элементу определить код полутона пикселя. Алгоритм прост для программирования и легко интегрируется с базовым
Читайте также:
- Где в ярославле компьютерный клуб
- Какое из устройств внутренней памяти компьютера хранит информацию когда компьютер выключен
- Опель корса схема звукового сигнала
- Fedora выбор файловой системы
- Отсутствуют элементы hash в файле release