Анизотропная диффузионная фильтрация изображений
Прочтите изображение в рабочую область и отобразите его.
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.