Выполните простое 2D преобразование перевода

Этот пример показывает, как выполнить простое аффинное преобразование, названное переводом. В переводе вы переключаете изображение в координатном пространстве путем добавления заданного значения в x-и y-координаты. (Можно также использовать функцию imtranslate, чтобы выполнить перевод.)

Считайте изображение, которое будет преобразовано. Этот пример создает изображение шахматной доски с помощью функции checkerboard.

cb = checkerboard;
imshow(cb)

Получите пространственную информацию ссылки об изображении. Эта информация полезна когда это необходимо, чтобы отобразить результат преобразования.

cb_ref = imref2d(size(cb))
cb_ref = 
  imref2d with properties:

           XWorldLimits: [0.5000 80.5000]
           YWorldLimits: [0.5000 80.5000]
              ImageSize: [80 80]
    PixelExtentInWorldX: 1
    PixelExtentInWorldY: 1
    ImageExtentInWorldX: 80
    ImageExtentInWorldY: 80
       XIntrinsicLimits: [0.5000 80.5000]
       YIntrinsicLimits: [0.5000 80.5000]

Создайте 3х3 матрицу преобразования, названную T в этом примере, который задает преобразование. В этой матрице T(3,1) задает количество пикселей, чтобы переключить изображение в горизонтальном направлении, и T(3,2) задает количество пикселей, чтобы переключить изображение в вертикальном направлении.

T = [1 0 0; 0 1 0; 20 30 1]
T = 3×3

     1     0     0
     0     1     0
    20    30     1

Создайте объект геометрического преобразования, который задает перевод, который вы хотите выполнить. Поскольку преобразования перевода являются особым случаем аффинного преобразования, пример использует объект геометрического преобразования affine2d представлять перевод. Создайте объект affine2d путем передачи 3х3 матрицы преобразования, T, конструктору affine2d.

tform = affine2d(T);

Выполните преобразование. Вызовите функцию imwarp определение изображения, которое вы хотите преобразовать и объект геометрического преобразования. imwarp возвращает преобразованное изображение, cb_translated. Этот пример также возвращает дополнительный пространственный ссылочный объект, cb_translated_ref, который содержит пространственную информацию о ссылке о преобразованном изображении.

[cb_translated,cb_translated_ref] = imwarp(cb,tform);

Просмотрите оригинал и преобразованное изображение бок о бок с помощью функции subplot в сочетании с imshow. При просмотре переведенного изображения может казаться, что преобразование не имело никакого эффекта. Преобразованное изображение выглядит идентичным оригинальному изображению. Причина, что никакое изменение не очевидно в визуализации, состоит в том, потому что imwarp измеряет выходное изображение, чтобы быть только достаточно большим, чтобы содержать целое преобразованное изображение, но не целое выходное координатное пространство. Заметьте, однако, что координатные значения были изменены преобразованием.

figure;
subplot(1,2,1);
imshow(cb,cb_ref);
subplot(1,2,2);
imshow(cb_translated,cb_translated_ref)

Чтобы видеть полноту преобразованного изображения в том же отношении к источнику координатного пространства как оригинальное изображение, используйте imwarp с параметром 'OutputView', задавая пространственный ссылочный объект. Пространственный ссылочный объект задает размер выходного изображения и сколько из выходного координатного пространства включено в выходное изображение. Для этого пример делает копию пространственного ссылочного объекта сопоставленной с оригинальным изображением и изменяет пределы мировой координаты, чтобы разместить полный размер преобразованного изображения. Пример устанавливает пределы выходного изображения в мировых координатах, чтобы включать источник от входа

cb_translated_ref = cb_ref;
cb_translated_ref.XWorldLimits(2) = cb_translated_ref.XWorldLimits(2)+20;
cb_translated_ref.YWorldLimits(2) = cb_translated_ref.YWorldLimits(2)+20;

[cb_translated,cb_translated_ref] = imwarp(cb,tform,'OutputView',cb_translated_ref);

figure, subplot(1,2,1);
imshow(cb,cb_ref);
subplot(1,2,2);
imshow(cb_translated,cb_translated_ref)

Смотрите также

| |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте