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

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

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

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

                 T: [3x3 double]
    Dimensionality: 2

Создайте 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)

Figure contains an axes. The axes contains an object of type image.

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

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

figure, imshow(cb_fill)

Figure contains an axes. The axes contains an object of type image.

См. также

| |

Похожие темы