Процесс блокированные изображения эффективно Используя частичные изображения или более низкие разрешения

В этом примере показано, как обработать блокированное изображение быстро с помощью двух стратегий, которые включают расчеты на меньших репрезентативных пробах изображения с высоким разрешением.

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

Если вам установили Parallel Computing Toolbox™, то можно далее ускорить обработку при помощи нескольких рабочих.

Создайте blockedImage объект с помощью модифицированной версии изображения "tumor_091.tif" от набора данных CAMELYON16. Оригинальное изображение является учебным изображением лимфатического узла, содержащего ткань опухоли. Оригинальное изображение имеет восемь уровней разрешения, и самый прекрасный уровень имеет разрешение 53760 61440. Модифицированное изображение имеет только три крупных уровня разрешения. Пространственная ссылка модифицированного изображения была настроена, чтобы осуществить сопоставимое соотношение сторон и указать функции на каждом уровне.

bim = blockedImage('tumor_091R.tif');

Отобразите блокированное изображение при помощи bigimageshow функция.

bigimageshow(bim);

Ускорьте обработку Используя более низкое изображение разрешения

Много блокированных изображений содержат несколько уровней разрешения, включая крупные более низкие версии разрешения самого прекрасного изображения с высоким разрешением. В общем случае распределение отдельных пиксельных значений должно быть примерно равным через все уровни. Усиливая это предположение, можно вычислить глобальную статистику на крупном уровне и затем использовать статистику, чтобы обработать более прекрасные уровни.

Извлеките изображение на самом грубом уровне, затем преобразуйте изображение в шкалу полутонов.

imLowRes = gather(bim);  % default is coarsest
imLowResGray = rgb2gray(imLowRes);

Порог изображение в два класса и отображает результат.

thresh = graythresh(imLowResGray);
imLowResQuant = imbinarize(imLowResGray,thresh);
imshow(imLowResQuant)

Подтвердите на самом большом изображении. Инвертируйте результат получить маску для запятнанной области.

bq = apply(bim, ...
    @(bs)~imbinarize(rgb2gray(bs.Data),thresh));

Визуализируйте результат на самом прекрасном уровне.

bigimageshow(bq,'CDataMapping','scaled');

Ускорьте Обработку Используя Использование Частичных областей блокированного Изображения

Другой подход, в то время как работа с большими изображениями должна извлечь меньшую область с функциями интереса. Можно вычислить статистику из ROI и затем использовать статистику, чтобы обработать целое изображение с высоким разрешением.

% Zoom in on a region of interest.
bigimageshow(bim);
xlim([2400,3300])
ylim([900 1700])

Извлеките область, показываемую из самого прекрасного уровня.

xrange = xlim;
yrange = ylim;
imRegion = getRegion(bim,[900 2400 1],[1700 3300 3],'Level',1);
imshow(imRegion);

Моделируйте с этой областью, затем отображают результаты.

imRegionGray = rgb2gray(imRegion);
thresh = graythresh(imRegionGray);
imLowResQuant = ~imbinarize(imRegionGray,thresh);

imshow(imLowResQuant)

Подтвердите на полном блокированном изображении и отобразите результаты.

bq = apply(bim, ...
    @(bs)~imbinarize(rgb2gray(bs.Data),thresh));
bigimageshow(bq,'CDataMapping','scaled');

Ускорьте обработку Используя Parallel Computing Toolbox

Если вам установили Parallel Computing Toolbox™, то можно распределить обработку на нескольких рабочих, чтобы ускорить обработку. Чтобы попытаться обработать изображение параллельно, установите runInParallel переменная к true.

runInParallel = false;
if runInParallel
    % Open a pool
    p = gcp;
    % Ensure workers are on the same folder as the file to be able to
    % access it using just the relative path
    sourceDir = fileparts(which('tumor_091R.tif'));
    spmd
        cd(sourceDir)
    end
    % Run in parallel
    bq = apply(bim, ...
    @(bs)~imbinarize(rgb2gray(bs.Data),thresh),'UseParallel',true);
end

Смотрите также

| |