Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
IPR_Lab_6_Print2_2012.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1.58 Mб
Скачать

3. Морфологические преобразования бинарных изображений

Предварительно сохраним:

imwrite(db1,'d:\zlabcv\2\h1b.bmp');

Результат морфологических преобразований можно проверить подсчетом суммы всех элементов изображения: она будет равна числу пикселей объекта т.е. равных 1

Выполним "закрытие" дыр...

dm1 =bwmorph(db1, 'close');

... и проверку

[sum(sum(db1)), sum(sum(dm1))];

........................................................

При однократном применении (и рекурсии!) результат незначительный... Но большего, с этим алгоритмом, достичь не получится. почему?

Дополнительно (dm  dm) удалим шпуры:

dm1 =bwmorph(dm1, 'spur');

............................................

... и выполним проверку

Визуально, изображения мало отличаются. Например:

№6 (фрагмент)

после бинаризации после закрытия

и удаления шпуров

Тем не менее, в цифрах это заметнее (табл. ***)

Общее число пикселей со значением 1

(предположительно, пикселей объектов)

после

бинаризации

после

закрытия

после удаления

шпуров

1

159738

159919

159867

2

154416

154280

154256

3

138816

138796

138761

4

156901

156793

156755

5

162568

162536

162486

6

75662

76402

76336

Контрольный вопрос. Объясните, почему число пикселей объекта после закрытия в №№ 1 и 2 — увеличилось, а в №№ 3,4,5 — уменьшилось? ... А после 'spur' все уменьшились? // Подсказка: какие алгоритмы реализует 'close'?

Понятно, что для полноценной обработки, нам необходимо выделить объекты, по какому-либо условию.

Этим условием является связность пикселей объекта и фона.

[L1,num1]=bwlabel(dm1,4);

[L2,num2]=bwlabel(dm2,4);

[L3,num3]=bwlabel(dm3,4);

[L4,num4]=bwlabel(dm4,4);

[L5,num5]=bwlabel(dm5,4);

[L6,num6]=bwlabel(dm6,4);

num указывает количество объектов — связных областей на изображении. Понятно, что нас интересует только один. Но какой именно?.. Решить эту задачу поможет анализ размера "объектов" или спектральный анализ.

p=dm1;L=L1;num=num1;

z=size(dm1); zz=z(1)*z(2);

d11=d1;

for I=1:zz

if L(I)~=1 % 2, 3, 4, 5...

p(I)=0;

end

end

Imshow(p);

dm1(1)

2

dm1(3) = od1

4

5

dm2(1)

dm2 (3) = od2

Повторное

преобразование

окончательный вариант

dm6 (6) = od6

Со вторым объектом dm2 нас ожидает неудача.

Первый же "объект" не позволяет выделить интересующую нас область... Применение к изображению d2 операции "открытие" open, которая может позволить фону соединиться, не дает результата.

Также неэффективна многократная (12), эрозия (рис. ниже).

Неэффективна и бинаризация с другим порогом:

Остается вернуться назад или написать собственный алгоритм. Поэтому:

а) преобразуем исходное цветное в серое

б) выполним уменьшение яркости и контрастирование

в) преобразуем в бинарное...

db2=fbin(d2,0.2);imshow(db2);

...и кажется на этот раз получилось;

г) улучшим (рис. слева)

д) выполнив [L,num]=bwlabel(dm2,4);

видим, что объектов слишком много (98), а нам нужны, только главные. Оценим число пикселей в объектах и выберем только самые большие:

[L,num]=bwlabel(dm2,4);

p=dm2;L=L+1;

z=size(p); zz=z(1)*z(2);

k=zeros(1,num+1);

for I=1:zz

0

1

2

96

206291

39508

68661

28491

k(L(I))=k(L(I))+1;

end

Теперь выбрать объект и удалить другие пиксели не составляет труда

Значение 0 соответствует фону, поэтому проверим только 1,2,3 и 96: Объект №3 и есть искомый. Поместим его в таблицу **

Теперь найдем и включим в библиотеку объект с изображения № 6. Вычисления показывают, что (по совпадению) это как раз объект 6 из тех, которые найдены на изображении.

Эти три изображения используем, чтобы выбрать для них подходящее пространство признаков.

Пространство признаков

od1

od2

od6

feat=imfeature(L1,'all')

Распознавание

Методами корреляции

Для множества {x} и образца {x0} вычисляется мера соответствия (коэффициент корреляции Rn):

|x| = |x0| = n

1 Инверсию используют иногда для экономии тонера при печати.

13 Обработка изображений и распознавание образов для программистов

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]