
2. Морфологическая обработка
Основана на понятии связности и предназначена для изменения значения пикселей бинарного изображения по заданной схеме:
Операция |
Описание |
'bridge' |
Соединение пикселов объекта разъединенных 1-м пикс. фона, например: 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 0 1 1 |
'clean' |
Удаление изолированных пикселей объекта на фоне 0 0 0 0 1 0 0 0 0 |
'close' |
Закрытие (close) — последовательное применение наращивания и эрозии приводит к удалению внутренних небольших фрагментов фона внутри объекта. |
'dilate' |
Наращивание (dilate) — примыкающие пиксели фона (0) заменяются на 1. |
'erode' |
Эрозия (erode) — удаление граничных пикселей (однократное — на 1 pic). Но может применяться и многократно. В общем виде, p(i,j) → 0 если хотя бы один элемент на границе маски = 0. Важно, что маска не обязательно 33, но и 44 и более и, так же, может наращиваться итеративно. Все зависит от условий обработки. |
'fill' |
Заливка изолированных внутренних пикселей фона 1 1 1 1 0 1 1 1 1 |
'hbreak' |
Удаление H-связяности: 1 1 1 1 1 1 0 1 0 получим 0 0 0 1 1 1 1 1 1 |
'open' |
Открытие (open) последовательное применение эрозии и на-ращивания приводит к соединению областей фона. |
'skel' |
построения остова (скелета) |
'spur' —удаление шпуров |
|
3. Построение пространства признаков
-
Указание
Для расчета площадей, центра и эксцентриситета использовать представление о моменте инерции (согласно материалам лекции): площадь — момент M00, координаты центра изображения объекта x = M10, y = M01 и др.
Использование моментов "инерции"
М (m, n) - момент порядка m+n . Если m = 0,то это момент нулевого порядка"
где m,n - порядок момента;
i, j - целочисленная координата элемента
г,s - максимальные i,j, предел суммирования;
B(i,j) - весовая функция - поверхностная плотность элемента (яркость)
Для бинарного изображения B(i,j) объекта = 1
Для момента нулевого порядка M (m_,n) - это п л о щ а д ь изображения объекта, если B(i,j) = 1 и элемент имеет размерность единицы площади 11, или его м а с с а, если B(i,j) отличен от единицы
Контрольные вопросы
Пример
1. Загрузим изображения:
d1=imread('d:\zlabcv\1\h1.bmp');
2. Выполним бинаризацию
Преобразуем в бинарное (0,1) по порогу 0<threshold<1
% db=im2bw(dg, threshold); Написав функцию (для удобства)
fbin= @ (name,threshold) im2bw(name, threshold);
db1=fbin(d1, 0.2); db2=fbin(d2, 0.2); db3=fbin(d3, 0.2); db4=fbin(d4, 0.2); db5=fbin(d5, 0.2); db6=fbin(d6, 0.2);
Очевидно, можно попытаться улучшить бинаризацию, использовав разные пороги...
db1=fbin(d1, 0.4); db2=fbin(d2, 0.5); db3=fbin(d3, 0.5); db4=fbin(d4, 0.5); db5=fbin(d5, 0.35); db6=fbin(d6, 0.65);
Уже лучше, но... сстоит прибегнуть к дополнительной обработке.
-
Примечание
При необходимости, перед этим инвертируем изображения, т.к. при морфологических преобразованиях фон, по умолчанию, имеет значение 0, а объект — 1, тогда как вполне может оказаться — наоборот1. Преобразование самое простое: dinv = ~d;
Для всех: db1=~db1; db2=~db2; db3=~db3; db4=~db4; db5=~db5; db6=~db6; Однако у нас объект — белый, поэтому инверсию не выполняем.