inpaintCoherent

Восстановите определенные области изображений с помощью когерентности основанное на транспорте изображение inpainting

Описание

пример

J = inpaintCoherent(I,mask) восстанавливает определенные области во входном изображении с помощью транспорта когерентности базирующийся inpainting метод. mask логическое изображение, которое обозначает целевые области в изображении, чтобы быть заполненным через inpainting.

пример

J = inpaintCoherent(I,mask,Name,Value) задает дополнительные inpainting опции с помощью одного или нескольких аргументов значения имени.

Примеры

свернуть все

Считайте изображение, чтобы быть inpainted в рабочую область. Это изображение содержит текстовые оверлейные программы, которые будут удалены.

I = imread('overlayimage.png');

Считайте рисунок маски в рабочую область. Этот рисунок маски содержит overlayed текстовые области, существующие в изображении, чтобы быть inpainted.

mask = imread('text.png');

Отобразите изображение, чтобы быть inpainted и его соответствующим рисунком маски.

montage({I,mask});
title(['Image to Be Inpainted','   |   ','Mask for Inpainting'])

Figure contains an axes. The axes with title Image to Be Inpainted | Mask for Inpainting contains an object of type image.

Inpaint оригинальное изображение путем удаления текстовых оверлейных программ.

J = inpaintCoherent(I,mask);

Отобразите оригинальное изображение и изображение inpainted.

montage({I,J});
title(['Image to Be Inpainted','    |    ','Inpainted Image'])

Figure contains an axes. The axes with title Image to Be Inpainted | Inpainted Image contains an object of type image.

Считайте изображение, чтобы быть inpainted в рабочую область.

I = imread('coloredChips.png');

Отобразите изображение.

figure
imshow(I,[])

Используйте drawcircle функционируйте, чтобы выбрать круговую видимую область (ROI) для inpainting. Используйте Center и Radius пары "имя-значение", чтобы задать местоположение ROI.

h = drawcircle('Center',[130,42],'Radius',40);

Figure contains an axes. The axes contains 2 objects of type image, images.roi.circle.

Выберите Multiple ROIs for Inpainting

Можно также выбрать несколько ROI итеративно.

Установите число регионов быть inpainted к 6.

numRegion = 6;

Задайте центр и радиусы для каждой области.

roiCenter = [130 42;433 78;208 108;334 124;434 167;273 58];
roiRadius = [40 50 40 40 40 30];

Выберите несколько круговых ROI итеративно путем определения drawcircle Center и Radius пары "имя-значение".

roi = cell([numRegion,1]);
for i = 1:numRegion
    c = roiCenter(i,:);
    r = roiRadius(i);
    h = drawcircle('Center',c,'Radius',r);
    roi{i} = h;
end

Figure contains an axes. The axes contains 8 objects of type image, images.roi.circle.

Используйте createMask функция, чтобы сгенерировать маску от выбранных ROI.

mask = zeros(size(I,1),size(I,2));
for i = 1:numRegion
    newmask = createMask(roi{i});
    mask = xor(mask,newmask);
end

Отобразите изображение, чтобы быть inpainted и его соответствующим рисунком маски.

montage({I,mask});
title(['Image to Be Inpainted','   |   ','Mask for Inpainting'])

Figure contains an axes. The axes with title Image to Be Inpainted | Mask for Inpainting contains an object of type image.

Удалите объекты в ROI через inpainting. Задайте стандартное отклонение 0,5 и inpainting радиус 1.

J = inpaintCoherent(I,mask,'SmoothingFactor',0.5,'Radius',1);

Отобразите оригинальное изображение и изображение inpainted.

montage({I,J});
title(['Image to Be Inpainted','    |    ','Inpainted Image']);

Figure contains an axes. The axes with title Image to Be Inpainted | Inpainted Image contains an object of type image.

Входные параметры

свернуть все

Отобразите к inpaint в виде полутонового изображения размера m-by-n или цветное изображение RGB размера m-by-n-by-3.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Пространственная маска целевых областей в виде 2D бинарного изображения размера m-by-n, где m и n являются размерностями входа, отображает I. Ненулевые пиксели в mask составьте целевые области, чтобы быть заполненными через inpainting.

Примечание

Типы данных: логический

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: J = inpaintCoherent(I,mask,'Radius',7)

Стандартное отклонение Гауссова фильтра в виде разделенной запятой пары, состоящей из 'SmoothingFactor' и положительное число. Это значение используется для расчета шкалы Гауссовых фильтров при оценке направления когерентности.

Радиус Inpainting в виде разделенной запятой пары, состоящей из 'Radius' и положительное целое число. inpainting радиус обозначает радиус круговой области окружения, сосредоточенной на пикселе, чтобы быть inpainted.

Выходные аргументы

свернуть все

Изображение Inpainted, возвращенное как полутоновое изображение или цветное изображение RGB, одного размера и тип данных как входное изображение I.

Советы

  • Результаты inpainting зависят от спецификации пары "имя-значение". Можно изменить значения 'Radius' и 'SmoothingFactor' для варьировавшихся результатов.

  • Каждый ROI в бинарном рисунке маски должен быть достаточно большим, чтобы заключить соответствующую область в изображение, чтобы быть inpainted.

Алгоритмы

Транспорт когерентности базирующийся inpainting метод является основанным на пикселе подходом для удаления объектов и заполнения областей в изображениях [1]. Inpainting выполняется, внутрь начиная с граничных пикселей целевой области. inpainting значение для пикселя оценивается от его когерентных соседних пикселей с известными значениями. Включенные шаги получены в итоге можно следующим образом:

  1. Идентифицируйте целевые области от входного изображения, чтобы быть заполненными или inpainted. Сгенерируйте бинарную маску размера то же самое как входное изображение. Ненулевые пиксели в рисунке маски должны содержать целевые области, чтобы быть inpainted.

    Порядок, в котором пиксели в целевой области являются inpainted, вычисляется от их Евклидова расстояния до контура целевой области.

  2. inpainting значение для пикселя в целевой области является взвешенным средним известных пиксельных значений в его inpainting радиусе. Известные пиксели вдоль направления когерентности присвоены более высокое значение веса, чем несвязные соседние пиксели. Направление когерентности оценивается при помощи тензора структуры.

Ссылки

[1] Ф. Борнеманн и Т. Мэрз. "Быстро Отобразите Inpainting На основе Транспорта Когерентности". Журнал Математической Обработки изображений и Видения. Издание 28, 2007, стр 259–278.

Расширенные возможности

Смотрите также

| | |

Введенный в R2019a