Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
RomanovSegmentatsia_red_04.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.11 Mб
Скачать

Приложение

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

%%% Определение исходных данных

% dirpath - путь к папке с картинками

dirpath = 'C:\Temp\1\';

filePostfix = 'nm.bmp'; % формат изображений

% набор длин волн в названиях изображений

fstWavelength = 380; % первая длина волны

lstWavelength = 900; % последняя длина волны

difWavelength = 10; % шаг длины волны между соседними изображенияем

width = 342; % ширина изображения

height = 304; % высота изображения

% количество изображений

numPicts = floor((lstWavelength - fstWavelength) / difWavelength);

% гиперспектральный куб (далее гпс-куб)

hsCube = zeros(numPicts, height, width);

%%% Считывание изображений

for l = fstWavelength : difWavelength : lstWavelength

% Определения индекса изображения в гпс-кубе

idx = (l - fstWavelength) / difWavelength + 1;

filename = [dirpath num2str(l) filePostfix]; % имя файла

hsCube(idx, :, :) = rgb2gray(imread(filename));

end;

% Координаты эталонного спектра пропускания клетки (эсп клетки)

ceRow = 4; % строка эсп клетки

ceCol = 78; % столбец эсп клетки

ceLen = numPicts; % длина массива эсп клетки

ceSpectrum = hsCube(:, ceRow, ceCol); % эсп клетки

%%% Сегментация

% map - результат сегментации, который представляет собой

% изображение, где цвета пикселя соответствуют объектам:

% map(i, j) = cellColor - клетки тканей (жёлтый цвет)

% map(i, j) = cytoplasmColor - цитоплазма (синий цвет)

% здесь i и j - произвольные координаты изображения

map = zeros(height, width, 3);

cellColor = [220 220 80]./255; % цвет клетки

cytoplasmColor = [21 171 229]./255; % цвет цитоплазмы

% maxdiff - максимальное отклонение от эталона

% взято из справочника Потолоцкого -> http://goo.gl/eYoroK

maxdiff = 1.4 * 10^9;

for i = 1 : height % бежим по координатам изображения

for j = 1 : width

% берём спектр пропускания текущей точки

cpSpectrum = hsCube(:, i, j);

% diff - отклонение, которое представляет собой

% сумму квадратов разностей квадратов спектров О_о

diff = sum((cpSpectrum.^2 - ceSpectrum.^2).^2);

if diff < maxdiff % если отклонение меньше максимального

map(i, j, :) = cellColor; % значит клетка

else

map(i, j, :) = cytoplasmColor; % иначе цитоплазма

end;

end;

end;

image(map);

Список литературы

  1. Guan Y., Li Q., Wang Y., Liu H., Zhu Z. Pathological leucocyte segmentation algorithm based on hyperspectral imaging technique // Opt. Eng. – 2012. – V. 51(5) – 053202.

  2. Smith R. Introduction to hyperspectral imaging. – NY.:MicroImages, 2006.

  3. Мельников А.В. Формирование и анализ изображений в микроскопии видимой и ИК области спектра методами спектрофотометрии: диссертация на соискание ученой степени кандидата технических наук. СПб: НИУ ИТМО, 2012 - 107 С.

  4. Yana Guan; Qingli Li; Yiting Wang; Hongying Liu and Ziqiang Zhu.

Pathological leucocyte segmentation algorithm based on hyperspectral imaging technique, Opt. Eng. 51(5), 053202 (May 07, 2012). http://dx.doi.org/10.1117/1.OE.51.5.053202

  1. Бутиков Е.И. Оптика. М: Высшая школа, 1986 – 515 с

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