inpaintExemplar

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

I = imread('liftingbody.png');

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

figure
imshow(I,[])

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

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

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

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

mask = createMask(h);

Отобразите изображение, которое будет введено, и соответствующее ему изображение маски.

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.

Удалите объекты в информация только для чтения с помощью ввода.

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');

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

figure
imshow(I,[])

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

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

mask = imread('imagemask.png');

Отобразите изображение, которое будет введено, и соответствующее ему изображение маски.

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.

Введите оригинальное изображение, чтобы восстановить искаженную область изображения. Задайте порядок заливки и размер закрашенной фигуры для ввода как 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.

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

свернуть все

Изображение, которое будет введено, задается как 2-D полутоновое изображение или RGB-изображение размера m -by- n.

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

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

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

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

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

Примечание

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

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

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

свернуть все

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

Алгоритмы

Алгоритм ввода изображений на основе примеров является подходом, основанным на патче, который восстанавливает целевые области в вход изображении с помощью этих шагов.

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

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

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

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

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

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

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

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

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

Ссылки

[1] Criminisi, A., P. Perez, and K. Toyama. «Заполнение области и удаление объекта путем ввода изображений на основе примеров». Транзакции IEEE по обработке изображений. Том 13, № 9, 2004, с. 1200-1212.

[2] Le Meur, O., M. Ebdelli, and C. Guillemot. «Иерархическое супер Разрешение -Основанный-Inpainting». Транзакции IEEE по обработке изображений. Том 22, № 10, 2013, с. 3779-3790.

Введенный в R2019b