|
|
||||||||||||||||||||||||||||||||
Вход |
Раздел "Обработка сигналов и изображений\Image Processing Toolbox"
И.М.Журавель "Краткий курс теории обработки изображений" В оглавление \ К следующему разделу \ К предыдущему разделу Пространственные преобразования изображений Большинство свойств пространственных преобразований наиболее наглядно демонстрируются на примере изображения шахматной доски.
Приведем демонстрационные примеры, которые будут включать:
Изображение 1: Создание шахматной доски. Изображение 2: Применение линейных конформных преобразований. Для линейных конформных преобразований: [u v]=[ x y 1] T. Параметр T представляет собой матрицу с размерностью 3x2, которая зависит от четырех параметров. % Четыре параметра. scale=1.2; % коэффициент масштабирования angle=40*pi/180; % угол поворота tx=0; % сдвиг по x ty=0; % сдвиг по y sc=scale*cos(angle); ss=scale*sin(angle); T=[ sc -ss; ss sc; tx ty]; Далее линейные конформные преобразования используются как подмножество аффинных преобразований. После этого создается структура TFORM: t_lc=maketform('affine', T); I_linearconformal=imtransform(I, t_lc, 'FillValues', .3); subplot(332) imshow(I_linearconformal); title('linear conformal') Что касается сдвига, то когда изменения в одном из направлений tx или ty отличны от нуля, то это не влияет на результирующее изображение. Чтобы увидеть координаты, которые соответствуют нашим преобразованиям, включая сдвиг, нужно провести следующие вычисления: Изображение 4: Применение проекционных преобразований.
Параметр T представляет собой матрицу с размерностью 3x3 с девятью различными элементами.
Что касается матричных преобразований, то эквивалентными являются два выражения:
T=[1 0 0.008; 1 1 0.01; 0 0 1]; t_proj=maketform('projective', T); I_projective=imtransform(I, t_proj, 'FillValues', .3); subplot(334) imshow(I_projective) title('projective') Изображение 5: Применение полиномиальных преобразований.
Оба параметра u и v являются полиномами второго порядка относительно x и y. Каждый полином второго порядка характеризуется, в свою очередь, шестью параметрами. При определении всех коэффициентов размерность T составляет 6x2. xybase=reshape(randn(12, 1), 6, 2); t_poly=cp2tform(xybase, xybase, 'polynomial', 2); % Двенадцать элементов T. T= [0 0; 1 0; 0 1; 0.001 0; 0.02 0; 0.01 0]; t_poly.tdata=T; I_polynomial=imtransform(I, t_poly, 'FillValues', .3); subplot(335) imshow(I_polynomial) title('polynomial') Изображение 6: Применение кусочно-линейных преобразований. imid=round(size(I, 2)/2); I_left=I(:, 1:imid); stretch=1.5; % Коэффициент растяжения size_right=[size(I, 1) round(stretch*imid)]; I_right=I(:, imid+1:end); I_right_stretched=imresize(I_right, size_right); I_piecewiselinear=[I_left I_right_stretched]; subplot(336) imshow(I_piecewiselinear) title('piecewise linear') Последние три примера показывают методы восстановления изображений с нерегулярными искажениями. Изображение 7: Применение синусоидальных преобразований. [nrows, ncols]=size(I); [xi, yi]=meshgrid(1:ncols, 1:nrows); a1=5; % амплитуда синусоиды. a2=3; u=xi+a1*sin(pi*xi/imid); v=yi-a2*sin(pi*yi/imid); tmap_B=cat(3, u, v); resamp=makeresampler('linear', 'fill'); I_sinusoid=tformarray(I, [], resamp, [2 1], [1 2], [], tmap_B, .3); subplot(337) imshow(I_sinusoid) title('sinusoid') Изображение 8: Применение бочкообразных преобразований. % Радиальные бочкообразные искажения xt=xi(:)-imid; yt=yi(:)-imid; [theta, r]=cart2pol(xt, yt); a=.001; % Амплитуда кубического выражения. s=r+a*r.^3; [ut, vt]=pol2cart(theta, s); u=reshape(ut, size(xi))+imid; v=reshape(vt, size(yi))+imid; tmap_B=cat(3, u, v); I_barrel=tformarray(I, [], resamp, [2 1], [1 2], [], tmap_B, .3); subplot(338) imshow(I_barrel) title('barrel') Изображение 9: Применение инверсных бочкообразных преобразований. % Радиальные инверсные бочкообразные искажения xt=xi(:)-imid; yt=yi(:)-imid; [theta,r]=cart2pol(xt, yt); a=-0005; % Амплитуда при кубических преобразованиях. s=r+a*r.^3; [ut, vt]=pol2cart(theta, s); u=reshape(ut, size(xi))+imid; v=reshape(vt, size(yi))+imid; tmap_B=cat(3, u, v); I_pin=tformarray(I, [], resamp, [2 1], [1 2], [], tmap_B, .3); subplot(339) imshow(I_pin) title('pin cushion') |
Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
|
||
На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro | ||
E-mail: | ||
Информация на сайте была обновлена 11.05.2004 |
Copyright 2001-2004 SoftLine Co Наши баннеры |