- •281 И.М.Журавель "Краткий курс теории обработки изображений"
- •Типы изображений
- •Бинарные изображения: геометрические характеристики
- •Бинарные изображения
- •Ориентация
- •Кодирование с переменной длиной
- •Сложные объекты
- •Локальные вычисления и итеративная модификация
- •Системы получения рентгенографических изображений
- •Получение изображений с помощью радиоизотопов
- •Ультразвуковая диагностика
- •Использование эффекта ядерного магнитного резонанса (ямр) для получения изображений
- •Пример обработки рентгеновских биомедицинских изображений с использованием системы matlab
- •1) Методы растяжения; 2) гистограммные методы; 3) ранговые методы; 4) разностные методы; 5) методы преобразования локальных контрастов.
- •Приложение. Программа, реализующая оценивания визуального качества изображений по одному из изложенных выше методов (формулы (2)-(6))
- •Обзор методов цифровой обработки изображений
- •Моделирование разностных методов в среде matlab
- •Обзор методов цифровой обработки изображений: Методы растяжения
- •Обзор методов цифровой обработки изображений: Методы гистограммных преобразований
- •Обзор методов цифровой обработки изображений: Метод преобразования локальных контрастов
- •Адаптивное повышение контрастности изображений
- •Использование функции протяженности гистограммы
- •Энтропия изображения
- •Использование среднеквадратического отклонения значений яркостей элементов окрестности в методах контрастирования изображений
- •Нелинейное растяжение локальных контрастов
- •Анализ некоторых характеристик локальных окрестностей
- •Статистическое определение локального контраста
- •Фильтрация изображений: Алгоритмы сглаживания изображений
- •Сглаживание для аддитивной модели
- •Сглаживание для модели импульсных помех
- •Увеличение детальности изображений
- •Обнаружение деталей и их границ
- •Применения ранговых алгоритмов
- •Фильтрация изображений: Обобщенная линейная фильтрация
- •Деконволюция
- •Предварительная обработка изображений
- •1. Бейтс р., Мак-Доннелл м. Восстановление и реконструкция изображений: Пер. С англ.- м.: Мир, 1989. - 336. 2. Bracewell r.N. The Fourier Transform and its Applications. - n.Y.: McGraw-Hill, 1978.
- •Расширение границ изображений. Сверхразрешение.
- •Реконструкция размытых изображений в matlab
- •Границы изображений: Края и их обнаружение
- •Дифференциальные операторы
- •Дискретные аппроксимации
- •Выделение и локализация края
- •Классификация по ближайшему соседу
- •Классификация по ближайшей центроиде
- •Автоматическое формирование кластера
- •Кодирование и сжатие изображений
- •Применение в сейсмологии
- •Применение в биологии Электрокардиография
- •Применение на транспорте Распознавание автомобилей
- •Распознавание самолетов
- •Imshow(he), title('h&e изображение');
- •Шаг 2: Вычисление выборки цветов в цветовом пространстве l*a*b* для каждой локальной области.
- •Imshow(sample_regions(:, :, 2)), title('Пример красной области');
- •Шаг 3: Классификация каждого пикселя с использованием принципа ближайшей окрестности.
- •Шаг 4: Отображение результатов классификации по ближайшей окрестности.
- •Шаг 5: Отображение значений 'a*' и 'b*' отмеченных цветов.
- •Шаг 4: Улучшение цветных изображений
- •Изображение 2: Применение линейных конформных преобразований.
- •Изображение 4: Применение проекционных преобразований.
- •Изображение 5: Применение полиномиальных преобразований.
- •Шаг 2: Исследование отображения изображений с помощью линий сетки, окружностей и т.П.
- •Шаг 3: Достижение специальных эффектов на результирующем изображении с помощь использования метода частичных масок.
- •Шаг 4: Повторение эффекта на разных изображениях
- •Шаг 1: Первичное преобразование изображений.
- •Шаг 4: Реализация методов с параметрами 'circular' и 'symmetric'.
- •Image Acquisition Toolbox, хранятся в виде mat-файла pendulum.Mat.
- •Гранулометрия
- •Параллельные лучи - реконструкция фантома головы на основании проекционных данных.
- •Веерные лучи - вычисление синтезированных проекций.
- •Xlabel('Веерный поворот угла (в градусах) ')
- •Веерные лучи - реконструкция фантома головы на основании проекционных данных.
- •Сегментация методом управляемого водораздела
- •Шаг 3: Маркировка объектов переднего плана.
- •Шаг 4: Вычисление маркеров фона.
- •Реконструкция изображений с использованием регуляризационного фильтра
- •Восстановление изображений с использованием метода Лаки-Ричардсона
- •Шаг 5: Обработка шумовой составляющей.
- •Шаг 8: Моделирование взвешенного массива (массив weight).
- •Шаг 9: Моделирование функции протяженности точки psf.
- •Некоторые подходы к улучшению визуального качества изображений с затемненными участками.
- •Шаг 3. Арифметические операции с изображениями.
- •Шаг 4. Растяжение динамического диапазона интенсивностей пикселей изображения.
- •Реализация некоторых методов видоизменения гистограмм в системе Matlab
- •Шаг 3: Экспоненциальное преобразование гистограммы.
- •Шаг 4: Преобразование гистограммы по закону Рэлея.
- •Шаг 5: Преобразование гистограммы по закону степени .
- •Шаг 6: Гиперболическое преобразование гистограммы.
- •Шаг 3: Использование медианного фильтра для устранения импульсного шума.
- •Шаг 4: Подавление шумовой составляющей с использованием операции сглаживания.
- •Шаг 5: Пороговый метод подавления шумов.
- •Шаг 6: Низкочастотная фильтрация с использованием шумоподавляющих масок.
Image Acquisition Toolbox, хранятся в виде mat-файла pendulum.Mat.
% Доступ к захваченным изображениям (видеообъектам).
% vidobj=videoinput('winvideo', 1, 'RGB24_352x288');
% Формирование объекта на основе пяти фреймов.
% set(vidobj, 'FrameGrabInterval', 5);
% Формирование большего числа фреймов.
% nFrames=50;
% set(vidobj, 'FramesPerTrigger', nFrames);
% Доступ к видеоустройству.
% src=getselectedsource(vidobj);
% Настройка исходного устройства на формирование 30 кадров в секунду.
% set(src, 'FrameRate', '30');
% Открытие окна просмотра.
% preview(vidobj);
% Начало захвата изображений.
% start(vidobj);
% Определение окончания захвата данных.
% wait(vidobj, 10);
% Извлечение фреймов из памяти.
% frames=getdata(vidobj);
% Удаление рабочих переменных.
% delete(vidobj)
% clear vidobj
% Считывание MAT-файла.
load pendulum;
immovie(frames);
Шаг 2: Выбор области колебания маятника.
Мы можем наблюдать колебания маятника в верхней половине каждого кадра в серии изображений.
Создадим новую серию кадров, которая содержит только область с колеблющимся маятником.
При создании новой серии изображений используем функцию imcrop.
nFrames=size(frames, 4);
first_frame=frames(:, :, :, 1);
first_region=imcrop(first_frame, rect);
frame_regions=repmat(uint8(0), [size(first_region) nFrames]);
for count=1:nFrames
frame_regions(:, :, :, count)=imcrop(frames(:, :, :, count), rect);
end
immovie(frame_regions);
Шаг 3: Сегментация маятника в каждом фрейме. Отметим, что маятник представлен в виде потемнения на фоне. Операцию сегментирования можно провести, преобразив фрейм в полутоновое изображение и далее использовать функцию im2bw с некоторым порогом. Далее нужно удалить фон с помощью функций imopen и imclearborder.
% Получение массива, содержащего сегментированное изображение маятника.
seg_pend=false([size(first_region, 1) size(first_region, 2) nFrames]);
centroids=zeros(nFrames, 2);
se_disk=strel('disk', 3);
for count=1:nFrames
fr=frame_regions(:, :, :, count);
imshow(fr)
pause(0.2)
gfr=rgb2gray(fr);
gfr=imcomplement(gfr);
imshow(gfr)
pause(0.2)
bw=im2bw(gfr, .7); % пороговая обработка
bw=imopen(bw, se_disk);
bw=imclearborder(bw);
seg_pend(:, :, count)=bw;
imshow(bw)
pause(0.2)
end
Шаг 4: Поиск центра сегментированного маятника в каждом фрейме. Мы можем наблюдать как изменяется форма и расположение маятника в различных фреймах. Теперь необходимо решить непростую задачу поиска центра маятника. Информацию, найденную при решении этой задачи, используем для определения длины маятника. Для вычисления центра маятника будем использовать функции bwlabel и regionprops.
for count=1:nFrames
lab=bwlabel(seg_pend(:, :, count));
property=regionprops(lab, 'Centroid');
pend_centers(count, :)=property.Centroid;
end
Отображение центра маятника с помощью функции plot.
x=pend_centers(:, 1);
y=pend_centers(:, 2);
figure
plot(x, y, 'm.'), axis ij, axis equal, hold on;
xlabel('x');
ylabel('y');
title('центр маятника');
Шаг 5: Вычисление радиуса колебания маятника. Запишем основное выражение окружности: (x-xc)^2+(y-yc)^2=radius^2, где (xc, yc) является центром, параметры a, b, c в уравнении x^2+y^2+a*x+b*y+c=0 представлены в виде a=-2*xc, b=-2*yc и c=xc^2+yc^2-radius^2. Параметры a, b и c можно найти с помощью метода наименьших квадратов. Тогда выражение можно представить как a*x+b*y+c=-(x^2+y^2) или в виде [a; b; c]*[x y 1]=-x^2-y^2. Представим это выражение в виде операции обратного деления.
Радиус окружности является длиной маятника в пикселях.
abc=[x y ones(length(x), 1)]\[-(x.^2+y.^2)];
a=abc(1); b=abc(2); c=abc(3);
xc=-a/2;
yc=-b/2;
circle_radius=sqrt((xc^2+yc^2)-c);
pendulum_length=round(circle_radius)
pendulum_length=
253
Отобразим окружность и ее центр, совмещая с центром маятника.
circle_theta=pi/3:0.01:pi*2/3;
x_fit=circle_radius*cos(circle_theta)+xc;
y_fit=circle_radius*sin(circle_theta)+yc;
plot(x_fit, y_fit, 'b-');
plot(xc, yc, 'bx', 'LineWidth', 2);
plot([xc x(1)], [yc y(1)], 'b-');
text(xc-110,yc+100,sprintf('длина маятника=%d пикселя', pendulum_length));
