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