Задайте значения заливки в геометрическом преобразовании Вывод

Этот пример показывает, как задать значения заливки, используемые imwarp, когда это выполняет геометрическое преобразование. Когда вы выполняете преобразование, часто существуют пиксели в выходном изображении, которые не являются частью исходного входного изображения. Эти пиксели должны быть присвоены некоторое значение, названное значением заливки. По умолчанию imwarp обнуляет эти пиксели, и они отображаются как черные. Используя параметр FillValues, можно задать различный цвет. Если преобразовываемое изображение является полутоновым изображением, задайте скалярное значение, которое задает оттенок серого. Если преобразовываемое изображение является изображением RGB, можно использовать или скалярное значение или 1 3 вектор. Если вы задаете скаляр, imwarp использует тот оттенок серого для каждой плоскости изображения RGB. Если вы задаете 1 3 вектор, imwarp интерпретирует значения как значение цвета RGB.

Считайте изображение в рабочую область. Этот пример использует цветное изображение.

rgb = imread('onion.png');

Создайте матрицу преобразования. Эта матрица задает преобразование перевода.

xform = [ 1 0 0 
          0 1 0 
          40 40 1 ];

Создайте объект геометрического преобразования. Этот пример создает объект affine2d.

tform_translate = affine2d(xform)
tform_translate = 
  affine2d with properties:

    Dimensionality: 2
                 T: [3x3 double]

Создайте 2D ссылочный объект. Этот объект задает аспекты системы координат выходного пробела так, чтобы область, нуждающаяся в значениях заливки, была видима. По умолчанию imwarp измеряет выходное изображение, чтобы быть только достаточно большим, чтобы содержать целое преобразованное изображение, но не целое выходное координатное пространство.

Rout = imref2d(size(rgb)); 
Rout.XWorldLimits(2) = Rout.XWorldLimits(2)+40; 
Rout.YWorldLimits(2) = Rout.YWorldLimits(2)+40; 
Rout.ImageSize = Rout.ImageSize+[40 40];

Выполните преобразование с функцией imwarp.

cb_rgb = imwarp(rgb,tform_translate,'OutputView',Rout);
figure, imshow(cb_rgb)

Теперь выполните преобразование, на этот раз задав значение заливки.

cb_fill = imwarp(rgb,tform_translate,'FillValues',[187;192;57],...
    'OutputView',Rout);

figure, imshow(cb_fill)

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

| |

Похожие темы

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