Быстро локальная Лапласова фильтрация изображений
пары "имя-значение" использования, чтобы управлять усовершенствованными аспектами фильтра.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.1304
Теперь обработайте изображение и отобразите его.
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.6238
Обработайте изображение с 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.1359
Отметьте улучшение 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 полутонового изображения или 2D изображения истинного цвета.
Типы данных: single | int8 | int16 | uint8 | uint16
sigma — Амплитуда реберАмплитуда ребер в виде неотрицательного номера. sigma должен быть в области значений [0, 1] для целочисленных изображений и для одного изображений, заданных в области значений [0, 1]. Для одного изображений, заданных в различной области значений [aB\sigma должен также быть в области значений [aB].
Типы данных: 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 имя аргумента и 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. 30.4 (2011): 68.
[2] Обри, Мэтью, и др. Быстрые локальные лапласовы фильтры: Теория и приложения. Транзакции на графике (TOG) ACM 33.5 (2014): 167.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.