inpaintExemplar

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

I = imread('liftingbody.png');

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

figure
imshow(I,[])

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

h = drawellipse('Center',[410 155],'SemiAxes',[95 20]);

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

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

mask = createMask(h);

Отобразите изображение, чтобы быть 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.

J = inpaintExemplar(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.

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

I = imread('forestdistorted.png');

Отобразите изображение. Изображение включает искаженные области, которые будут восстановлены с помощью inpainting.

figure
imshow(I,[])

Figure contains an axes. The axes contains an object of type image.

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

mask = imread('imagemask.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 оригинальное изображение, чтобы восстановить область искаженного изображения. Задайте порядок заливки и размер закрашенной фигуры для inpainting как tensor и 7, соответственно.

J = inpaintExemplar(I,mask,'FillOrder','tensor','PatchSize',7);

Отобразите оригинальное изображение и изображение 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 в виде 2D полутонового изображения или изображения RGB размера m-by-n.

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

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

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

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

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

Пример: J = inpaintExemplar(I,mask,'FillOrder','gradient')

Заполнение порядка в виде разделенной запятой пары, состоящей из 'FillOrder' и 'gradient' или 'tensor'. Заполняющий порядок обозначает приоритетную функцию, которая будет использоваться для вычисления приоритета закрашенной фигуры. Приоритетное значение закрашенной фигуры задает порядок заполнения для закрашенных фигур изображений в целевых областях.

Типы данных: char | string

Размер изображения исправляет в виде разделенной запятой пары, состоящей из 'PatchSize' и одна из этих опций.

  • Скаляр, s — закрашенная фигура изображений является квадратной областью размера s-by-s.

  • Вектор из формы [p s] — закрашенная фигура изображений является квадратной или прямоугольной областью размера p-by-s.

Размер закрашенной фигуры изображений по умолчанию 9 9. Закрашенная фигура изображений относится к области изображений, рассмотренной для соответствия закрашенной фигуры и inpainting.

Примечание

  • Размер закрашенной фигуры изображений должен быть, по крайней мере, 3х3 и всегда меньше, чем размер входного изображения.

Типы данных: double

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

свернуть все

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

Алгоритмы

Основанное на образце изображение inpainting алгоритм является основанным на закрашенной фигуре подходом, который восстанавливает целевые области во входном изображении при помощи этих шагов.

  1. Идентифицируйте целевые области от входного изображения.

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

  3. Идентифицируйте исходную область. Все области, исключая целевые области, во входном изображении включают исходную область. Таким образом, source region = input imagetarget regions.

  4. Для каждой закрашенной фигуры размера p-by-s сосредоточенный на граничном пикселе в целевой области, вычислите приоритет закрашенной фигуры при помощи метода тензора или градиента.

  5. Найдите закрашенную фигуру с максимальным приоритетом. Эта закрашенная фигура составляет целевую закрашенную фигуру, чтобы быть inpainted.

  6. Учитывая целевую закрашенную фигуру, ищите лучше всего соответствующую закрашенную фигуру в исходной области при помощи суммы квадратного различия (SSD).

  7. Скопируйте данные изображения от лучше всего соответствующей закрашенной фигуры до целевой закрашенной фигуры.

  8. Обновите входное изображение, маску, и исправьте приоритетное значение.

  9. Повторите шаги 4-8, пока целевые области не будут inpainted.

Ссылки

[1] Criminisi, A., П. Перес и К. Тояма. "Заполнение области и Удаление объекта Основанным на образце Изображением Inpainting". Транзакции IEEE на Обработке изображений. Издание 13, № 9, 2004, стр 1200–1212.

[2] Le Meur, O., М. Эбделли и К. Гиллемот. "Иерархическое Супер Разрешение Основанный Inpainting". Транзакции IEEE на Обработке изображений. Издание 22, № 10, 2013, стр 3779–3790.

Введенный в R2019b