Современные технологии обработки изображений 27
-
Наложение двух изображений
Приведем пример наложения последовательности нескольких изображений. Результат представляет собой наложение двух изображений, одно из которых представляет собой стационарный маятник, а другое — движущийся маятник.
Содержание:
- Шаг 1: Захват фонового изображения.
- Шаг 2: Обработка регистрируемых данных. Шаг 1: Захват фонового изображения. Произведем захват снимка и принимаем его в качестве фонового. vidobj=videoinput(‘winvideo’, 1, ‘RGB24_320X240’); preview(vidobj) pause(1) background=getsnapshot(vidobj); imshow(background);
-
Шаг 2: Обработка регистрируемых данных. Полученные данные используем для обработки и отображения изображений в реальном масштабе времени. Обработка заключается в вычислении линейной комбинации между изображениями. pause(2); set(gcf, 'DoubleBuffer', 'on'); vidobj.FramesPerTrigger=20; start(vidobj) % Вычисление линейной комбинации между текущим и фоновым изображениями. current=getdata(vidobj, 1); transparent=imlincomb(0.5, current, 0.5, background); % Отображение обработанного изображения. imshow(transparent);
% Повторение для всех изображений. while (vidobj.FramesAvailable>0), % Вычисление линейной комбинации между текущим и фоновым изображениями. current=getdata(vidobj, 1); transparent=imlincomb(0.5, current, 0.5, background); % Отображение обработанного изображения. imshow(transparent); end
% Очистка рабочего пространства. delete(vidobj) clear vidobj
Технология повышения контрастности изображений.
Пакет Image Processing Toolbox содержит несколько классических функций улучшения изображений. Эти функции являются очень эффективными при повышении контраста: imadjust, histeq, и adapthisteq. Приведем их сравнительный анализ при использовании для улучшения полутоновых и цветных изображений.
План последовательности действий
- Шаг 1: Считывание изображения.
- Шаг 2: Изменение размеров изображения.
- Шаг 3: Улучшение полутонового изображения.
- Шаг 4: Улучшение цветных изображений.
Шаг 1: Считывание изображений.
Считаем два полутоновых изображения: pout.tif и tire.tif. Также считаем индексное RGB-изображение: shadow.tif.
pout=imread('pout.tif'); tire=imread('tire.tif'); [X map]=imread('shadow.tif'); shadow=ind2rgb(X,map);
Шаг 2: Изменение размеров изображения.
Для более удобного сравнения изображений преобразуем их размеры так, чтобы они имели одинаковую ширину. Высота изображений изменится пропорционально в соответствии с исходным изображением.
width=210; images={pout, tire, shadow}; for k=1:3 dim=size(images{k}); images{k}=imresize(images{k}, [width*dim(1)/dim(2) width], 'bicubic'); end pout=images{1}; tire=images{2}; shadow=images{3};
Шаг 3: Улучшение полутоновых изображений.
Проведем сравнительный анализ эффективности использования следующих функций к улучшению изображений:
imadjust — увеличение контраста изображений путем изменения диапазона интенсивностей исходного изображения.
histeq — выполнение операции эквализации (выравнивания) гистограммы. В этом подходе увеличение контрастности изображения происходит путем преобразования гистограммы распределения значений интенсивностей элементов исходного изображения. Существуют также другие подходы к видоизменению гистограмм.
adapthisteq — выполнение контрастно-ограниченного адаптивного выравнивания гистограммы. Здесь методика повышения контрастности изображений базируется на анализе и эквализации гистограмм локальных окрестностей изображения.
pout_imadjust=imadjust(pout); pout_histeq=histeq(pout); pout_adapthisteq=adapthisteq(pout); imshow(pout); title('Original'); figure, imshow(pout_imadjust); title('Imadjust');
figure, imshow(pout_histeq); title('Histeq'); figure, imshow(pout_adapthisteq); title('Adapthisteq');
tire_imadjust=imadjust(tire); tire_histeq=histeq(tire); tire_adapthisteq=adapthisteq(tire); figure, imshow(tire); title('Original'); figure, imshow(tire_imadjust); title('Imadjust');
figure, imshow(tire_histeq); title('Histeq'); figure, imshow(tire_adapthisteq); title('Adapthisteq');
Проведем краткий анализ эффективности обработки изображений с помощью функций imadjust, histeq и adapthisteq. В основе этих функций лежат разные методы: в imadjust — преобразование диапазона яркостей элементов изображения, в histeq — эквализация гистограммы и в adapthisteq — адаптивное выравнивание гистограммы. Каждый из этих методов (функций) нацелен на устранение некоторого недостатка, поэтому может быть применен для эффективной обработки такого класса изображений, на которых есть такой тип искажений.
Один из критериев выбора того или иного метода может базироваться на анализе гистограммы распределения значений яркостей элементов изображения.
figure, imhist(pout), title('pout.tif'); figure, imhist(tire), title('tire.tif');
В качестве примера рассмотрим гистограммы изображений pout.tif и tire.tif. Гистограмма изображения pout.tif занимает только центральную часть возможного диапазона яркостей. Таким образом, для растяжения динамического диапазона можно использовать функцию imadjust. Гистограмма изображения tire.tif характеризуется неравномерностью распределения. Для выравнивания гистограммы можно применить функцию histeq.
Шаг 4: Улучшение цветных изображений
Одним из путей улучшения контраста цветных изображений является преобразование цветовых пространств, которое приводит к изменению значений составляющих цвета. Одним из таких преобразований является замена цветового пространства RGB на L*a*b*.
srgb2lab=makecform('srgb2lab'); lab2srgb=makecform('lab2srgb'); shadow_lab=applycform(shadow, srgb2lab); % Значение интенсивности из диапазона от 0 до 100, преобразуется в диапазон % [0 1] (преобразования выполняются в формате double) % и далее применяются некоторые методы повышения контрастности max_luminosity=100; L=shadow_lab(:, :, 1)/max_luminosity; shadow_imadjust=shadow_lab; shadow_imadjust(: ,: , 1)=imadjust(L)*max_luminosity; shadow_imadjust=applycform(shadow_imadjust, lab2srgb); shadow_histeq=shadow_lab; shadow_histeq(: ,: , 1)=histeq(L)*max_luminosity; shadow_histeq=applycform(shadow_histeq, lab2srgb); shadow_adapthisteq=shadow_lab; shadow_adapthisteq(: ,: , 1)=adapthisteq(L)*max_luminosity; shadow_adapthisteq=applycform(shadow_adapthisteq, lab2srgb); figure, imshow(shadow); title('Original'); figure, imshow(shadow_imadjust); title('Imadjust');
Original Imadjust figure, imshow(shadow_histeq); title('Histeq'); figure, imshow(shadow_adapthisteq); title('Adapthisteq');
Histeq Adapthisteq