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). Инвертируйте маску так, чтобы фон был информация только для чтения. Отобразите маску, которая показывает информация только для чтения в белом цвете.

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

Совет

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

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

См. также

|

Введенный в R2018b
Для просмотра документации необходимо авторизоваться на сайте