Скачиваний:
32
Добавлен:
01.05.2014
Размер:
385.54 Кб
Скачать

3. Реализация алгоритма:

Шаг 1. Чтение изображения:

I = imread('D:\1.bmp');

figure, imshow(I), title('original image');

Изменения в контрасте могут быть определены с помощью операторов, которые вычисляют градиент изображения. В свою очередь градиент изображения может быть вычислен и на нём может быть выделена граница для построения бинарной маски. Для начала я использую метод edge и операцию Sobel, для вычисления порогового значения. Затем регулирую пороговое значение и опять использую методedgeдля получения бинарной маски.

[junk threshold] = edge(I, 'sobel');

fudgeFactor = .5;

BWs = edge(I,'sobel', threshold * fudgeFactor);

figure, imshow(BWs), title('binary gradient mask');

Шаг 2. Растягиваем изображение:

Бинарная градиентная маска показывает линии контраста в изображении. Эти линии не достаточно чётко обрисовывают границы объекта на изображении. Сравнивая начальное изображение с изображением градиентной маски исходного изображения, видим промежутки на контурах изображения. Это можно исправить с помощью линейного структурирования элементов, с помощью strelfunction.

se90 = strel('line', 3, 90);

se0 = strel('line', 3, 0);

Бинарная градиентная маска расширяется с помощью вертикально структурированных элементов. Функция imdilate расширяет изображение.

BWsdil = imdilate(BWs, [se90 se0]);

figure, imshow(BWsdil), title('dilated gradient mask');

Шаг 3. Заполняем внутренние промежутки:

Расширенная градиентная маска показывает границу достаточно хорошо, но всё же имеются промежутки в контурах, для исправляния этого недостатка мы функцию imfill.

BWdfill = imfill(BWsdil, 'holes');

figure, imshow(BWdfill);

title('binary image with filled holes');

BWnobord = imclearborder(BWdfill, 4);

figure, imshow(BWnobord), title('cleared border image');

seD = strel('diamond',1);

BWfinal = imerode(BWnobord,seD);

BWfinal = imerode(BWfinal,seD);

figure, imshow(BWfinal), title('segmented image');

BWoutline = bwperim(BWfinal);

Segout = I;

Segout(BWoutline) = 255;

figure, imshow(Segout), title('outlined original image');

4. Контрольный пример:

Тестирование метода проводилось на базе данных ORL_bmp:

Шаг 1. Чтение изображения:

Рис. 4.1

Бинарная маска:

Рис. 4.2

Шаг 2. Растягиваем изображение:

Рис. 4.3

Шаг 3. Заполняем внутренние промежутки:

Рис. 4.4

Рис. 4.5

Рис. 4.6

Рис. 4.7

5. Использование метода

Пример использования метода я прочла на сайте www.mathworks.comв разделе demos.

Его реализовал и представил Alan Partin для распознавания клетки.

6. Выводы:

Метод Собеля удобен для использования в задачах сегментации и распознавания изображения, прост в реализации и выдаёт нужные результаты при тестировании.

7. Источники информации:

  1. Matlabhelp

  2. http://www.mathworks.com/products/image/demos.html

  3. http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=8031&objectType=file

    1. http://matlab.exponenta.ru/imageprocess/book3/12/edge.php

Список функций Image Processing Toolbox: Сегментация изображений

  1. http://www.INTUIT.ru

Интернет-Университет Информационных Технологий

Алгоритмические основы растровой графики

  1. Image Processing Toolbox™

  2. Прэтт У. Цифровая обработка изображений В 2 т. М: Мир, 1982.

  3. Lim, Jae S. Two-Dimensional Signal and Image Processing// Englewood Cliffs. New Jersey: Prentice Hall, 1990.

  4. Parker, James R. Algorithms for Image Processing and Computer Vision. New York: John Wiley & Sons, Inc., 1997.

Соседние файлы в папке Метод Собеля