Обнаружение краев

Следующая операция, выполняемая на первом этапе обработки изображения, состоит в обнаружении краев на плоскости изображения. Краями называются прямые или кривые линии на плоскости изображения, которые служат "водоразделом" для существенных изменений в яркости изображения. Целью обнаружения краев является повышение уровня абстракции и переход от перегруженного подробностями мультимегабайтового изображения к более компактному, абстрактному представлению, как показано на рис. 24.4. Необходимость в выполнении такой операции обусловлена тем, что линии краев на изображении соответствуют важным контурам в сцене. На этом рисунке приведены три примера изображений, на которых отмечены так называемые сосредоточенные неоднородности: сосредоточенная неоднородность по глубине, обозначенная меткой 1; сосредоточенные неоднородности по ориентации двух поверхностей, обозначенные меткой 2; сосредоточенная неоднородность по коэффициенту отражения, обозначенная меткой 3; сосредоточенная неоднородность по освещенности (тень), обозначенная меткой 4. Результаты операции обнаружения краев относятся только к данному конкретному изображению и поэтому не содержат данных, позволяющих распознать эти различные типы сосредоточенных неоднородностей в сцене, но такая задача может быть решена в ходе дальнейшей обработки.
На рис. 24.5, а приведено изображение сцены, на котором показан степлер, находящийся на столе, а на рис. 24.5, б приведены результаты применения алгоритма обнаружения краев к этому изображению. Вполне очевидно, что эти результаты весьма отличаются от идеального контурного рисунка. Небольшие края, соответствующие деталям изображения, не всегда выровнены друг с другом; на некоторых участках, где эти края обрываются, имеются пропуски, кроме того, есть и края, появившиеся под воздействием шума, которые не соответствуют каким-либо значимым деталям в этой сцене. Все указанные ошибки должны быть исправлены на последующих этапах обработки. Теперь перейдем к описанию того, как происходит обнаружение краев на изображении. Рассмотрим профиль яркости изображения вдоль одномерного поперечного разреза, перпендикулярного к некоторому краю (например, между левым стороной стола и стеной). Он выглядит примерно так, как показано на рис. 24.6, а. Местонахождение края соответствует значению х=50.
Поскольку края соответствуют тем участкам изображения, где яркость подвергается резким изменениям, то на первый взгляд может показаться, что достаточно дифференцировать изображение и найти такие места, где производная х1 (х) принимает большое значение. И действительно, такой подход в определенной степени осуществим. Тем не менее, как показано на рис. 24.6, б, кроме основного пикового значения с координатой х=50, обнаруживаются также дополнительные пиковые значения в других местах (например, с координатой х=7 5), которые могут быть ошибочно приняты за настоящие края. Эти дополнительные пиковые значения возникают из-за наличия шума в изображении. Если вначале будет проведено сглаживание изображения, то количество фиктивных пиков уменьшится, как показано на рис. 24.6, в.
Теперь у нас появляется возможность применить на данном этапе определенную оптимизацию, поскольку операции сглаживания и поиска краев можно объединить в одну операцию. Существует теорема, согласно которой для любых функций f ид производная свертки, (f*g) 1, равна свертке с производной, f* (g) 1. Поэтому вместо сглаживания изображения с последующим дифференцированием можно просто выполнить свертку изображения с производной гауссовой функцией сглаживания,
Ga'. Таким образом, алгоритм поиска края в одном измерении может быть представлен следующим образом.
1. Выполнить свертку изображения I с функцией GG] для получения результатов свертки R.
2. Обозначить как края те пиковые значения в | | R (х) | |, которые превышают некоторое заранее заданное пороговое значение т. Это пороговое значение выбирается таким образом, чтобы можно было устранить фиктивные пиковые значения, возникшие под воздействием шума.
В двух измерениях края могут проходить под любым углом G. Для обнаружения вертикальных краев можно применить такую очевидную стратегию: выполнить свертку с Ga 1 (х) Ga (у). В направлении у эффект этой операции сведется к тому, что будет выполнено только сглаживание (под воздействием гауссовой свертки), а в направлении х результатом операции станет то, что дифференцирование будет сопровождаться сглаживанием. Поэтому алгоритм обнаружения вертикальных краев состоит в следующем.
1. Выполнить свертку изображения 1(х,у) с функцией fv(x,y) =GCT' (х) GCT (у) для получения результатов свертки Rv (х, у).
2. Обозначить как края те пиковые значения в | \R4{x,y) \ |, которые превышают некоторое заранее заданное пороговое значение т.
Для того чтобы обнаружить какой-либо край, имеющий произвольную ориентацию, необходимо выполнить свертку изображения с двумя фильтрами, fv=GCT' (х) Ga (у) и fн=GJст, (у) Ga (х), где функция fH соответствует функции fv, график которой повернут на 90°. Таким образом, алгоритм обнаружения краев, имеющих произвольную ориентацию, состоит в следующем.
1. Выполнить свертку изображения 1(х,у) с функциями fv(x,y) и fH(x,y) для получения соответственно результатов свертки Rv(x,y) и дн(х,у). Определить R(x,y) =RV2 (х, у) +RH2 (х, у).
2. Обозначить как края те пиковые значения в | \R{x,y) | |, которые превышают некоторое заранее заданное пороговое значение т.
После того как с помощью этого алгоритма будут отмечены пикселы краев, на следующем этапе необходимо связать друг с другом те пикселы, которые принадлежат к одним и тем же кривым краев. Такую операцию можно выполнить, приняв предположение, что любые два соседних пиксела, которые являются пикселами края с совместимыми ориентациями, должны принадлежать к одной и той же кривой края. Описанный выше процесс получил название процесса обнаружения края Кэнни в честь его разработчика Джона Кэнни (John Canny).
Края после их обнаружения становятся основой для многих этапов последующей обработки: их можно использовать для выполнения стереооптической обработки, обнаружения движения или распознавания объектов.







Материалы

Яндекс.Метрика