Функции Image Toolbox / blkproc.php
.htmСписок функцийImage Processing Toolbox. Описание функции BLKPROC Семинары Обучение Лицензирование Разработка Подписка Форум Регистрация Matlab Toolboxes Simulink Blocksets Femlab Полезное Вход Обработка сигналов и изображений\image Processing ToolboxСписок функций Image Processing Toolbox: Фильтрация изображений
В оглавление \ К следующему разделу \ К предыдущему разделу
BLKPROC Обработка блоков изображения Синтаксис:
D=blkproc(S, [m n], fun)
D=blkproc(S, [m n], fun, P1, P2, …)
D=blkproc(S, [m n], [mborder nborder], fun, …)
D=blkproc(S, ‘indexed’, …)
Описание:
Функция D=blkproc(S, [m n], fun) формирует новое изображение D, пиксели которого являются результатом обработки функцией fun каждого из неперекрывающихся блоков размера исходного изображения S. Данная функция предназначена для обработки бинарных или полутоновых изображений. Исходное изображение S разбивается на неперекрывающиеся блоки пикселей. Блоки располагаются вплотную друг к другу, начиная с левого верхнего угла изображения. При проведении вычислений исходное изображение временно дополняется столбцами нулей справа и строками нулей снизу так, чтобы размеры изображений были кратны соответствующим размерам блока. Например, на рис. 1 исходное изображение имеет 10 строк и 9 столбцов. Если для обработки использовать блок [3 4], то изображение дополняется двумя строками и тремя столбцами нулевых пикселей.
Рис. 1.
Существует 3 варианта задания параметра fun. Имя х является условным обозначением обрабатываемого блока изображения.
Параметр fun Пример Комментарий Строка - имя функции D=blkproc(S, [m n], ‘myfunc’); Предварительно должна быть реализована функция myfunc, которая получает в качестве параметра блок х и возвращает матрицу или скаляр y: y=myfunc(x). Строка - выражение языка D=blkproc(S, [m n], ‘mean2(x)*ones(size(x))’); В строку помещается выражение, допустимое синтаксисом MATLAB. Это выражение интерпретируется при выполнении каждого блока. inline - функция f=inline(‘std2(x)*ones(size(x))’);D=blkproc(S, [m n], f); В качестве параметра функции inline указывается строка - выражение языка MATLAB. Оно компилируется и создается так называемая функция inline - функция, которая вызывается при обработке каждого блока. Использование inline - функций предпочтительнее по временным затратам. В результате обработки каждого блока создается матрица, вектор или скаляр, из которых формируется результирующее изображение D. Таким образом, размеры исходного и результирующего изображения, как правило, различаются.
Функция D=blkproc(S, [m n], fun, P1, P2, …) формирует изображение D, передавая в функцию fun дополнительные параметры Р1, Р2 и т.д.
Функция D=blkproc(S, [m n], [mborder nborder], fun, …) формирует изображение D, пиксели которого являются результатом обработки функцией fun частично перекрывающихся блоков размера исходного изображения S. Каждый блок размера расширяется вверх и вниз на mborder строк, а также вправо и влево на nborder столбцов. При этом центральные части размера (ядра) расширенных блоков не перекрываются друг с другом и располагаются, как и в предыдущем рассмотренном случае, последовательно начиная от левого верхнего угла изображения. В этом случае при проведении вычислений исходное изображение временно дополняется столбцами нулей справа и строками нулей снизу, чтобы размеры изображений были кратны соответствующим размерам блока , и дополнительно на mborder строк вверх и вниз и на nborder столбцов вправо и влево. Рис. 2 демонстрирует расположение двух соседних по диагонали блоков с размерами ядра 3х4 и mborder=1 nborder=2 на изображении, имеющем 10 строк и 9 столбцов. При вычислении изображение будет расширено на 3 строки вниз, 1 строку вверх, 5 столбцов вправо и 2 столбца влево.
Рис. 2.
Формат представления данных изображений S и D определяется реализацией функции fun.
Функция D=blkproc(S, ‘indexed’, …) аналогична рассмотренным выше, но предназначена для обработки палитровых изображений. При проведении вычислений исходное изображение временно дополняется либо единицами при формате представления данных Xs-double, либо нулями при формате представления данных Xs-uint8.
Повысить эффективность обработки блоков можно с помощью функции colfilt, которая предварительно преобразует блоки в столбцы.
Пример:
Рассмотрим выравнивание фона изображения с использованием функции blkproc. Неравномерный фон является серьезным дефектом изображений, который ухудшает визуальное восприятие и мешает выделению объектов с помощью порогового ограничения.
Исходное биомедицинское изображение показано на рис. 3,а. Это изображение характеризуется значительной неравномерностью фона. С помощью функции blkproc оценим яркость фона как среднее значение яркостей пикселей в блоках 25х25 пикселей. В результате работы blkproc получается изображение с размером в 25 раз меньшим, чем исходное. Для того чтобы изображение фона и исходное изображение были одинакового размера, изображение фона увеличивается с помощью функции imresize. Полученная оценка фона показана на рис. 3,б.
Если вычесть изображение фона из исходного изображения, то получится изображение с равномерным фоном. Добавление константы 0.5 необходимо для того, чтобы значения пикселей получившегося изображения были в диапазоне [0, 1]. Функцией imadjast результирующее изображение дополнительно контрастируется. Получившийся результат показан на рис. 3,в.
%Пример демонстрирует выравнивание фона.
%Чтение изображения.
I=imresd(‘image03.tif’);
I=im2double(I);
%Вывод на экран.
imshow(I);
%Получение оценки фона изображения как среднего
%в блоках 25х25 пикселей.
F=inline(‘mean2(x)’);
fon=blkproc(I, [25 25],f);
fon=imresize(fon, size(I), ‘bicubic’);
figure, imshow(fon);
%Вычитаем фон и контрастируем получившееся изображение.
I=I-fon+0.5;
I=imadjust(I, [0.2 0.7], 1);
% Вывод на экран результата.
figure, imshow(I);
а) б) в) Рис. 3.
Сопутствующие функции: BESTBLK, COLFILT.
В оглавление \ К следующему разделу \ К предыдущему разделу
I Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
II Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2004 г.) На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro E-mail: matlab@exponenta.ru Информация на сайте была обновлена 14.05.05 Copyright 2001-2005 SoftLine Co
Наши баннеры hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=58396&im=33&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("") >