В этом примере показано, как задать значения заливки, используемые 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)
Теперь выполните преобразование, на этот раз задав значение заливки.
cb_fill = imwarp(rgb,tform_translate,'FillValues',[187;192;57],... 'OutputView',Rout); figure, imshow(cb_fill)