exponenta event banner

inpaintExemplar

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

I = imread('liftingbody.png');

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

figure
imshow(I,[])

Используйте drawellipse для выбора интересующей эллиптической области (ROI) для ввода. Используйте '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);

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

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 с помощью заливки.

J = inpaintExemplar(I,mask);

Отображение исходного изображения и введенного изображения.

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

Отображение исходного изображения и введенного изображения.

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, определенным как 2-е изображение оттенков серого или изображение RGB размера m на 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-е изображение оттенков серого или изображение RGB того же размера и типа данных как входное изображение I.

Алгоритмы

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

  1. Определение целевых областей по входному изображению.

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

  3. Определите исходную область. Все области, исключая целевые области, во входном изображении содержат исходную область. То есть исходная область = входное изображениецелевые области.

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

  5. Найдите исправление с максимальным приоритетом. Этот патч представляет собой целевой патч, который должен быть введен.

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

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

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

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

Ссылки

[1] Криминализи, А., П. Перес и К. Тояма. «Заполнение области и удаление объекта путем ввода изображения на основе примеров». Транзакции IEEE при обработке изображений. т. 13, № 9, 2004, стр. 1200-1212.

[2] Le Meur, O., М. Эбделли и C. Кайра. «Иерархический ввод на основе суперразрешения». Транзакции IEEE при обработке изображений. т. 22, № 10, 2013, стр. 3779-3790.

Представлен в R2019b