|
|
|||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||
| Вход | |||||||||||||||||||||||||||||||||
|
Раздел "Обработка сигналов и изображений\Image Processing Toolbox"
И.М.Журавель "Краткий курс теории обработки изображений" В оглавление \ К следующему разделу \ К предыдущему разделу Обнаружение вращений и масштабных искажений на изображении Когда известна информация относительно искажений изображения, которые заключаются в вращении и изменении масштаба, тогда для обработки применяют функцию cp2tform. Эта функция служит для восстановления изображений. Содержание:
Шаг 2: Изменение размеров изображения. scale=0.6; J=imresize(I, scale); % Изменение масштаба. Шаг 3: Вращение изображения. theta=30; K=imrotate(J, theta); % Изменение угла. figure, imshow(K)
Шаг 4: Выбор контрольных точек.
Выберем контрольные точки с помощью Control Point Selection Tool.
input_points=[129.87 141.25; 112.63 67.75];
base_points=[135.26 200.15; 170.30 79.30];
cpselect(K,I, input_points, base_points);
Запишем контрольные точки, выбирая в меню File опцию Save Points to Workspace.
Также перезапишем переменные input_points и base_points.
Шаг 5: Предварительные преобразования.
Найдем структуру TFORM, которая согласуется с контрольными точками.
t=cp2tform(input_points, base_points, 'linear conformal');
После выполнения шагов 6 и 7, снова повторяются шаги 5-7,
только взамен опции 'linear conformal' используется 'affine'.
Это приводит к улучшению результатов.
Шаг 6: Определение масштаба и угла.
Структура TFORM содержит матрицу преобразований t.tdata.Tinv.
После того как стали известны типы искажений (вращение и масштабирование),
проводят операции по восстановлению масштаба и угла.
Let sc=s*cos(theta)
Let ss=s*sin(theta)
Тогда, Tinv=t.tdata.Tinv=[sc -ss 0;
ss sc 0;
tx ty 1]
где параметры tx и ty являются сдвигом по x и y соответственно.
ss=t.tdata.Tinv(2, 1);
sc=t.tdata.Tinv(1, 1);
scale_recovered=sqrt(ss*ss+sc*sc)
theta_recovered=atan2(ss, sc)*180/pi
scale_recovered=
0.6000
theta_recovered=
29.3699
Итак, значение параметра scale_recovered находится в пределах 0.6, а значение параметра theta_recovered около 30.
D=size(I);
recovered=imtransform(K, t, 'XData', [1 D(2)], 'YData', [1 D(1)]);
% Сравнение восстановленного изображения и исходного.
figure, imshow(I)
title('исходное изображение')
figure, imshow(recovered)
title('восстановленное изображение')
![]()
|
|
Всероссийская научная конференция "Проектирование научных и инженерных приложений в среде MATLAB" (май 2002 г.)
|
||
| На первую страницу \ Сотрудничество \ MathWorks \ SoftLine \ Exponenta.ru \ Exponenta Pro | ||
| E-mail: | ||
| Информация на сайте была обновлена 11.05.2004 |
Copyright 2001-2004 SoftLine Co Наши баннеры |
|