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

В этом примере показано, как задать значения заливки, используемые 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)

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

| |

Похожие темы