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