Быстро локальная Лапласова фильтрация изображений
B = locallapfilt(I,sigma,alpha)
B = locallapfilt(I,sigma,alpha,beta)
B = locallapfilt(___,Name,Value)
пары "имя-значение" использования, чтобы управлять усовершенствованными аспектами фильтра. Имена аргумента могут быть сокращены.B
= locallapfilt(___,Name,Value
)
Импортируйте изображение RGB
A = imread('peppers.png');
Установите параметры фильтра, чтобы увеличить детали, меньшие, чем 0,4.
sigma = 0.4; alpha = 0.5;
Используйте быстро локальную Лапласовую фильтрацию
B = locallapfilt(A, sigma, alpha);
Отобразите исходные и отфильтрованные изображения бок о бок.
imshowpair(A, B, 'montage')
Локальная Лапласова фильтрация является в вычислительном отношении интенсивным алгоритмом. Чтобы ускорить обработку, locallapfilt
аппроксимирует алгоритм путем дискретизации области значений интенсивности во многие выборки, заданные параметром 'NumIntensityLevels
'. Этот параметр может использоваться, чтобы сбалансировать скорость и качество.
Импортируйте изображение RGB и отобразите его.
A = imread('peppers.png'); figure imshow(A) title('Original Image')
Используйте значение sigma
, чтобы обработать детали и значение alpha
, чтобы увеличить контраст, эффективно улучшая локальный контраст изображения.
sigma = 0.2; alpha = 0.3;
Используя меньшее количество выборок увеличивает скорость выполнения, но может произвести видимые артефакты, особенно в областях плоского контраста. Время функция с помощью только 20 уровней яркости.
t_speed = timeit(@() locallapfilt(A, sigma, alpha, 'NumIntensityLevels', 20))
t_speed = 0.1346
Теперь, обработайте изображение и отобразите его.
B_speed = locallapfilt(A, sigma, alpha, 'NumIntensityLevels', 20); figure imshow(B_speed) title(['Enhanced with 20 intensity levels in ' num2str(t_speed) ' sec'])
Большее число выборок приводит к лучше выглядящим результатам за счет большего количества времени вычислений. Время функция с помощью 100 уровней яркости.
t_quality = timeit(@() locallapfilt(A, sigma, alpha, 'NumIntensityLevels', 100))
t_quality = 0.6336
Обработайте изображение с 100 уровнями яркости и отобразите его:
B_quality = locallapfilt(A, sigma, alpha, 'NumIntensityLevels', 100); figure imshow(B_quality) title(['Enhancement with 100 intensity levels in ' num2str(t_quality) ' sec'])
Попытайтесь отличаться количество уровней яркости на ваших собственных изображениях. Попытка, также сглаживающая контраст (с alpha
> 1). Вы будете видеть, что оптимальное количество уровней яркости отличается для каждого изображения и меняется в зависимости от alpha
. По умолчанию locallapfilt
использует эвристику, чтобы сбалансировать скорость и качество, но это не может предсказать оптимальное значение для каждого изображения.
Импортируйте цветное изображение, уменьшайте его размер и отобразите его.
A = imread('car2.jpg'); A = imresize(A, 0.25); figure imshow(A) title('Original Image')
Установите параметры фильтра, чтобы существенно увеличить детали, меньшие, чем 0,3 (из нормированной области значений от 0 до 1).
sigma = 0.3; alpha = 0.1;
Давайте сравним два различных режима цветной фильтрации. Обработайте изображение путем фильтрации его интенсивности и путем фильтрации каждого цветового канала отдельно:
B_luminance = locallapfilt(A, sigma, alpha); B_separate = locallapfilt(A, sigma, alpha, 'ColorMode', 'separate');
Отобразите отфильтрованные изображения.
figure
imshow(B_luminance)
title('Enhanced by boosting the local luminance contrast')
figure
imshow(B_separate)
title('Enhanced by boosting the local color contrast')
Равный объем контрастного улучшения был применен к каждому изображению, но цвета более насыщаются когда установка 'ColorMode
' к 'separate
'.
Импортируйте изображение. Преобразуйте изображение в плавающую точку так, чтобы мы могли добавить искусственный шум более легко.
A = imread('pout.tif');
A = im2single(A);
Добавьте Гауссов шум с нулевым средним значением и 0,001 отклонениями.
A_noisy = imnoise(A, 'gaussian', 0, 0.001); psnr_noisy = psnr(A_noisy, A); fprintf('The peak signal-to-noise ratio of the noisy image is %0.4f\n', psnr_noisy);
The peak signal-to-noise ratio of the noisy image is 30.0234
Установите амплитуду деталей сглаживать, затем установите объем сглаживания применяться.
sigma = 0.1; alpha = 4.0;
Примените осведомленный о ребре фильтр.
B = locallapfilt(A_noisy, sigma, alpha);
psnr_denoised = psnr(B, A);
fprintf('The peak signal-to-noise ratio of the denoised image is %0.4f\n', psnr_denoised);
The peak signal-to-noise ratio of the denoised image is 32.3065
Отметьте улучшение PSNR изображения.
Отобразите все три изображения рядом. Заметьте, что детали сглаживаются, и резкие изменения интенсивности вдоль ребер неизменны.
figure subplot(1,3,1), imshow(A), title('Original') subplot(1,3,2), imshow(A_noisy), title('Noisy') subplot(1,3,3), imshow(B), title('Denoised')
Импортируйте изображение, измените размер его и отобразите его
A = imread('car1.jpg'); A = imresize(A, 0.25); figure imshow(A) title('Original Image')
Автомобиль грязен и покрыт маркировками. Давайте попытаемся стереть пыль и маркировки на теле. Установите амплитуду деталей сглаживать, и устанавливать большой объем сглаживания применяться.
sigma = 0.2; alpha = 5.0;
При сглаживании (alpha
> 1), фильтр приводит к высококачественным результатам с небольшим количеством уровней яркости. Установите небольшое количество уровней яркости обрабатывать изображение быстрее.
numLevels = 16;
Примените фильтр.
B = locallapfilt(A, sigma, alpha, 'NumIntensityLevels', numLevels);
Отобразите "чистый" автомобиль.
figure
imshow(B)
title('After smoothing details')
I
Отобразите, чтобы отфильтроватьОтобразите, чтобы отфильтровать, заданный как 2D полутоновое изображение размера m-by-n или 2D цветное изображение размера m-by-n-by-3.
Типы данных: single
| int8
| int16
| uint8
| uint16
\sigma
Амплитуда реберАмплитуда ребер, заданных как неотрицательный скаляр. sigma
должен быть в области значений [0, 1] для целочисленных изображений и для одного изображений, заданных в области значений [0, 1]. Для одного изображений, заданных в различной области значений [a
, b
], sigma
должен также быть в области значений [a
, b
].
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
\alpha
Сглаживание деталейСглаживание деталей, заданных как положительная скалярная величина. Типичные значения alpha
находятся в области значений [0.01, 10].
Значение | Описание |
---|---|
alpha меньше, чем 1 | Увеличивает детали входного изображения, эффективно улучшая локальный контраст изображения, не влияя на ребра или вводя ореолы. |
alpha , больше, чем 1 | Сглаживает детали во входном изображении при сохранении четких ребер |
alpha , равный 1 | Детали входного изображения оставлены без изменений. |
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
\beta
Динамический диапазонДинамический диапазон, заданный как неотрицательный скаляр. Типичные значения беты находятся в области значений [0, 5]. beta
влияет на динамический диапазон A
.
Значение | Описание |
---|---|
beta меньше, чем 1 | Уменьшает амплитуду ребер в изображении, эффективно сжимая динамический диапазон, не влияя на детали. |
beta , больше, чем 1 | Расширяет динамический диапазон изображения. |
beta , равный 1 | Динамический диапазон изображения оставлен без изменений. Это - значение по умолчанию. |
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми.
Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение.
Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
ColorMode
Метод раньше фильтровал изображения RGB'luminance'
(значение по умолчанию) | 'separate'
Метод раньше фильтровал изображения RGB, заданные как одно из следующих значений. Этот параметр не имеет никакого эффекта на полутоновые изображения.
Значение | Описание |
---|---|
'luminance' | locallapfilt преобразовывает изображение входа RGB в шкалу полутонов прежде, чем отфильтровать и повторно вводит цвет после фильтрации, которая изменяет контраст входного изображения, не влияя на цвета. |
'separate' | locallapfilt фильтрует каждый цветовой канал независимо. |
Типы данных: char | string
'NumIntensityLevels'
— Количество выборок интенсивности в динамическом диапазоне входного изображения'auto'
(значение по умолчанию) | положительное целое числоКоличество выборок интенсивности в динамическом диапазоне входного изображения, заданного как 'auto'
или положительное целое число. Более высокое количество выборок дает результаты ближе, чтобы потребовать локальную Лапласовую фильтрацию. Более низкий номер увеличивает скорость выполнения. Типичные значения находятся в области значений [10, 100]
. Если установлено в 'auto'
, locallapfilt
выбирает количество уровней яркости автоматически, чтобы сбалансировать качество и скорость на основе других параметров фильтра.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| string
B
Фильтрованное изображениеФильтрованное изображение, возвращенное как числовой массив тот же размер и класс как входное изображение.
[1] Париж, Сильвен, Сэмюэль В. Хэзинофф и Ян Коц. Локальные Лапласовы фильтры: осведомленная о ребре обработка изображений с Лапласовой пирамидой, Графиком Сделки ACM. 30.4 (2011): 68.
[2] Обри, Мэтью, и др. Быстрые локальные лапласовы фильтры: Теория и приложения. Транзакции на графике (TOG) ACM 33.5 (2014): 167.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.