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