|
|
||||||||||||||||||||||||||||||||
Вход |
Раздел "Обработка сигналов и изображений\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 Наши баннеры |