imdiffusefilt

Анизотропная фильтрация диффузии изображений

Синтаксис

J = imdiffusefilt(I)
J = imdiffusefilt(I,Name,Value)

Описание

пример

J = imdiffusefilt(I) применяет анизотропную фильтрацию диффузии, чтобы отобразить I и возвращает результат в J.

пример

J = imdiffusefilt(I,Name,Value) пары "имя-значение" использования, чтобы изменить поведение анизотропного алгоритма диффузии.

Примеры

свернуть все

Считайте изображение в рабочую область и отобразите ее.

I = imread('cameraman.tif');
imshow(I)
title('Original Image')

Сглаживайте изображение с помощью анизотропной диффузии. Для сравнения также сглаживайте изображение с помощью Гауссова размывания. Настройте стандартное отклонение sigma Гауссова ядра сглаживания так, чтобы текстурированные области, такие как трава, сглаживались подобная сумма для обоих методов.

Idiffusion = imdiffusefilt(I);
sigma = 1.2;
Igaussian = imgaussfilt(I,sigma);

Отобразите результаты.

montage({Idiffusion,Igaussian},'ThumbnailSize',[])
title('Smoothing Using Anisotropic Diffusion (Left) vs. Gaussian Blurring (Right)')

Анизотропная диффузия сохраняет резкость ребер лучше, чем Гауссово размывание.

Считайте полутоновое изображение, затем примените сильный Гауссов шум к нему. Отобразите шумное изображение.

I = imread('pout.tif');
noisyImage = imnoise(I,'gaussian',0,0.005);
imshow(noisyImage)
title('Noisy Image')

Вычислите структурный индекс подобия (SSIM), чтобы измерить качество шумного изображения. Чем ближе значение SSIM к 1, тем лучше изображение соглашается с бесшумным ссылочным изображением.

n = ssim(I,noisyImage);
disp(['The SSIM value of the noisy image is ',num2str(n),'.'])
The SSIM value of the noisy image is 0.26556.

Уменьшайте шум с помощью анизотропной диффузии. Во-первых, попробуйте параметры по умолчанию за анизотропный фильтр диффузии и отобразите результат.

B = imdiffusefilt(noisyImage);
imshow(B)
title('Anisotropic Diffusion with Default Parameters')

nB = ssim(I,B);
disp(['The SSIM value using default anisotropic diffusion is ',num2str(nB),'.'])
The SSIM value using default anisotropic diffusion is 0.65665.

Изображение все еще ухудшается шумом, поэтому совершенствуйте фильтр. Выберите квадратичный метод проводимости, потому что изображение характеризуется больше широкими однородными областями, чем высококонтрастными ребрами. Оцените оптимальный порог градиента и количество итераций при помощи функции imdiffuseest. Отобразите получившееся изображение.

[gradThresh,numIter] = imdiffuseest(noisyImage,'ConductionMethod','quadratic');
C = imdiffusefilt(noisyImage,'ConductionMethod','quadratic', ...
    'GradientThreshold',gradThresh,'NumberOfIterations',numIter);
imshow(C)
title('Anisotropic Diffusion with Estimated Parameters')

nC = ssim(I,C);
disp(['The SSIM value using quadratic anisotropic diffusion is ',num2str(nC),'.'])
The SSIM value using quadratic anisotropic diffusion is 0.88135.

Шум менее очевиден в получившемся изображении. Значение SSIM, которое ближе к 1, подтверждает, что качество изображения улучшилось.

Загрузите шумный 3-D полутоновый объем MRI.

load mristack

Выполните осведомленное о ребре шумоподавление на объеме с помощью анизотропной диффузии. Чтобы предотвратить сверхсглаживание низкоконтрастных функций в мозгу, сократите число итераций от номера по умолчанию, 5. Компромисс - то, что меньше шума удалено.

diffusedImage = imdiffusefilt(mristack,'NumberOfIterations',3);

Чтобы сравнить шумное изображение и отфильтрованное изображение подробно, отобразите десятый срез обоих.

imshowpair(mristack(:,:,10),diffusedImage(:,:,10),'montage')
title('Noisy Image (Left) vs. Anisotropic-Diffusion-Filtered Image (Right)')

Вычислите счет Средства анализа качества изображения естественности (NIQE), усредненный по всем срезам в объеме. Счет NIQE обеспечивает количественные показатели качества изображения, которое не требует ссылочного изображения. Понизьтесь очки NIQE отражают лучшее перцепционное качество изображения.

nframes = size(mristack,3);
m = 0;
d = 0;
for i = 1:nframes
    m = m + niqe(mristack(:,:,i));
    d = d + niqe(diffusedImage(:,:,i));
end
mAvg = m/nframes;
dAvg = d/nframes;
disp(['The NIQE score of the noisy volume is ',num2str(mAvg),'.'])
The NIQE score of the noisy volume is 5.7794.
disp(['The NIQE score using anisotropic diffusion is ',num2str(dAvg),'.'])
The NIQE score using anisotropic diffusion is 4.1391.

Счет NIQE сопоставим с наблюдением за уменьшаемым шумом в отфильтрованном изображении.

Входные параметры

свернуть все

Отобразите, чтобы отфильтровать, заданный как 2D полутоновое изображение размера m-by-n или 3-D полутоновый объем размера m-by-n-by-k.

Примечание

Чтобы применить анизотропную фильтрацию диффузии к цветному изображению, используйте imdiffusefilt на каждом цветовом канале независимо.

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

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: imdiffusefilt(I,'NumberOfIterations',4,'Connectivity','minimal') выполняет анизотропную диффузию на изображении I, с помощью 4 итераций и минимальной возможности соединения.

Порог градиента, заданный как пара, разделенная запятой, состоящая из 'GradientThreshold' и числового скаляра или числового вектора длины NumberOfIterations. Значение GradientThreshold управляет процессом проводимости путем классификации значений градиента как фактическое ребро или как шум. Увеличение значения GradientThreshold сглаживает изображение больше. Значение по умолчанию составляет 10% динамического диапазона изображения. Можно использовать функцию imdiffuseest, чтобы оценить подходящее значение GradientThreshold.

Количество итераций, чтобы использовать в диффузионном процессе, заданном как пара, разделенная запятой, состоящая из 'NumberOfIterations' и положительного целого числа. Можно использовать функцию imdiffuseest, чтобы оценить подходящее значение NumberOfIterations.

Возможность соединения пикселя его соседям, заданным как пара, разделенная запятой, состоящая из 'Connectivity' и одно из этих значений:

  • 'maximal' — Рассматривает 8 самых близких соседей к 2D изображениям и 26 самых близких соседей к 3-D изображениям

  • 'minimal' — Рассматривает 4 самых близких соседей к 2D изображениям и 6 самых близких соседей к 3-D изображениям

Метод проводимости, заданный как пара, разделенная запятой, состоящая из 'ConductionMethod' и 'exponential' или 'quadratic'. Экспоненциальная диффузия способствует высококонтрастным ребрам по низкоконтрастным ребрам. Квадратичная диффузия способствует широким областям по меньшим областям.

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

свернуть все

Отфильтрованное диффузией изображение, возвращенное как числовой массив, одного размера и тип данных как входное изображение, I.

Ссылки

[1] Perona, P. и Дж. Малик. "Пробел шкалы и обнаружение ребра с помощью анизотропной диффузии". IEEE® Transactions согласно Анализу Шаблона и Искусственному интеллекту. Издание 12, № 7, июль 1990, стр 629–639.

[2] Gerig, G., О. Каблер, Р. Кикинис и Ф. А. Джолесз. "Нелинейная анизотропная фильтрация данных MRI". Транзакции IEEE на Медицинской Обработке изображений. Издание 11, № 2, июнь 1992, стр 221–232.

Введенный в R2018a

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