Гонсалес Р., Вудс Р., Эддинс С. Цифровая обработка изображений в среде Matlab (2006) (1246139), страница 67
Текст из файла (страница 67)
2. Каждый пиксел переднего плана, имеющий ноль, один или не менее четырех соседей, «умирает» в следующем поколении (т.е. становится фоновым пикселом) по причине его «изоляции» или «перенаселенности». 3. Каждый фоновый пиксел, у которого имеется ровно три соседних пиксела переднего плана, «рождает» пиксел, т. е. он становится пикселом переднего плана.
гСм. 1 3.4.2, где обсуждается манипулятор функции й. 'д372 с с.м Ф б б . б фг Рис. 9.14. а) Изображение морфолосическосо сктоаа. б) Выход функции епароупее Пикселы »того изображения увеличены дли лучшей наслндности Для реализации игры «жизнь» с помощью функций ша)се1пг и арр1у1пс мы сначала напишем функцию, которая применяет генетические законы Конвея к выделенному пикселу и его 3 х3 соседям: Хппсс1оп опт = сопиау1аив(пйооб) %СОМНАУЬАУЯ Арр11ев Сопиау'в яепег1с 1аиз Со а в1пя1е РАхе1.
% ООТ = СОММАУЕАНВ(ННООО) арр11ев Сопиау'з Неоегас 1аиз го % рахе1 апс( 1хв 3-Ьу-3 пе1яЬЬогйооб, ННООО. пшп пе1вЬЬогв = впш(пЬооб(:)) ппоос((2, 2); 11 пЬоос((2, 2) == 1 1Х ппш пе1яЬЬогз (= 1 опт = О; % Р1хе1 с(1ез антош 1зо1ас1оп. е1ве11 пнш пе1яЬЬогв > = 4 опт = 0; % Р1хе1 41ез 1гош оиегрори1асаоп.
е1зе опт = 1; % Р1хе1 вигу1уез. е пес е1зе 11 шпп пе1вЬЬогв == 3 оцс = 1; % В1гсЬ р1хе1. е1зе опт = О; % РАхе1 геша1пв ешрсу. еш1 еш1 а з1пя1е Все «рождсния» и все «смерти» происходят одновременно в процессе вычисления следующего двоичного изображения, определяя очередное поколение «организмов». а 37~3 Затем строится поисковая таблица вызовом функции ша)ге1ис с манипулятором функции сопяау1аяв в качестве аргумента: » 1пв = ша)ге1ив(йсопиау1аяв, 3); Множество исходных изображений было придумано для демонстрации различных эффектов, возникающих в поколениях «организмов», подчиняющихся законам эволюции Конвея (см.
~Сагдпег, 1970, 1971~). Рассмотрим, к примеру, начальное изображение, которое называется «конфигурацией чеширского кота»: » Ья1 = ~0 0 0 0 0 0 0 0 0 0 0000000000 0001001000 0001111000 0010000100 0010110100 0010000100 0001111000 0000000000 0 0 0 0 0 0 0 0 0 0); Следующие команды совершают вычисления и показывают три поколения этого изображения: » 1швйоя(Ья1, 'и'), С1С1е('Сепегатйоп 1') » Ья2 = арр1у1пс(Ья1, 1ис); » 11япге, 1швЬоя(Ья2, 'и'); сйс1е('Сепегасйоп 2') » ЬиЗ = арр1у1ис(Ья2, 1пс); » 11яиге, 1швЬоя(ЬяЗ, 'и'); с1с1е('Сепегас1оп 3') Мы оставляем читателям проверить, что после нескольких генераций от кота остается одна улыбка, которая завершается отпечатком кошачьей лапки.
Б 9.3.4. Функция Ьяшогр)т функция ЬяшогрЬ из пакета )РТ выполняет ряд полезных действий, построенных на основе операций дилатации, эрозии, а также с использованием поисковых таблиц. Она имеет следующую синтаксическую форму вызова: я = ЬяшотрЬ(т, орегат1оп, и), где Х вЂ” это входное двоичное изображение, орегас1оп — символьная строка, задающая конкретную операцию, а и обозначает, сколько раз необходимо выполнить эту операцию, Входной аргумент в не является обязательным.
При его отсутствии операция выполняется только один раз. В табл. 9.3 перечислены все допустимые операции функции Ь»евогрЬ. В оставшейся части этого параграфа мы сконцентрируем наше внимание на двух действиях, а именно: на утончении и построении остова. ~ЗМ б б.кбб б б б Таблица 9.3. Операции, поддерживаемые функцией ЬявогрЬ Операция Описание Совершает операцию «дно псляпы» с использованием структурообразующего элемента Зхз.
Для других элементов применять 1вьосЬас (см. 4 9.6.2). Соединяет пикселы, разделенные промежутком в один пиксел. Удаляет изолированные пикселы переднего плана. Замыкает с использованием элемента 3 х 3. Для других структурообразующих элементов применять операцию 1яс1ояе. Делает заполнение вокруг диагонально связанных пикселов переднего плана.
Совершает дилатацию с использованием элемента 3х3. Для других структу- рообразуюших элементов применять операцию 1в411асе. Выполняет эрозию с использованием элемента Зхз. Для других структуро- образующих элементов применять операцию 1вегоае. Заполняет однопиксельные «дырки» (фоновые пикселы, окруженные со всех сторон пикселами переднего плана), Удаляет Н-связанные пикселы переднего плана. Делает пиксел р пикселом переднего плана, если не менее 3 пикселов в Ма(р) (см.
3 9.4) являются пикселами переднего плана; в противном случае делает пиксел р фоновым. Размыкает с использованием элемента ЗхЗ. Для других структурообразую- ших элементов применять операцию 1вореп. Удаляет «внутренние* пикселы (пикселы переднего плана, у которых нет ни одного фонового соседа). Сжимает объекты без внутренних дыр в точки. Сжимает объекты с дырами в кольца. Строит остов изображения.
Удаляет отростки пикселов. Утолщает объекты без соединения несвязных частей. Утончеет объекты без дыр до минимальной средней линии. Утончает объек- ты с дырами до колец. Совершает операцию «верх шляпы» с использованием структурообразуюше- го элемента 3хз.
Для других элементов применять 1всорЬас (см. $ 9.б.2). ЬосЬас Ьгспйе с1еап с1оее 61ай 611асе егойе Ьвгее1с ваэог1су орел гебаоее а1се 1 ярпг ты с1сеп сьсп сорЬас » 1 = 1шгеас((»11пиегрг1пг с1еапес(.С11»); » и1 = Ьншогрь(1, 'ГЬ1п', 1); » я2 = Ьншогрь(1, »СЬ1пб, 2); » 1иаьон(я1), 11йцге, 1швьон(я2) На рис. 9.15, а) и б), приведены соответствующие утонченные изображения. Имеется важный вопрос: сколько раз следует применять эту операцию? Ддя ряда действий, включая утончение, функция ЬспвогрЬ допускает для ц значение 1Ы Операция птончение сокращает двоичные объекты или формы изображения до отдельных линий, которые имеют толщину всего н один пиксел.
Например, попилярные линии на отпечатках пальцев, показанные на рис. 9.22, в), являются слишком толстыми. При анализе этих линий может потребоваться их утончение вплоть до толщины в один пиксел. Каждое применение соответствующей операции утончения из Ьншогрь удаляет один или два пиксела из толщины объектов двоичного изображения. Например, следующие команды демонстрируют результат применения операции утончения один и два раза. ( 376 Глава У. Морфологическал обработка изображений Рис.
9.16, а) Изображение в виде кости. б) Остов, полученный с поыощью функции Ьчвосрь. в) Окончательный остов после выполнения операции усечеиия функцией епароупьа 4у.4. Выделение компонент связности До этого момента все обсуждавшиеся операции применялись индивидуально к пикселам переднего (или заднего) плана или к их ближайшим соседям. В этом параграфе рассматриваются важные операции «среднего планаь, которые занимают промежуточное положение между обработкой отдельных пикселов и действиями над всеми пикселами переднего плана. Это приводит к понятию компонент связности, которые мы будет также.
называть обвектами. Если предложить сосчитать объекты на рис. 9.17. а), то болыпинство людей скажет, что их там десять; шесть букв и четыре геометрические фигуры. На рис. 9.17, б) дан увеличенный прямоугольный фрагмент этого изображения. Какое отношение имеют 1б пикселов переднего плана на этом рисунке к десяти выделенным объектам7 Несмотря на то, что они разделены на две группы, все эти 16 пикселов принадлежат букве еЕь на рис. 9.17, а). Чтобы написать компьютерную программу, которая обнаруживает объекты и оперирует с ними, нам необходимо более точно определить ключевые понятия.
Никсел р с координатами (х, у) имеет два горизонтальных и два вертикальных соседа с координатами (х+1,у). (х — 1, у), (х. у 4-1) и (х. у — 1). Эта четверка соседей р обозначается )че(р). Она выделена на рис. 9.18, а) серым цветом. Четыре диагональных соседа р имеют координаты (х+ 1, у+ 1), (х+ 1, у — 1), (х — 1, у+ 1) и (х — 1, у — 1). На рис. 9.18, б) изображены эти диагональные соседи: эта четверка обозначается )чр(р). Объединение )чл(р) и зчзз (р) на рис. 9.18, в) определяет восьмерку соседей пиксела р. которая обозначается 7ча(р). Рис.
9.17. а) Изображение, содержащее 10 обьектов. б) Подмножество пикселов изображения Рис. 9,18. а) Пиксел р и его четверка соседей Ха(р). 6) Пиксел р и его диагональные ссюеди )ггпу). е) Пиксел р и его восьмерка соседей Хв(р). г) Пикселы р и д являются 4-смежными и 8-смежными. д) Пикселы р и д являются 8-смежными, но не 4-смежными. е) Затемненные пикселы являются одновременно 4-связными и 8- связными. ж) Затемненные пнкселы являются 8-связными, но не 4-сняз- б) е) р г) Р 4 е) ными Два пиксела р и е называются 4-смезюными, если г) е )ьг4(р).
Аналогично, пикселы р и е называются В-слгезюными, если ц Е Агв(р). Рис. 9.18, з) и д), иллюстрируют эти понятия. Пупгем между пикселами рг и р„называется последовательность пикселов рп рз,..., р„ы р„, такая, что рь является смежным для рва г при й = 1, 2,..., п — 1. Путь может быть 4-сеязнылг или 8-связным, в зависимости от используемого определения смежности пикселов.
Функция Ья1аЬе1 из 1РТ находит все компоненты связности двоичного изображения. Форма ее вызова имеет вид П., пиш) = Ьи1аЬе1И, сопл), где 1 — это входное двоичное изображение, а параметр сопл обозначает желаемую связность [по 4- или 8-смежности). Выход 1. называется размечающей матрицей, а в (необязательный) выходной параметр пиш записывается общее число обнаруженных компонент связности. Если параметр сопл опущен, то он по умолчанию считается равным 8. На рис.
9.19, в) показана размечающая матрица, отвечающая рис. 9.19, а) и вычисленная командой Ьи1аЬе1И, 4). Пикселам каждой отдельной компоненты связности присваивается одинаковое число от 1 и до общего числа компонент связности. Другими словами, пикселы, помеченные 1, принадлежат первой компоненте связности, пнкселы, помеченные 2,-- второй компоненте, и т.д. Фоновые пикселы помечены О. На рис. 9.19, г) показана размечающая матрица, соответствующая рис.
9.19, а), которая построена командой Ья1аЬе1(1, 8). Пример 9.7. Нахоокдение центров масс компонента связности. В этом примере показано, как можно найти центр масс каждой компоненты связности рис. 9.17, а). Прежде всего, мы воспользуемся функцией Ьи1аЬе1 для вычисления 8-связных компонент: » Х = 1шгеа«1('оЬ)ессв.с11'); » [1., п) = Ьи1аЬе1(1); Функция г'1па (см. з 5.2.2) может быть полезной при работе с размечающими матрицами.