imflatfield

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

Синтаксис

J = imflatfield(I,sigma)
J = imflatfield(I,sigma,mask)
J = imflatfield(___,'FilterSize',filterSize)

Описание

пример

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