Гонсалес Р., Вудс Р., Эддинс С. Цифровая обработка изображений в среде Matlab (2006) (1246139), страница 70
Текст из файла (страница 70)
Заметим, что пороговый тест выполнен с помощью операции >= для совместимости обозначений. Поскольку в данном случае порог Т является максимальным значением я, нет точек из я, значение яркости которых больше, чем Т. Из рис. 10.2, б) видно, что имеется ровно одна точка, которая удовлетворяет условию я >= Т, где Т равно швх(иО ) ) . С Другой подход к обнаружению точек заключается в поиске точек во всех окрестностях т хи, для которых разность максимального и минимального значения превосходит некоторую заданную величину Т. Такой подход можно реализовать с помощью функции огбТ11С2, введенной в 3 3.5.2: » я = 1ивцЬСгасС(огбТ11С2И, вгдп, опеэ(ш, и)), огбТ11с2(Т, 1, спев(ш, и))); » й=й>=Т; Легко проверить что выбор Т = шах(я(: ) ) приводит к тому же результату, что и на рис.
10.2, б). Предложенное решение является более гибким, чем использование маски из рис. 10.1. Пусть, к примеру, мы хотим вычислить разность между самой большой величиной пиксела и следующей за ней по порядку. Для этого достаточно заменить 1 в правой части выражения на ш*п — 1. Другие вариации на эту тему можно сформулировать аналогичным образом. 10.1.2.
Обнаружение линий Следующий уровень сложности заключается в обнаружении линий. Рассмотрим маски на рис. 10.3. Если первую маску перемещать по изображению, то наибольший отклик будет наблюдаться на горизонтальных линиях толщиной в один пиксел. Причем, если яркость фона одинакова, то отклик будет максимальным, когда линия проходит горизонтально через центр маски. Аналогично, вторая маска на рис. 10.3 даст наибольший отклик на линиях, имеющих наклон +45', третья маска — на вертикальных линиях, а четвертая — на линиях, имеющих наклон — 45', Эти направления выделены на масках коэффициентами с наибольшим весом (в данном случае, равным 2). Сумма коэффициентов каждой маски равна нулю, что дает нулевой отклик на областях постоянной яркости.
Обозначим через Вм 11ш 11э и Н4 отклики масок, показанных на рис. 10.3 (слева направо), причем формулы для )гд аншюгичны формуле для вычисления 11 в параграфе 3 10.1. Пусть изображение обрабатывается независимо каждой маской. Если для некоторой точки изображения ()г,( > ~В,~ при всех 1 ф г, то эта точка, по-видимому, лежит на линии, которое имеет направление маски 1. Например, если в какой-то точке ~В~( > ~Вд~ для ~' = 2, 3, 4, то эта точка, скорее всего, принадлежит горизонтальной линии.
Альтернативная задача заключается в поиске линий, идущих в заданном направлении. В этом случае можно обработать все изображение соответствующей маской, применяя пороговое преобразование, как это делалось в предыдущем параграфе. Другими словами, если необходимо обна- ~400 с О. с бр ружить все линии на изображении, идущие в заданном направлении, достаточно пройтись этой маской по всему изображению, сравнивая абсолютные значения откликов с заданным порогом. Выделенные таким способом точки, отвечающие наибольшим откликам, будут ближе всего примыкать к линиям (толщиной в один пиксел), направление которых задано выбранной маской. Следующий пример иллюстрирует эту процедуру. Вертикппьипя -45' Горитоитппьияп Рис. 10.3.
Маски Лля обнаружения линиЯ Пример 10.2. Обнаружение линий заданного направления. На рис. 10.4, а) дано двоичное изображение шаблона для изготовления выводов кристаллов интегральных микросхем. Это изображение имеет размеры 486х486 пикселов. Предположим, что требуется найти все линии, имеющие толщину в один пиксел и идущие под углом — 45'. Для этого мы воспользуемся последней маской из рис.
10.3. Рис. 10.4 с б) по е) построены при выполнении следующих команд применительно к изображению Х на рис. 10.4, а): » и = [2 -1 -1 ; -1 2 -1; -1 -1 23; » я = 1шг11Сег(с(опЬ1е(г), и); » 1шв)тои(8, [ 3) % рис. 10.4, б) » 8Сор = 8(1:120, 1:120); » 8СоР = Р1хе16пР(8СоР, 4); » 118пге, 1швйои(8СоР, [ 3) % Рис.
10.4, в) » 8ЬоС = 8(епс(-119:епс(, еш1-119:еш1); » 8ЬоС = Р[хе16пР(8ЬоС, 4); » 118пге, 1швпои(8ЬоС, [ 3) % рис. 10.4, г) » 8 = аЬв (8); » 118иге, Сшваои(8, [ 3) % рис. 10.4, д) » Т = шах(8(:)); » 8=8>=Т; » 118пге, 1шв)тои(8) % рис. 10.4, е) Точки, более темные, чем общий серый фон на рис. 10.4, б), соответствуют отрицательным значениям. Имеется два сегмента, ориентированные под углом — 45', один -- вверх слева, а другой — внизу справа. ]На рис. 10.4, в) и г), показаны увеличенные участки окрестностей этих двух сегментов].
Отметим, что прямой участок на рис. 10.4, г) существенно ярче, чем сегмент на рис. 10.4, в). Причина !.~ ~)6~ ~р,» ~ ~~ ~:~ ~~., ги~ гп ~ пар~и пЬ,, 40~~~~ ~~~ — ~ / ик э~ ин'~~ я в ~< м, ч~~ пианин п~ня~ьп~ < ~ ~я нт ж~ рис 1И 1, п~ и. и ~т ~~~ппиы (402 Г 1О. С б самыми важными при обнаружении значимых разрывов яркости на изображении. При поиске таких перепадов используются производные первого и второго порядка. Первые производные уже применялись при обработке изображений градиентом в э 6.6.1. Мы напомним соответствующие уравнения для удобства читателя. Градиентом двумерной функции 7"(х, у) называется вектор ~71= * = з7 Модуль вектора градиента равен 2 2 172 177" = шай(~71') = [С + С„) 7 = — + Для упрощения вычислений эту функцию иногда приближают следующей формулой: 7У вЂ” [С [+ [С„[.
Эта величина ведет себя примерно как производные, т.е. она равна нулю в областях с постоянной яркостью и ее амплитуда пропорциональна скорости изменения яркости там, где яркость пикселов непостоянна. Часто на практике эту приближенную величину называют «градиентом», что не вполне строго. Основное свойство вектора градиента заключается в том, что он указывает в сторону максимального роста изменения функции 7 в точке (х, у). Угол наклона этого вектора равен а(х,у) = агсгй [ †) . / С„'1 ( С*) Важно уметь приближать производные С и Сэ численно. Различные подходы приближения производных, заложенные в функцию еабе, обсуждаются далее в этом параграфе. Вторые производные при обработке изображений работают при вычислении оператора Лапласа, который вводился в Э 3.5.1.
Напомним, что лапласиан двумерной функции Дх, у) равен д27'(х, у) д27" (х, у) Сам лапласиан довольно редко используется при обнаружении перепадов, так как он слишком чувствителен к шуму, кроме того, его амплитуда порождает сдвоенные перепады, что не позволяет точно установить истинное направление перепада яркости.
Однако он является весьма полезным инструментом в сочетании с другими приемами обнаружения перепадов, что будет видно из дальнейшего изложения. Например, несмотря на наличие сдвоенных перепадов, которые не дают прямо обнаружить соответствующий край, это свойство можно использовать при локализации перепада. После этого краткого напоминания отметим, что основная идея обнаружения перепадов базируется на поиске мест изображения, где яркость меняется быстро, с помощью следующих двух общих критериев: 1. Найти места, где первая производная яркости превосходит по модулю некоторый заранее заданный порог. 2.
Найти места, где вторые производные яркости имеют пересечения нулевого уровня. Функция 1РТ ес)ке реализует несколько оценок производных для использования в приведенных выше критериях. Для некоторых из этих оценок имеется возможность указать, к каким именно перепадам чувствительна данная оценка: к горизонтальным, вертикальным или к перепадам обоих типов. Общий синтаксис этой функции выглядит следующим образом: (б, с) = едбе(1, 'шесЬог)', рагашесетв), Таблица 10.1. Детекторы краев, доступные в функции аббе Детектор краев Основные свойства Обнаруживает края с помощью приближений Собела первых про- изводных, заданных на рис. 10.5, б).
Обнаруживает края с помощью приближений Превитга первых производных, заданных на рис. 10.5, е). Обнаруживает края с помощью приближений Робертса первых производных, заданных на рис. 10.5, г). Обнаруживает края, выполняя поиск пересечений нулевого уров- ня после фильтрации )(х, у) гаусснаном. Обнаруживает края, выполняя поиск пересечений нулевого уровня после фильтрации Дх, у) фильтром, заданным пользова- телем. Собела Превитга Робертса Лапласиан гауссиана Пересечения нулевого уровня Обнаруживает края, выполняя поиск яокальных максимумов градиента )(х, у). Градиент вычисляется от гауссиана. Метал использует два порога для нахождения сильных и слабых краев.
Слабые края включаются в выход, если онн связаны с сильными. Следовательно, этот метод с большей вероятностью обнаруживает настоящие слабые края. Канин Денгекнгор Собела Детектор Собела для обнаружения перепадов использует маски из рис. 10.5, б) для численного приближения производных С и С„.
Другими словами, градиент в центральной точке окрестности вычисляется по формуле ]С2 + С2]1)2 2 211)г ](гт + 225 + гэ) — (21 + 2гг + гз)] + ((гз + 225 + зэ) — (21 + 224 + гт)] ) где й — это входное изображение,шесЬос) — одна из оценок, перечисленных в табл. 10.1, а ратвшесетв — дополнительные параметры, которые объясняются ниже. Выходом функции служит логический массив я, в котором стоят единицы там, где обнаружены точки перепада на й, и нули там, где перепады не обнаружены. Аргумент с является необязательным, в него записывается значение порога, которое функция ес)яе использовала для сравнения с градиентами точек изображения.
~~~404 Глава 20. Сегментпацил изобразтсений Мы скажем, что пиксел с координатами (л, у) является пнкселом перепада, если для него д > Т, где Т -- это выбранный порог. Рис. 10.б. Некоторые маски детекто- ров и реализуЕмые ими формулы при- ближении длв первых производных а) Окрестностные маски детекторов б) Детектор Собела С,. = (гз .~- 22„+ ея). би + 222+ гт) С„= (гт + 22я+ гя) (2! ~ 222+ гт) в) Детектор Превнтта С„= ("т ге гя) (21 '~ 24 + 27) С, =- (гт е 2„+:„)— (22 Е 2+ 3) г) Детектор Робертса Ст = гя — 26 Ся = гт — гт Из материалов з 3.5.1 известно, что обнаружение края методом Собела можно реализовать фильтрацией изображения Х (используя функцию тшХ11бег) левой маской на рис. 10.5, 6), затем фильтрацией Х правой маской, после чего следует возвести результаты фильтраций в квадрат, все сложить и извлечь квадратный корень из полученной суммы. Аналогичный комментарий можно составить для второй и третьей записи в табл. 10.1.
Функция ес(ке всего литпь объединяет описанные операции для их выполнения одним вызовом, а кроме того, добавляет ряд дополнительных возможностей, а именно: задание порога или его автоматическое определение самой функцией. Кроме того, функция ес)ие имеет некоторые технические особенности, которые не реализованы в функции бшб11сег. Детектор Собела вызывается командой [б, С) = еда[1, 'воЬе1', Т, 41т), где й — это входное изображение, Т вЂ” заданный порог, а переменная Жг обозначает предпочтительное направление для обнаружения края, которая имеет следующие значения: 'Ьог1яопеа1', 'чегС1са1',или 'ЬоСЬ' (принято по умолчанию).