imflatfield

2D коррекция плоского поля изображений

Описание

пример

J = imflatfield(I,sigma) применяет коррекцию плоского поля к шкале полутонов, или RGB отображают I. Коррекция использует Гауссово сглаживание со стандартным отклонением sigma аппроксимировать компонент штриховки I. Откорректированное изображение возвращено в J.

пример

J = imflatfield(I,sigma,mask) применяет коррекцию плоского поля, чтобы отобразить I только там, где бинарной маской является true. Где маской является false, выходное изображение J содержит немодифицированные значения изображения I.

J = imflatfield(___,'FilterSize',filterSize) задает размер Гауссова фильтра сглаживания.

Примеры

свернуть все

Загрузите полутоновое изображение. Это изображение имеет серьезное искажение штриховки на левой стороне и в верхнем правом углу.

I = imread('printedtext.png');
imshow(I)
title('Distorted Image')

Выполните коррекцию плоского поля.

sigma = 30;
Iflatfield = imflatfield(I,sigma);

Отобразите результат. Откорректированное изображение имеет более универсальную яркость.

imshow(Iflatfield)
title(['Flat-Field Corrected Image, \sigma = ',num2str(sigma)])

Загрузите цветное изображение, которое имеет изготовление виньеток или затемнение углов.

I = imread('fabric.png');
imshow(I)
title('Image with Vignetting')

Выполните коррекцию плоского поля.

sigma = 20;
Iflatfield = imflatfield(I,sigma);

Отобразите результат. Откорректированное изображение имеет более универсальную яркость.

imshow(Iflatfield)
title(['Flat-Field Corrected Image, \sigma = ',num2str(sigma)])

Загрузите цветное изображение. Это изображение имеет дефект штриховки в правом нижнем углу.

I = imread('hands1.jpg');
imshow(I)
title('Image with Dark Corner')

Попытайтесь применить коррекцию плоского поля к целому изображению.

sigma = 25;
Iflatfield = imflatfield(I,25);
imshow(Iflatfield)
title(['Flat-Field Corrected Image, \sigma = ',num2str(sigma)])

Дефект штриховки в углу корректируется, но центр изображения слишком ярок, и рука изменила цвет. Чтобы избежать этого артефакта прояснения, примените коррекцию плоского поля только к фону изображения.

Загрузите маску этого изображения. В исходной маске, maskHand, сегментированная рука является видимой областью (ROI). Инвертируйте маску так, чтобы фон был ROI. Отобразите маску, которая отображает ROI белым.

maskHand = imread('hands1-mask.png');
maskBackground = ~maskHand;
imshow(maskBackground)
title('Background Mask')

Выполните коррекцию плоского поля на фоне изображения с помощью маски maskBackground. Рука не является необходимой областью в маске, поэтому коррекция плоского поля не применяется к пикселям в руке.

Iflatfield2 = imflatfield(I,sigma,maskBackground);

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

imshow(Iflatfield2)
title(['Flat-Field Corrected Background, \sigma = ',num2str(sigma)])

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

свернуть все

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

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

Стандартное отклонение Гауссова фильтра сглаживания, заданного как положительное число или вектор с 2 элементами положительных чисел. Если вы задаете скаляр, то imflatfield использует квадратное Гауссово ядро.

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

Бинарная маска, заданная как 2D числовая или логическая матрица размера m-by-n. Для числового входа любые ненулевые пиксели считаются 1 TRUE).

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

Размер Гауссова фильтра, заданного как скалярный или вектор с 2 элементами положительных, нечетных целых чисел. Если вы задаете скаляр, то imflatfield использует квадратный фильтр. Размер фильтра по умолчанию 2*ceil (2*sigma)+1.

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

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

свернуть все

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

Советы

  • Когда I изображение RGB, затем imflatfield преобразует изображение в HSV-цветовое пространство с помощью rgb2hsv и применяет коррекцию плоского поля к HSV-каналу Значения. Изображение преобразовано назад в цветовое пространство RGB при помощи hsv2rgb.

  • Если вы задаете mask, затем imflatfield расширяет маску и заполняет границы изображения, чтобы уменьшать артефакты ребра во время оценки плоского поля.

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

|

Введенный в R2018b