|
|
||||||||||||||||||||||||||||||||
Вход |
Раздел "Обработка сигналов и изображений\Image Processing Toolbox"
И.М.Журавель "Краткий курс теории обработки изображений" В оглавление \ К следующему разделу \ К предыдущему разделу Сегментация цветных изображений на основе кластеризации по методу k-средних Рассмотрим задачу, основной целью которой является автоматическая сегментация на основе кластеризации (метод k-средних) цветных изображений, представленных в цветовом пространстве L*a*b*. Содержание
Шаг1: Считывание изображения. Считаем файл hestain.png, который содержит изображение гемотоксина и эозина (H&E). Здесь применен метод окрашивания для детального анализа патологий. he=imread('hestain.png'); imshow(he), title('H&E изображение'); text(size(he, 2),size(he, 1)+15,... 'Image courtesy of Alan Partin, Johns Hopkins University', ... 'FontSize',7,'HorizontalAlignment','right'); Шаг 2: Преобразование изображения из цветовой системы RGB в цветовую систему L*a*b*. Какое количество цветов видно на изображении, когда не принимать во внимание возможность комбинации яркостей? На самом деле их три: белый, голубой и розовый. Следует отметить различия этих цветов между собой. Цветовое пространство L*a*b* (оно еще известно как CIELAB или CIE L*a*b*) дает возможность различать эти визуальные различия. cform=makecform('srgb2lab'); lab_he=applycform(he, cform); Шаг 3: Классификация цветов в пространстве 'a*b*' с использованием кластеризации (метод k-средних). Кластеризация приводит до разделения объектов на группы. Кластеризация методом k-средних приводит также к локализации объектов в пространстве. Поиск разделения, т.е. какой объект к какому классу принадлежит, происходит на основе анализа метрического расстояния между объектами. ab=double(lab_he(:, :, 2:3)); nrows=size(ab, 1); ncols=size(ab, 2); ab=reshape(ab, nrows*ncols, 2); nColors=3; [cluster_idx cluster_center]=kmeans(ab, nColors, 'distance', 'sqEuclidean', ... 'Replicates',3); Шаг 4: Присвоение меток каждому пикселю изображения на основе метода k-средних. Для каждого объекта на исходном изображении метод k-средних возвращает индекс соответствующего кластера. Значение параметра cluster_center, которое получено в результате применения метода k-средних будет использовано при дальнейшей демонстрации метода. Отметим пиксели, которые содержаться в cluster_index. pixel_labels=reshape(cluster_idx, nrows,ncols); imshow(pixel_labels, []), title('изображение, отмеченное кластерными индексами'); Шаг 5: Создание сегментированного изображения на основе цветного. Используя параметр pixel_labels, можно разделить объекты на изображении hestain.png по цветах. segmented_images=cell(1, 3); rgb_label=repmat(pixel_labels, [1 1 3]); for k=1 : nColors color=he; color(rgb_label~=k)=0; segmented_images{k}=color; end imshow(segmented_images{1}), title('объекты в кластере 1'); imshow(segmented_images{2}), title('объекты в кластере 2'); mshow(segmented_images{3}), title('объекты в кластере 3'); Шаг 6: Сегментация ядер на основании отдельного изображения. Рассмотрим изображение, которое содержит синие объекты. Отметим, что они являются темно-синими и светло-синими. Используя значение 'L*' в цветовом пространстве L*a*b* можно отделить темно-синие объекты от светло-синих. mean_cluster_val=zeros(3, 1); for k=1:nColors mean_cluster_val(k)=mean(cluster_center(k)); end [mean_cluster_val,idx]=sort(mean_cluster_val); blue_cluster_num=idx(2); L=lab_he(:, :, 1); blue_idx=find(pixel_labels==blue_cluster_num); L_blue=L(blue_idx); is_light_blue=im2bw(L_blue,graythresh(L_blue)); Используем маску is_light_blue для того, чтобы пометить те пиксели, которые являются частью синего ядра. Отобразим синие ядра на разделенном изображении. nuclei_labels=repmat(uint8(0), [nrows ncols]); nuclei_labels(blue_idx(is_light_blue==false))=1; nuclei_labels=repmat(nuclei_labels, [1 1 3]); blue_nuclei=he; blue_nuclei(nuclei_labels~=1)=0; imshow(blue_nuclei), title('синие ядра'); |
Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
|
||
На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro | ||
E-mail: | ||
Информация на сайте была обновлена 11.05.2004 |
Copyright 2001-2004 SoftLine Co Наши баннеры |