Анизотропная фильтрация диффузии изображений
Считайте изображение в рабочую область и отобразите ее.
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 сопоставим с наблюдением за уменьшаемым шумом в отфильтрованном изображении.
I
— Отобразите, чтобы отфильтроватьОтобразите, чтобы отфильтровать в виде 2D полутонового изображения размера 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
— Количество итераций
(значение по умолчанию) | положительное целое числоКоличество итераций, чтобы использовать в диффузионном процессе в виде разделенной запятой пары, состоящей из 'NumberOfIterations'
и положительное целое число. Можно использовать imdiffuseest
функционируйте, чтобы оценить подходящее значение NumberOfIterations
.
Connectivity
— Возможность соединения'maximal'
(значение по умолчанию) | 'minimal'
Возможность соединения пикселя его соседям в виде разделенной запятой пары, состоящей из 'Connectivity'
и одно из этих значений:
'maximal'
— Рассматривает 8 самых близких соседей к 2D изображениям и 26 самых близких соседей к 3-D изображениям
'minimal'
— Рассматривает 4 самых близких соседей к 2D изображениям и 6 самых близких соседей к 3-D изображениям
ConductionMethod
— Метод проводимости'exponential'
(значение по умолчанию) | 'quadratic'
Метод проводимости в виде разделенной запятой пары, состоящей из 'ConductionMethod'
и 'exponential'
или 'quadratic'
. Экспоненциальная диффузия способствует высококонтрастным ребрам по низкоконтрастным ребрам. Квадратичная диффузия способствует широким областям по меньшим областям.
J
— Отфильтрованное диффузией изображениеОтфильтрованное диффузией изображение, возвращенное как числовой массив, одного размера и тип данных как входное изображение, I
.
[1] Perona, P. и Дж. Малик. "Пробел шкалы и обнаружение ребра с помощью анизотропной диффузии". IEEE® Транзакции согласно Анализу Шаблона и Искусственному интеллекту. Издание 12, № 7, июль 1990, стр 629–639.
[2] Gerig, G., О. Каблер, Р. Кикинис и Ф. А. Джолесз. "Нелинейная анизотропная фильтрация данных MRI". Транзакции IEEE на Медицинской Обработке изображений. Издание 11, № 2, июнь 1992, стр 221–232.
imdiffuseest
| imfilter
| imgaussfilt
| imguidedfilter
| locallapfilt
| imnlmfilt
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.