exponenta event banner

imflatfield

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

Описание

пример

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

Figure contains an axes. The axes with title Distorted Image contains an object of type image.

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

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

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

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

Figure contains an axes. The axes with title Flat-Field Corrected Image, \sigma = 30 contains an object of type image.

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

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

Figure contains an axes. The axes with title Image with Vignetting contains an object of type image.

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

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

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

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

Figure contains an axes. The axes with title Flat-Field Corrected Image, \sigma = 20 contains an object of type image.

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

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

Figure contains an axes. The axes with title Image with Dark Corner contains an object of type image.

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

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

Figure contains an axes. The axes with title Flat-Field Corrected Image, \sigma = 25 contains an object of type image.

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

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

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

Figure contains an axes. The axes with title Background Mask contains an object of type image.

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

Iflatfield2 = imflatfield(I,sigma,maskBackground);

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

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

Figure contains an axes. The axes with title Flat-Field Corrected Background, \sigma = 25 contains an object of type image.

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

свернуть все

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

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

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

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

Двоичная маска, заданная как 2-D числовая или логическая матрица размером 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

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

свернуть все

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

Совет

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

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

См. также

|

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