Быстрая локальная лапласианская фильтрация изображений
использует пары имя-значение для управления расширенными аспектами фильтра.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.1464
Теперь обработайте изображение и отобразите его.
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.6676
Обработать изображение с 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.2016
Обратите внимание на улучшение 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 - Изображение для фильтрацииИзображение для фильтрации, указанное как 2-D изображение в оттенках серого или 2-D изображение в цветном цвете.
Типы данных: 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 - Динамический диапазон1 (по умолчанию) | неотрицательное числоДинамический диапазон, заданный как неотрицательное число. Типичные значения бета-версии находятся в диапазоне [0, 5]. beta влияет на динамический диапазон A.
| Стоимость | Описание |
|---|---|
beta меньше, чем 1 | Уменьшает амплитуду краев изображения, эффективно сжимая динамический диапазон без влияния на детали. |
beta больше, чем 1 | Расширяет динамический диапазон изображения. |
beta равно 1 | Динамический диапазон изображения остается неизменным. Это значение по умолчанию. |
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'ColorMode','separate''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 - Отфильтрованное изображениеОтфильтрованное изображение, возвращаемое в виде числового массива того же размера и типа данных, что и входное изображение, A.
[1] Париж, Сильвен, Самуэль В. Хасинофф и Ян Кауц. Локальные лапласианские фильтры: обработка изображения с учетом границ с помощью лапласианской пирамиды, ACM Trans. Graph. 30.4 (2011): 68.
[2] Обри, Матье и др. Быстрые локальные лапласианские фильтры: Теория и приложения. Транзакции ACM по графике (TOG) 33.5 (2014): 167.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.