Анизотропная диффузионная фильтрация изображений
Прочтите изображение в рабочую область и отобразите его.
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 полутоновый объем МРТ.
load mristackВыполните краевое шумоподавление по объему с помощью анизотропной диффузии. Чтобы предотвратить чрезмерное сглаживание низкоконтрастных функций в мозге, уменьшите количество итераций от числа по умолчанию 5. Компромисс заключается в том, что меньше шума удаляется.
diffusedImage = imdiffusefilt(mristack,'NumberOfIterations',3);Чтобы подробно сравнить шумное изображение и отфильтрованное изображение, отобразите десятый срез обоих.
imshowpair(mristack(:,:,10),diffusedImage(:,:,10),'montage') title('Noisy Image (Left) vs. Anisotropic-Diffusion-Filtered Image (Right)')

Вычислите счет Naturalness Image Evaluator (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 согласуется с наблюдением уменьшенного шума в фильтрованном изображении.
I - Изображение для фильтрацииИзображение для фильтрации, заданное как 2-D полутоновое изображение размера m -by- n или 3-D полутонового объема размера m -by- n -by- k.
Примечание
Чтобы применить анизотропную диффузионную фильтрацию к цветному изображению, используйте imdiffusefilt на каждом цветовом канале независимо.
Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
imdiffusefilt(I,'NumberOfIterations',4,'Connectivity','minimal') выполняет анизотропную диффузию на изображении I, с использованием 4 итераций и минимальной связности.'GradientThreshold' - Порог градиентаПорог градиента, заданное как разделенная разделенными запятой парами, состоящая из 'GradientThreshold' и числовой скаляр или числовой вектор длины NumberOfIterations. Значение GradientThreshold управляет процессом проводимости путем классификации значений градиента как фактического ребра или как шума. Увеличение значения GradientThreshold сглаживает изображение больше. Значение по умолчанию является 10% от динамической области значений изображения. Вы можете использовать imdiffuseest функция для оценки подходящего значения GradientThreshold.
'NumberOfIterations' - Количество итераций5 (по умолчанию) | положительное целое числоКоличество итераций для использования в процессе диффузии, заданное как разделенная разделенными запятой парами, состоящая из 'NumberOfIterations' и положительное целое число. Вы можете использовать imdiffuseest функция для оценки подходящего значения NumberOfIterations.
'Connectivity' - Связь'maximal' (по умолчанию) | 'minimal'Связь пикселя с его соседями, заданная как разделенная разделенными запятой парами, состоящая из 'Connectivity' и одно из следующих значений:
'maximal' - Рассматривает 8 ближайших соседей для 2-D изображений и 26 ближайших соседей для 3-D изображений
'minimal' - Рассматривает 4 ближайших соседа для 2-D изображений и 6 ближайших соседей для 3-D изображений
'ConductionMethod' - Метод проводимости'exponential' (по умолчанию) | 'quadratic'Метод проводимости, заданный как разделенная разделенными запятой парами, состоящая из 'ConductionMethod' и 'exponential' или 'quadratic'. Экспоненциальная диффузия благоприятствует высококонтрастным ребрам по сравнению с низкоконтрастными ребрами. Квадратичная диффузия благоприятствует широким областям по сравнению с небольшими областями.
J - Диффузионно-фильтрованное изображениеОтфильтрованное при диффузии изображение, возвращенное как числовой массив того же размера и типа данных, что и входа изображение I.
[1] Перона, П. и Й. Малик. «Масштабное пространство и краевое обнаружение с помощью анизотропной диффузии». IEEE® Транзакции по анализу шаблонов и машинному анализу. Том 12, № 7, июль 1990, стр. 629-639.
[2] Gerig, G., O. Kubler, R. Kikinis, and F. A. Jolesz. Нелинейная анизотропная фильтрация данных МРТ. Транзакции IEEE по медицинской визуализации. Том 11, № 2, июнь 1992, стр. 221-232.
imdiffuseest | imfilter | imgaussfilt | imguidedfilter | imnlmfilt | locallapfilt
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.