смотра с анимацией изображений с многими фреймами служит проигрыватель implay с кнопками управления и своей панелью инструментов (рис. 10). Проигрыватель можно вызвать из каталога APPS или командами:
load mri; montage(D,map) mov = immovie(D,map); implay(mov)
Окно Image Tool имеет позицию меню Tool с командами изменения размера просматриваемого изображения, выделения его участка, измерения расстояния между точками изображения и вывода окна с информацией об изображении. Контроль расстояния и окно с информацией об изображении показаны на рис. 7. Эти команды есть также
Рис. 8. Визуализация матрицы с цветной окраской ее элементов
Рис. 9. Фреймы срезов черепной коробки
Рис. 10. Проигрыватель файлов с анимацией изображений
figure, imshow('pout.tif');
h = imdistline(gca); api = iptgetapi(h);
fcn = makeConstrainToRectFcn('imline',.
get(gca,'YLim'));
get(gca,'XLim')
йцт^п l
:
f
j
I
:
hnmM^rai*' IT. -
LfflJ?
Ida IIcJ-III artin lln '"t t ■ - 2 П В
* 1=1 ,V,', llHl lKI I ««IK I4L
. j . ■■ □ с n
1
0
"L id* -I Л I -.Fl ■ IWv 4VT I'ill
.: . -d ■ ■ 't * , --1 Г
и
С Г * !
[и! 1 J
-Ш
111 b_"l ■/*." 10Ц [44 pep^p " 11 1"
jj j j , - -. r-a t1 / |aI □ ¿ji ■ и
'r ж
•A r* * #
\ \
И
Рис. 12. Преобразование изображения: а) изменение размеров; б) поворот
Рис. 11. Изображение файла pout.tif с контролем расстояния между двумя точками
В Image Processing Toolbox входит множество функций, объединяющих просмотр изображений с вычислением и визуализацией параметров изображения. Ограничимся примером показа файла pout.tif с вычислением расстояния между двумя точками изображения, указываемыми мышкой (рис. 11):
I = imread('circuit.tif'); J = imresize(I,1.25); imshow(I); figure, imshow(J)
Функция imrotate обеспечивает умножение матрицы на матрицу вращения, то есть обеспечивает поворот изображения на заданный угол (рис. 12б):
I = imread('circuit.tif'); J = imrotate(I,35,'bilinear'); imshow(I); figure, imshow(J)
Далее в статье будет приведено множество других примеров применения функций просмотра изображений.
Геометрические преобразования
Учет законов и формул геометрии лежит в основе многих геометрических преобразований изображений [4, 5]. К ним сводятся действия с изображениями, как с матрицами. Например, изменение размеров изображений (рис. 12а):
Для интерактивного ввода фрагмента изображения служит функция тсгор:
I = тгеа^'агсщ^йТ); ] = 1шсгор(1);
Она выводит изображение I, на котором мышкой сначала можно выделить прямоугольник с нужным фрагментом (рис. 13), а затем присвоить ему имя J. Функция imshow(J) позволяет просмотреть выделенный фрагмент.
Функции показа изображения можно использовать для просмотра фотографий, сделанных при аэрофотосъемке и космической фотосъемке, а также изображений от устройств наведения на цель ракет, управляемых снарядов и авиационных бомб.
Рис. 13. Выделение фрагмента изображения мышкой
Рис. 14. Снимок, полученный при аэрофотосъемке
Приведенная ниже программа демонстрирует показ снимка участка города при аэрофотосъемке (рис. 14):
unregistered = iшread('westconcordaeria1.png'); subp1ot(121); imshow(unregistered) subp1ot(122);iшshow('westconcordorthophoto.png')
Работа с выделенными областями
Часто возникает необходимость работы с выделенными областями рисунка (регионами или областями интереса). Программа, представленная ниже, иллюстрирует такую работу с крайним правым объектом (монетой, рис. 15):
I = imieadCeight.tif'); с = [222 272 300 270 221 194]; г = [21 21 75 121 121 75]; J = гоШ11(1,с,г); subp1ot(221); imshow(I); subp1ot(222); imshow(BW) subp1ot(223); imshow(J); BW = roipo1y(I,c,r); BW = roipo1y(I,c,r); Н = fspecia1('unsharp'); J = к^2(Н,1ДО); subp1ot(224); imshow(J)
Монета выделена подходящей фигурой (шестиугольником), которая закрашена затем цветом фона: это приводит к удалению
Рис. 15. Работа с выделенными областями
изображения монеты. Можно, напротив, применить операцию усиления контрастности и таким образом выделить монету. Эти операции можно также выполнять с блоками изображения (рис. 16):
@(Ыock_struct)imJ-esize(Ыock_stmct.data,0Л5); I = iшJ-ead('pears.png'); 12 = Ыоскргос(1,[100 100]/^); ^ще; imshow(I); ^ще; imshow(I2);
Функция roicolor(X,low,high) выделяет участок из цветного изображения, а приведенная ниже программа строит черно-белое изображение этого участка (рис. 17):
1oad c1own; BW = гоко1ог(Х,10,20); imshow(X,map); figШ'eДmshow(BW)
Рис. 17. Выделение участка цветного изображения и построение его в черно-белом виде
Улучшение изображения
Улучшение качества изображения — одна из важнейших задач при его редактировании. В приведенной ниже программе показано изменение контрастности монохромного и цветного изображений (рис. 18):
I = iшJ'ead('pout.tif');J = imadjust(I);
subp1ot(221); imshow(I); subp1ot(222); imshow(J)
RGB1 = im^ead('footbaД.jpg');
RGB2 = imadjust(RGB1,[.2 .3 0; .6 .7 1],[]);
subp1ot(223); iшshow(RGB1),
subp1ot(224); iшshow(RGB2)
Рис. 18. Изменение контрастности монохромного и цветного изображений
Для получения негативного изображения черно-белого объекта BW достаточно заменить его объектом ~BW (рис. 19):
BW = iш^ead('circ1es.png'); subp1ot(121); iшshow(BW) subp1ot(122); iшshow(~BW)
г
Рис. 19. Смена цвета — белого на черный и черного на белый
Расфокусировка изображений с технической точки зрения обычно ухудшает изображение. Но она же является важным художественным приемом, например при подготовке портретов. Следующая программа обеспечивает расфокусировку изображения с помощью фильтра filteredRGB (рис. 20):
origina1RGB = iшJ'ead('peppers.png'); subp1ot(121); iшshow(origma1RGB); h = fspecia1('motion', 50, 45); fi1teredRGB = imfi1ter(origma1RGB, h); subp1ot(122); iшshow(fi1teredRGB)
Для понижения и повышения четкости изображения служит ряд функций. Функции,
(АЧХ). Следующая программа строит трехмерные АЧХ ряда фильтров, позволяющие судить об их назначении (рис. 24):
Рис. 21. Понижение и повышение четкости изображения
имеющие в названии слово blur, смягчают изображение, а функция sharpened делает изображение более резким. Последнее обеспечивает и специальный фильтр, подчеркивающий высокие частоты и не искажающий низкие и средние частоты. Следующая программа иллюстрирует эти действия на примере монохромного изображения фотографа с камерой (рис. 21):
I = imread('cameraman.tif'); subplot(2,2,1); imshow(I); title('Original Image'); H = fspecial('motion',20,45); MotionBlur = imfilter(I,H,'replicate');
subplot(2,2,2);imshow(MotionBlur);title('Motion Blurred Image') H = fspecial('disk',10); blurred = imfilter(I,H,'replicate'); subplot(2,2,3); imshow(blurred); title('Blurred Image'); H = fspecial('unsharp'); sharpened = imfilter(I,H,'replicate'); subplot(2,2,4); imshow(sharpened); title('Sharpened Image');
Еще один полезный прием — помещение ограниченного по размеру цветного изображения на черный прямоугольник большего размера (рис. 22):
load mandrill; figure('color','k')
image(X); colormap(map); axis off; axis image
Фильтрация изображений и фильтры
Фильтры играют важную роль в обработке изображений. Например, фильтры,
Hd = zeros(16,16); Hd(5:12,5:12) = 1;
Hd(7:10,7:10) = 0; h = fwind1(Hd,bartlett(16));
colormap(jet(64)); subplot(221);
freqz2(h,[32 32]); axis ([-1 1 -1 1 0 1])
[f1,f2] = freqspace(21,'meshgrid'); Hd = ones(21);
r = sqrt(f1.A2 + f2.A2); Hd((r<0.1)|(r>0.5)) = 0;
subplot(222); mesh(f1,f2,Hd)
b = remez(10,[0 0.05 0.15 0.5 5 0.65 1],[0 0 1 1 0 0]);
[H,w] = freqz(b,1,128,'whole');
subplot(223);plot(w/pi-1fftshift(abs(H)))
h = ftrans2(b);subplot(224); freqz2(h)
использующие усреднение точек изображения, обычно применяются для сглаживания и очистки изображения от шума. В следующей программе для очистки изображения от черных точек применяется медианный фильтр medfilter2 (рис. 23):
I = imreadCeight.tif'); J = imnoise(I,'salt & реррег',0.02); К = medfilt2(J);
subplot(121); imshow(J); subplot(122); imshow(K)
Фильтры обычно характеризуются своей амплитудно-частотной характеристикой
Программа (рис. 25) демонстрирует основные приемы обработки изображения — за-шумление изображения и очистку от шума с выделением шумовых составляющих:
I=im2double(imread('cameraman.tif')); subplot(221);
imshow(I); title('Original Image (courtesy of MIT)');
LEN = 21; THETA = 11;
PSF = fspecial('motion', LEN, THETA);
blurred = imfilter(I, PSF, 'conv', 'circular');
noise_mean = 0; noise_var = 0.0001;
blurred_noisy=imnoise(blurred,'gaussian',noise_mean, noise_var);
subplot(222); imshow(blurred_noisy);
title('Simulate Blur and Noise')
estimated_nsr = noise_var / var(I(:));
wnr3 = deconvwnr(blurred_noisy, PSF, estimated_nsr);
subplot(223); imshow(wnr3)
title('Restoration of Blurred, Noisy Image Using Estimated NSR'); estimated_nsr = 0;
wnr2 = deconvwnr(blurred_noisy, PSF, estimated_nsr); subplot(224), imshow(wnr2)
title('Restoration of Blurred, Noisy Image Using NSR = 0')
Морфологические преобразования
Морфологические преобразования выполняются над формой объектов изображений и составляют основу средств распознавания образов. Это нелинейные операции, базиру-
Рис. 25. Оригинальное изображение, изображение с Blur и шумом и выделение его составляющих
ющиеся на связанности пикселей. В МА^АВ эти операции выполняются с бинарными (черно-белыми) изображениями, причем принято считать, что пиксели со значением 1 относятся к объекту, а со значением 0 — к фону. Из большого числа таких функций мы рассмотрим лишь несколько наиболее распространенных.
Например, функция бинарного закрытия изображения тс^е приводит к удалению внутри изображения небольших фрагментов типа дыр. Функция эрозии заменяет
на 0 граничные пиксели объекта, то есть удаляет граничную область объекта толщиною в заданное число пикселей. Это иллюстрирует следующая программа (рис. 26):
originalBW = imread('circles.png'); subplot(221); imshow(originalBW); title('Origmal Image') se = strel('disk',10); closeBW = imdose(originalBW,se); subplot(222); imshow(closeBW); title('Close'); erodedBW = imerode(originalBW,se); subplot(223); imshow(erodedBW); title('Eroded 10') se = strel('disk',15); erodedBW = imerode(originalBW,se); subplot(224); imshow(erodedBW); title('Eroded 15')
Еще одна программа строит контуры черно-белого изображения с удалением закраски объектов и заменой их скелетоном (рис. 27):
BW = imread('circles.png'); subplot(131); imshow(BW); BW2 = bwmorph(BW,'remove'); subplot(132); imshow(BW2) BW3 = bwmorph(BW,'skel',Inf); subplot(133); imshow(BW3)
А следующая программа обеспечивает поиск и обнаружение двух точек изображения (рис. 28):
I = imread('circuit.tif'); BW = edge(imrotate(I,50,'crop'),'canny') [H,T,R] = hough(BW); P = houghpeaks(H,2); imshow(H,n,'XData',T,'YData',R,'InitialMagnification','fit'); xlabel('\theta'), ylabel('\rho'); axis on, axis normal, hold on; plot(T(P(:,2)),R(P(:,1)),¥,'color','white');
Эта задача часто встречается при обработке астрономических изображений поверхности планет и астероидов. Актуальность подобных задач в последнее время быстро растет, особенно после падения метеорита около Челябинска.
Операции анализа изображения
При анализе обычно сопоставляются и изменяются свойства объектов изображения. Например, следующая программа выделяет с помощью функции boundaries контуры объектов черно-белого изображения и закрашивает внутреннюю область объектов тремя цветами (рис. 29):
I = imread('rice.png'); BW = im2bw(I, graythresh(I)); [B,L] = bwboundaries(BW,'noholes'); imshow(label2rgb(L, @jet, [.5 .5 .5])); hold on for k = 1:length(B) boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2)
end
Рис. 26. Операции закрытия и эрозии изображения
Рис. 28. Выделение двух точек изображения
Рис. 29. Выделение и окраска объектов (бактерий)
Следующая программа напоминает предыдущую, но не строит границу объектов, а окрашивает их целиком и позволяет менять цвет фона (рис. 30):
И R Yj.
•> ■ Ь;
Z _ (и ^ h
%1 S к< >4
г* (.j-o
Ри^ 27. Построение контуров объектов удалением их закраски и замена их скелетоном
I = imread('rice.png'); subplot(131); imshow(I)
BW = im2bw(I, graythresh(I)); CC = bwconncomp(BW);
L = labelmatrix(CC); RGB = label2rgb(L);
subplot(132); imshow(RGB)
RGB2 = label2rgb(L, 'spring', 'c', 'shuffle');
subplot(133); imshow(RGB2)
Обработка изображений печатных плат
Изображения печатных плат легко преобразуются в бинарные, что позволяет исполь-
subplot(212); plot([stats.Correlation]); title('Texture Correlation as a function of offset') xlabel('Horizontal Offset'); ylabel('Correlation')
Построение цветного изображения печатной платы также возможно. Это иллюстрирует следующая программа (рис. 34):
BW = imread('blobs.png'); [B,L,N] = bwboundaries(BW); figure; imshow(BW); hold on; for k=1:length(B), boundary = B{k}; if(k > N) plot(boundary(:,2),...
boundary(:,1),'g7LineWidth',2);
else
plot(boundary(:,2), boundary(:,1),'r7LineWidth',2); end end
Рис. 34. Выделение и окраска элементов печатной платы
зовать обширный аппарат морфологических преобразований для совершенствования проектирования таких плат. Приведенная ниже программа иллюстрирует технику получения границ проводников печатной платы специальными методами Превита и Канни и соответствующими функциями (рис. 31):
I = imread('circuit.tif');subplot(131);imshow(I); BW1 = edge(I,'prewitt');BW2 = edge(I,'canny'); subplot(132); imshow(BWl); subplot(1,3,3); imshow(BW2)
Другая программа обеспечивает это методом Канни с поворотом печатной платы (рис. 32):
I = imread('circuit.tif');
rotI = imrotate(I,33,'crop'); figl = imshow(rotl); BW = edge(rotI,'canny'); figure, imshow(BW);
Интересно, что при наклонных границах проводников их выделение происходит более четко. Часто важную информацию несет зависимость яркости заданной строки изображения от расстояния, то есть диаграмма профиля (рис. 33):
circuitBoard = rot90(rgb2gray(imread('boardtif'))); subplot(211); imshow(circuitBoard); title('Original Image') offsetsO = [zeros(40,1) (1:40)']; glcms = graycomatrix(circuitBoard,'Offset',offsets0); stats = graycoprops(glcms,'Contrast Correlation');
Специальные преобразования изображения
В технике компрессии (сжатия) и декомпрессии изображений часто используются специальные преобразования изображения. Для этого в пакете Image Processing Toolbox имеется ряд функций. Одна из них — dct2 — осуществляет прямое косинусное преобразование изображения (рис. 35):
RGB = imread('autumn.tif'); I = rgb2gray(RGB); J = dct2(I); subplot(121);imshow(RGB);title('Оригинал'); subplot(122); imshow(log(abs(J)),[]), colormap(jet(64)), colorbar; title('dct2')
Рис. 32. Поворот изображения печатной платы
Рис. 33. Зависимость яркости строки от положения в ней пикселя
При прямом косинусном преобразовании получается изображение, которое почти не содержит мелких деталей, свойственных исходному изображению. Его спектр намного более узкий, что говорит о существенном сжатии изображения — практически в десятки раз. Такое сжатие используется в формате изображений jpeg. С 2000 года для сжатия стали использовать и вейвлеты [4, 5], но пока
Рис. 36. Оригинальное изображение в формате grayscale и после прямого и обратного косинусного преобразования
Рис. 37. Прямое и обратное преобразование Радона с промежуточной фильтрацией
в Image Processing Toolbox нет средств для работы с ними.
Косинусное преобразование является обратимым, так что возможно восстановление изображения. В ходе этой операции можно использовать более узкий спектр и отказаться от составляющих сигнала с очень малым уровнем. Особенно эффектно это при преобразовании изображения в формат grayscale (рис. 36):
J(abs(J) < 10) = 0; K = idct2(J);
subplot(211); imshow(I); ЩкСОригинал в формате grayscale'); subplot(212); imshow(K,[0 255]); ¿^('Восстановленное изображение');
При обработке фотографий (например, рентгеновских снимков) применяется специальное прямое и обратное преобразование Радона (рис. 37):
P = phantom(128); R = radon(P,0:179); I1 = iradon(R,0:179); I2 = iradon(R,0:179,'linear','none'); subplot(1,3,1), imshow(P), title('Original') subplot(1,3,2), imshow(Il), title('Filtered backprojection') subplot(1,3,3), imshow(I2,[]), title('Unfiltered backprojection')
Большая группа преобразований связана с изменением форматов данных и чисел и арифметическими операциями с матрицами изображений и цветов. Ввиду их очевидности функции подобных преобразований в [4, 5] не описаны.
Операции с цветом
Цвета каждого пикселя изображения в MATLAB и пакете Image Processing Toolbox задаются числами (кодами). Поэтому операции с цветом сводятся к матричным операциям и реализуются соответствующими функциями цвета. Работа с цветом изображения или его объектов происходит на уровне этих функций (рис. 38):
RGB = imread('peppers.png'); M = [0.30, 0.59, 0.11]; gray = imapplymatrix(M, RGB); subplot(2,2,1), imshow(RGB), title('Original RGB') subplot(2,2,2), imshow(gray), title('Grayscale Conversion')
Рис. 38. Преобразование RGB-изображения в grayscale формата PNG и изображения текстового формата в бинарный
bw = imread('text.png'); bw2 = imcomplement(bw); subplot(2,2,3),imshow(bw); subplot(2,2,4),imshow(bw2)
Определенную специфику имеют операции и функции изменения форматов изображений с разными цветами. Мы уже неоднократно применяли преобразования RGB-и grayscak-изображений. В формате RGB для задания кодов цветов R, G и B каждого пикселя используется «куб цветов», показанный на рис. 39 (слева) при 8-битовом кодировании (28 = 256 цветов).
Отметим еще один популярный формат — HSV. При нем используется «конус цветов» (рис. 39, справа). Для задания цвета нужны три параметра: Hue (цвет); Saturation (насыщенность) и Value (сила цвета). Следующая программа вычисляет и представляет матрицы компонентов и исходное изображение формата HSV (рис. 40):
RGB=reshape(ones(64,1)*reshape(jet(64),1,192),[64,64,3]); HSV=rgb2hsv(RGB); H=HSV(:,:,1); S=HSV(:,:,2); V=HSV(:,:,3); subplot(2,2,1), imshow(H); subplot(2,2,2), imshow(S) subplot(2,2,3), imshow(V); subplot(2,2,4), imshow(RGB)
Есть ряд функций, поддерживающих и другие системы изображения и цвета — менее распространенные. Их описание можно найти в справке и книгах [2-5].
1461
проектирование I моделирование работы
Взаимодействие с другими пакетами расширения
Пакет расширения Image Processing Toolbox R2012b функционально закончен, для его работы необходима только базовая матричная система MATLAB R1212b. Блочное имитационное моделирование систем и устройств обработки изображений и управления видеопотоками в этом пакете не предусмотрено. Для этой цели служит другой пакет расширения — Image Acquisition Toolbox. Кроме того, в области обработки и фильтрации изображений как сигналов можно использовать пакеты расширения Signal Processing Toolbox, DSP System, Wavelet Toolbox и др. Возможности работы с картографическими изображениями имеются в специальном пакете расширения Mapping Toolbox. Это расширяет возможности базовой системы MATLAB R2012b и позволяет при необходимости применять средства блочного имитационного моделирования Simulink 8.0 (R2012b).
Заключение
Image Processing Toolbox R2012b вобрал в себя обширные возможности предшествующих реализаций этого мощного пакета расширения. Введен ряд новых возможностей и функций. Доступ к возможностям пакета стал более открытым и удобным,
особенно к его браузерам изображений. Пакет имеет множество функций, написанных на языке программирования системы MATLAB 8.0 — лучшем для научно-технических расчетов. Порою всего две-три строки вполне понятного машинного кода MATLAB достаточно для решения сложной технической задачи. При этом программные коды открыты для разбора и модификации пользователем. Их можно целиком вводить в командном или программном режимах работы. Дополнительные функции, вводимые пакетом расширения Image Processing Toolbox в систему MATLAB, обеспечивают решение основных задач импорта и экспорта файлов изображений, их обработки, анализа, улучшения качества, ряда преобразований и т. д. ■
Литература
1. www.mathworks.com
2. Дьяконов В. П. MATLAB R2006/2007/2008 + Simulink 5/6.7. Основы применения. М.: Солон-Пресс, 2008.
3. Дьяконов В. П. MATLAB. Полный самоучитель. М.: ДМК-Пресс, 2012.
4. Дьяконов В. П. MATLAB 6.5 SP1/7//7 P1+Simulink 5.6. Работа с изображениями и видеопотоками. М.: Солон-Пресс, 2010.
5. Гонсалес Р., Вудс Р., Эддинс Э. Цифровая обработка изображений в среде MATLAB. М.: Техносфера, 2006.
новости I рынок
Microsemi приобрела Symmetricom
Корпорация Microsemi объявила о вступлении в силу соглашения о приобретении компании Symmetricom, Inc., специализирующейся на разработке миниатюрных высокоточных генераторов частоты.
Компания Symmetricom — мировой лидер в области измерений частоты и точного времени. Ее технологии нашли свое применение в спутниках системы GPS, источниках опорных сигналов времени национальных стандартов и энергосистемах, а также в военных и телекоммуникационных сетях.
Большая часть оборудования синхронизации, которое выпускает Symmetricom, не имеет аналогов в мире. Эталоны точного времени и частоты, космические и авиационные системы, измерительные приборы, системы точного времени для предприятий нефтегазовой отрасли и энергетики, оборудование систем GPS/GNSS и систем навигации, сетевая синхронизация — это сферы использования продукции Symmetricom.
Линейка оборудования Symmetricom включает в себя:
• решения на базе приема сигнала GNSS;
• приемники времени и распределители частоты;
• цезиевые и рубидиевые эталоны частоты;
• сверхминиатюрные атомные генераторы;
• сетевые серверы NTP (Network Time Protocol) и модульные устройства;
• серверы, клиенты и коммутаторы протокола точного времени IEEE 1588.
www.icquest.ru