
pmi432 / LR07 / 2read / из Журавеля / 05.6 Улучшение изображений
.pdf
Image Processing Toolbox |
. 1 |
MATLAB.Exponenta
|
Семинары |
Тренинги |
Лицензирование |
Материалы |
Подписка |
Форум |
Регистрация |
Matlab |
Toolboxes
Simulink Запрос цены Пробная версия Запрос демонстрации Blocksets
Полезное
Вход
Анализ изображений \ Image Processing Toolbox
Улучшение изображений
Регулировка значений интенсивностей
Существует возможность установки значений интенсивностей на изображении с помощью функции imadjust, где указан диапазон интенсивностей результирующего изображения.
Рассмотрим пример увеличения контраста изображения с низким уровнем контрастности путем перераспределения значений данных на весь диапазон [0, 255].
I = imread('pout.tif');
J = imadjust(I);
Исходное изображение
imshow(J)
figure, imhist(J,64)
На рисунке отображено преобразованное изображение и его гистограмма. Отметим, что в результате усиление контраста изображения, гистограмма заполняет весь диапазон.
Преобразованное изображение и его гистограмма
Описание регулировки границ диапазона
Существует возможность описания диапазона исходных и результирующих значений с использованием функции imadjust. Для этого в функции imadjust в качестве аргумента указываются диапазоны в виде двух векторов. Первый вектор содержит наименьшее и наибольшее значение интенсивностей исходного изображения, которые будут отображены тем диапазоном яркостей, который указан во втором векторе.
Примечание.
Отметим, что значения интенсивностей должны находится в диапазоне между 0 и 1, независимо от формата изображения. Если изображение представлено в формате uint8, диапазон значений содержит 255 градаций, а для изображения в формате - 65535 градаций.
Например, уменьшение контраста изображения достигается за счет уменьшения диапазона интенсивностей. На изображении внизу, пальто человека слишком темное и на нем не видно деталей. Но это можно исправить с помощью функции imadjust, отобразив диапазон [0,51] исходного изображения в формате uint8 в диапазон [128,255] преобразованного изображения. Это преобразование значительно расширит динамический диапазон, и улучшит визуальное восприятие темных областей изображения. Отметим также, что все значения интенсивностей выше 51, будут отображаться как 255, т.е. белым цветом.
I = imread('cameraman.tif');
J = imadjust(I,[0 0.2],[0.5 1]);
http://matlab.exponenta.ru/imageprocess/book5/5_6.php |
08.11.2012 16:58:22 |

Image Processing Toolbox |
. 2 |
I = imread('cameraman.tif');
J = imadjust(I,[0 0.2],[0.5 1]); imshow(I)
figure, imshow(J)
Изображение после преобразования динамического диапазона
Установка ограничений автоматической коррекции
Обычно при использовании функции imadjust необходимо выполнить два основных действия:
1.Просмотреть гистограмму и определить границы значений интенсивностей.
2.Описать эти границы для дальнейшего использования в функции imadjust.
Более простой путь для описания этих границ заключается в использовании функции stretchlim.
Эта функция вычисляет гистограмму изображения и определяет границы корректировки диапазона автоматически. Функция stretchlim возвращает эти значения в виде вектора, который используется как аргумент в функции imadjust. Например,
I = imread('rice.png');
J = imadjust(I,stretchlim(I),[0 1]);
По умолчанию, функция stretchlim использует значения интенсивностей, которые представляют нижнюю 1% (0.01) и верхнюю 1% (0.99) часть диапазона в качестве границ регулировки.
Гамма коррекция
Функция imadjust отображает наименьшие значения еще меньшими, а наибольшие - еще большими. По умолчанию промежуточные значения отображаются линейно. Например, значения интенсивностей, которые находятся посредине диапазона интенсивностей исходного изображения соответствуют тем значениям интенсивностей, которые находятся посредине диапазона преобразованного изображения.
В функции imadjust можно указывать дополнительный аргумент, который описывает степень гамма коррекции. В зависимости от значения гаммы, зависимость между значениями исходного и преобразованного изображения может быть нелинейной. Поэтому значения интенсивностей, которые находятся посредине диапазона интенсивностей исходного изображения не соответствуют тем значениям интенсивностей, которые находятся посредине диапазона преобразованного изображения.
Параметр гамма может принимать значения от 0 до бесконечности. Если гамма равно 1 (по умолчанию), тогда преобразование линейное. Если гамма меньше 1, то диапазон с малыми значениями интенсивности сжимается, а диапазон с большими значениями интенсивности растягивается. Если гамма больше 1, то наоборот - диапазон с малыми значениями интенсивности растягивается, а диапазон с большими значениями интенсивности растягивается.
Сказанное выше продемонстрировано на рисунке. Три кривых преобразования показывают отображение значений интенсивностей при различных значениях гамма - меньше, равно и больше единицы. (На изображении x-координата представляет значения интенсивностей исходного изображения, а y-координата - значения интенсивностей результирующего изображения.)
Отображение трех различных установок гамма-коррекции
Рассмотрим пример гамма коррекции изображения. Отметим, что при использовании функции imadjust диапазоны данных исходного и результирующего изображений описаны в виде пустых матриц. Если они описаны таким образом, т.е. в виде пустых матриц, то функция imadjust использует весь диапазон [0,1]. Результат применения такого подхода показан на изображении.
[X,map] = imread('forest.tif') I = ind2gray(X,map);
J = imadjust(I,[],[],0.5); imshow(I)
figure, imshow(J)
Изображение до и после применения гамма коррекции
http://matlab.exponenta.ru/imageprocess/book5/5_6.php |
08.11.2012 16:58:22 |

Image Processing Toolbox |
. 3 |
Изображение до и после применения гамма коррекции
Контрастно-ограниченное адаптивное выравнивание гистограммы
В качестве альтернативы можно использовать функцию histeq, которая выполняет контрастно-ограниченную адаптивную гистограммную эквализацию с использование функции adapthisteq. Функция работает с целым изображением, а функция adapthisteq может работать с небольшими областями изображения. Контраст каждой части изображения повышается, что связано с изменением формы гистограммы. После выполнения выравнивания (эквализации), функция adapthisteq объединяет края локальных областей с применением билинейной интерполяции, исключая искусственно созданные границы.
Во избежание усиления шума на изображениях, можно использовать функцию adapthisteq со специальными параметрами для ограничения контраста, что особенно важно для гомогенных (однородных) областей.
Для иллюстрации рассмотрим использование функции adapthisteq при коррекции контраста на изображении. Исходное изображение имеет низкий контраст, большинство значений интенсивностей сосредоточено в середине диапазона. Функция adapthisteq выполняет равномерное распределение значений интенсивностей вдоль всего диапазона.
I = imread('pout.tif'); J = adapthisteq(I); imshow(I)
figure, imshow(J)
Изображение после обработки методом контрастно-ограниченного адаптивного выравнивания гистограммы (и его гистограмма)
Декорреляционное растяжение
Декорреляционное растяжение улучшает соотношение цветов на изображении с учетом корреляционных зависимостей. При улучшении изображений очень важно найти границу улучшения, чтобы чрезмерное улучшение не приводило к возникновению несуществующих деталей. Поэтому целесообразно применять метод декорреляционного растяжения, который реализовывает функция decorrstretch.
В большинстве случаев количество цветов в связке NBANDS на изображении равно трем. Функция decorrelation может применятся независимо от количества цветов в связке.
При преобразовании значений исходных цветов изображения диапазон отображения, в большинстве случаев, увеличивается. Интенсивности цветов каждого пикселя преобразуются в собственное цветовое пространство с ковариационной или корреляционной матрицей с размерностью NBANDSxNBANDS, растягиваются, выравниваются и трансформируются обратно.
Пример декорреляционного растяжения
Применим операции декорреляции и растяжения к некоторым изображениям из библиотеки, которая размещена в директории imdemos системы Matlab. Библиотека включает LANDSAT-изображение небольшой реки в Колорадо. Обработаем это изображение методом декорреляционного растяжения:
1. Изображение состоит из семи диапазонов, которые должны быть представлены тремя видимыми цветами:
A = multibandread('littlecoriver.lan', [512, 512, 7], ...
'uint8=>uint8', 128, 'bil', 'ieee-le', ...
{'Band','Direct',[3 2 1]});
2. Выполняем декорреляционное растяжение:
B = decorrstretch(A);
3. Визуализация результатов:
imshow(A); figure; imshow(B)
Сравним два изображения. На исходном изображении сильно преобладает фиолетовый (красно-синий) оттенок, а результирующее изображение имеет более растянутый цветовой диапазон.
http://matlab.exponenta.ru/imageprocess/book5/5_6.php |
08.11.2012 16:58:22 |

Image Processing Toolbox |
. 4 |
Изображение небольшой реки в Колорадо до (слева) и после (справа) декорреляционного растяжения
Покажем разброс цветов разных диапазонов изображения до и после декорреляции и выравнивания:
rA = A(:,:,1); gA = A(:,:,2); bA = A(:,:,3); figure, plot3(rA(:),gA(:),bA(:),'.'); grid('on')
xlabel('Red (Band 3)'); ylabel('Green (Band 2)'); ...
zlabel('Blue (Band 1)')
rB = B(:,:,1); gB = B(:,:,2); bB = B(:,:,3); figure, plot3(rB(:),gB(:),bB(:),'.'); grid('on')
xlabel('Red (Band 3)'); ylabel('Green (Band 2)'); ...
zlabel('Blue (Band 1)')
Разброс цветов разных диапазонов изображения до и после декорреляции и выравнивания
Дополнительное линейное растяжение контраста
Сейчас рассмотрим такое же преобразование, но речь будет идти о линейном растяжении контраста, которое применим после декорреляционного растяжения:
imshow(A); C = decorrstretch(A,'Tol',0.01); figure; imshow(C)
Сравним исходное и преобразованное изображения.
Изображение небольшой реки в Колорадо после декорреляционного растяжения и линейного растяжения контрастов
Линейное растяжение контрастов является еще одним дополнительным средством улучшения после растяжения цветового диапазона изображения. В нашем случае растяжение цветового диапазона касается каждой цветовой составляющей.
Для получения более детальной информации см. описание функции stretchlim.
Примечание.
http://matlab.exponenta.ru/imageprocess/book5/5_6.php |
08.11.2012 16:58:22 |

Image Processing Toolbox |
. 5 |
Примечание.
Линейное растяжение контраста можно применять как отдельную операцию после выполнения декорреляционного растяжения, используя функции stretchlim и imadjust. Это является одним из альтернативных путей, однако, часто не приводит к хорошим результатам для изображений, которые представлены в формате uint8 и uint16. Такой результат объясняется распределением пикселей в диапазоне [0 255] (или [0 65535]). Опции функции decorrstretch позволяют обойти это ограничение.
Удаление шума
Цифровые изображения подвержены воздействию различных типов шумов. Существует несколько основных причин появления шума, которые зависят также от способа формирования изображений. Например:
Если изображение получено путем сканирования фотографической пленки, то зерна пленки являются источником шума. Появление шума может объяснятся также повреждением самой пленки или вносится сканирующим устройством.
Если изображение захвачено в цифровом формате, то механизм формирования данных (CCD-детектор, квантирование) является источником шума.
Электронная передача данных изображения также может быть источником шума.
Приложение обеспечивает несколько путей полного или частичного устранения шума на изображениях. Для устранения различных видов шума разработаны различные методы. Среди них
1.Использование линейной фильтрации;
2.Использование медианной фильтрации;
3.Использование адаптивной фильтрации.
Для демонстрации эффекта от работы перечисленных выше методов в приложении существует функция imnoise, которая добавляет на изображение различные типы шума. Рассмотрим примеры использования этой функции.
Использование линейной фильтрации
Линейную фильтрацию можно использовать для удаления шумов определенного типа. Для этого годятся такие фильтры как усредняющий и фильтр Гаусса. Например, усредняющий фильтр используется для удаления зернистости на изображениях. Поскольку значение интенсивности каждого пикселя равно средней интенсивности пикселей окрестности, то это приводит к подавлению зернистости.
Использование медианной фильтрации
Медианная фильтрация похожа на использование усредняющего фильтра, где значение интенсивности каждого пикселя представляет собой усредненное значение интенсивностей пикселей соответствующей окрестности. Во многих случаях использование медианного фильтра при решении задач устранения шума является более эффективным, чем обычное усреднение. Применение медианной фильтрации приводит к меньшим искажениям границ, в сравнении с операцией усреднения. Функция medfilt2 выполняет медианную фильтрацию.
Примечание.
Медианная фильтрация является порядково-статистической фильтрацией и известна еще как ранговая фильтрация. Для более детальной информации см. описание функции ordfilt2.
Рассмотрим пример, в котором сравним использование усредняющего фильтра и функции medfilt2 для удаления шума типа "соль и перец". Влияние этого типа шума заключается в том, что случайно выбранные пиксели стают черными или белыми (т.е. им присваиваются экстремальные значения из существующего диапазона). В обеих случаях размер используемой окрестности равен 3x3.
1. Считывание изображения из файла и его визуализация.
I = imread('eight.tif'); imshow(I)
2. Добавление шума.
J = imnoise(I,'salt & pepper',0.02); figure, imshow(J)
3. Фильтрация зашумленного изображения с помощью усредняющего фильтра и визуализация результатов.
K = filter2(fspecial('average',3),J)/255;
http://matlab.exponenta.ru/imageprocess/book5/5_6.php |
08.11.2012 16:58:22 |

Image Processing Toolbox |
. 6 |
K = filter2(fspecial('average',3),J)/255; figure, imshow(K)
4.Использование медианного фильтра для удаления шума на изображении и визуализация результата. Как уже отмечалось, к преимуществам функции medfilt2 относится то, что удаление шума не приводит к размытию границ объектов изображения.
L = medfilt2(J,[3 3]); figure, imshow(K) figure, imshow(L)
Использование адаптивной фильтрации
В основе функции wiener2 лежит винеровский фильтр (один из типов линейного фильтра) для адаптивной локальной обработки изображений. Если значение среднеквадратического отклонения интенсивностей пикселей в данной локальной области большое, то wiener2 выполняет небольшое сглаживание. Если же это отклонение небольшое, то область сглаживания больше.
Этот подход часто бывает более эффективным, чем обычная линейная фильтрация. Преимущество адаптивный фильтра еще заключается в том, что он сохраняет края и другие высокочастотные части объектов изображения. Однако, винеровский фильтр требует большего времени для вычислений, чем линейный фильтр.
Функция wiener2 лучше работает с "белым" шумом, например гауссовским. Рассмотрим пример применения функции wiener2 к обработке изображения Сатурна, которое зашумлено гауссовым шумом. Для интерактивной демонстрации фильтрации шума можно использовать nrfiltdemo.
RGB = imread('saturn.png'); I = rgb2gray(RGB);
J = imnoise(I,'gaussian',0,0.005); K = wiener2(J,[5 5]);
imshow(J) figure, imshow(K)
Зашумленное изображение (слева) и изображение после фильтрации (справа)
Для демонстрации работы методов устранения шума используются изображения с различными видами зашумленности. Для формирования этих изображений используется функция imnoise. Кстати, изображения, приведенные в этом разделе, сформированы с использованием этой функции.
I Всероссийская научная конференция «Проектирование научных и инженерных приложений в среде MATLAB» (май 2002 г.)
http://matlab.exponenta.ru/imageprocess/book5/5_6.php |
08.11.2012 16:58:22 |

Image Processing Toolbox |
. 7 |
I Всероссийская научная конференция «Проектирование научных и инженерных приложений в среде MATLAB» (май 2002 г.) II Всероссийская научная конференция «Проектирование научных и инженерных приложений в среде MATLAB» (май 2004 г.)
III Всероссийская научная конференция «Проектирование научных и инженерных приложений в среде MATLAB» (октябрь 2007 г.) IV Всероссийская научная конференция «Проектирование научных и инженерных приложений в среде MATLAB» (май 2009 г.)
V Всероссийская научная конференция «Проектирование научных и инженерных приложений в среде MATLAB» (май 2011 г.)
На первую страницу \ Сотрудничество \ MathWorks \ Softline \ Контакты \ Вакансии |
||||||
Информация на сайте была обновлена 21.04.12 |
Copyright 2001–2012 Softline Co |
|||||
|
|
Наши баннеры |
||||
|
|
|
||||
|
|
|
|
|
|
|
|
|
HotLog |
|
|
Рейтин |
|
подарки – подарочные сертификаты |
|
|
|
|
|
|
|
|
|
|
|
|
http://matlab.exponenta.ru/imageprocess/book5/5_6.php |
08.11.2012 16:58:22 |