inpaintCoherent

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

Синтаксис

J = inpaintCoherent(I,mask)
J = inpaintCoherent(___,Name,Value)

Описание

пример

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

пример

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

Примеры

свернуть все

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

I = imread('overlayimage.png');

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

mask = imread('text.png');

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

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

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

J = inpaintCoherent(I,mask);

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

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

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

I = imread('coloredChips.png');

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

figure
imshow(I,[])

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

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

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

Можно также выбрать несколько КОРОЛЕЙ итеративно.

Определите номер областей, чтобы быть inpainted к 6.

numRegion = 6;

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

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

Выберите несколько круговых КОРОЛЕЙ итеративно путем определения Center drawcircle и пар "имя-значение" 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

Используйте функцию createMask, чтобы сгенерировать маску от выбранных КОРОЛЕЙ.

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

Удалите объекты в КОРОЛЯХ через 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']);

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

свернуть все

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

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

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

|

Введенный в R2019a