Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
1. ИЗМЕРЕНИЕ И ПРЕДСТАВЛЕНИЕ
ИНФОРМАЦИИ
1.1. ИНФОРМАЦИЯ И ЕЕ СВОЙСТВА
1.1.1. Информация и данные
Термин информация происходит от латинского informatio, что означает разъяснение, осведомление, изложение. С позиции материалистической философии информация
есть отражение реального мира с помощью сведений (сообщений). Сообщение - это
форма представления информации в виде речи, текста, изображения, цифровых данных,
графиков, таблиц и т.п. В широком смысле информация - это общенаучное понятие,
включающее в себя обмен сведениями между людьми, обмен сигналами между живой и
неживой природой, людьми и устройствами.
Информация - сведения об объектах и явлениях окружающей среды, их параметрах, свойствах и состоянии, которые уменьшают имеющуюся о них степень неопределенности, неполноты знаний.
Информатика рассматривает информацию как концептуально связанные между
собой сведения, данные, понятия, изменяющие наши представления о явлении или объекте окружающего мира. Наряду c информацией в информатике часто употребляется понятие данные. Покажем, в чем их отличие.
Данные могут рассматриваться как признаки или записанные наблюдения, которые
по каким-то причинам не используются, а только хранятся. В том случае, если появляется
возможность использовать эти данные для уменьшения неопределенности о чем-либо,
данные превращаются в информацию. Поэтому можно утверждать, что информацией являются используемые данные.
Пример 1.1. Напишите на листе десять номеров телефонов в виде последовательности десяти чисел и покажите их вашему другу. Он воспримет эти цифры как данные, так как они не предоставляют ему никаких сведений
Затем против каждого номера укажите название фирмы и род деятельности. Для
вашего друга непонятные цифры обретут определенность и превратятся из данных в информацию, которую он в дальнейшем мог бы использовать.
Одной из важнейших разновидностей информации является информация экономическая. Ее отличительная черта - связь с процессами управления коллективами людей, организацией. Экономическая информация сопровождает процессы производства,
распределения, обмена и потребления материальных благ и услуг. Значительная часть
ее связана с общественным производством и может быть названа производственной информацией.
Экономическая информация - овокупность сведений, отражающих социальноэкономические процессы и служащих для управления этими процессами и коллективами
людей в производственной и непроизводственной сфере.
При работе с информацией всегда имеется ее источник и потребитель (получатель). Пути и процессы, обеспечивающие передачу сообщений от источника информации
к ее потребителю, называются информационными коммуникациями.
Для потребителя информации очень важной характеристикой является ее адекватность.
Адекватность информации - это определенный уровень соответствия создаваемого с помощью полученной информации образа реальному объекту, процессу, явлению
и т.п.
В реальной жизни вряд ли возможна ситуация, когда вы сможете рассчитывать на
полную адекватность информации. Всегда присутствует некоторая степень неопределенности. От степени адекватности информации реальному состоянию объекта или процесса
зависит правильность принятия решений человеком.
Пример 1.2. Вы успешно закончили школу и хотите продолжить образование по
экономическому направлению. Поговорив с друзьями, вы узнаете, что подобную подготовку можно получить в разных вузах. В результате таких бесед вы получаете весьма
разноречивые сведения, которые не позволяют вам принять решение в пользу того или
иного варианта, т.е. полученная информация неадекватна реальному состоянию дел. Для
того чтобы получить более достоверные сведения, вы покупаете справочник для поступающих в вузы, из которого получаете исчерпывающую информацию. В этом случае
можно говорить, что информация, полученная вами из справочника, адекватно отражает
направления обучения в вузах и помогает вам определиться в окончательном выборе.
1.1.2. Формы адекватности информации
Адекватность информации может выражаться в трех формах: семантической, синтаксической, прагматической.
Синтаксическая адекватность. Она отображает формально-структурные характеристики информации и не затрагивает ее смыслового содержания. На синтаксическом
уровне учитываются тип носителя и способ представления информации, скорость передачи и обработки, размеры кодов представления информации, надежность и точность
преобразования этих кодов и т.п. Информацию, рассматриваемую только с синтаксических позиций, обычно называют данными, так как при этом не имеет значения смысловая
сторона. Эта форма способствует восприятию внешних структурных характеристик, т.е.
синтаксической стороны информации.
Семантическая (смысловая) адекватность. Эта форма определяет степень соответствия образа объекта и самого объекта. Семантический аспект предполагает учет
смыслового содержания информации. На этом уровне анализируются те сведения, которые отражает информация, рассматриваются смысловые связи. В информатике устанавливаются смысловые связи между кодами представления информации. Эта форма служит для формирования понятий и представлений, выявления смысла, содержания информации и ее обобщения.
Прагматическая (потребительская) адекватность. Она отражает отношение
информации и ее потребителя, соответствие информации цели управления, которая на
ее основе реализуется. Проявляются прагматические свойства информации только при
наличии единства информации (объекта), пользователя и цели управления. Прагматический аспект рассмотрения связан с ценностью, полезностью использования информации
при выработке потребителем решения для достижения своей цели. С этой точки зрения
анализируются потребительские свойства информации. Эта форма адекватности непосредственно связана с практическим использованием информации, с соответствием ее
целевой функции деятельности системы.
1.1.3. Меры информации
Классификация мер
Для измерения информации вводятся два параметра: количество информации I и
объем данных Vд.
Эти параметры имеют разные выражения и интерпретацию в зависимости от рассматриваемой формы адекватности. Каждой форме адекватности соответствует своя мера количества информации и объема данных (рис. 1.1).
Рис. 1.1. Меры информации
Синтаксическая мера информации
Эта мера количества информации оперирует с обезличенной информацией, не
выражающей смыслового отношения к объекту.
Объем данных Vд. в сообщении измеряется количеством символов (разрядов) в
этом сообщении. В различных системах счисления один разряд имеет различный вес и
соответственно меняется единица измерения данных:
в двоичной системе счисления единица измерения - бит (bit - binary digit - двоичный разряд);
Примечание. В современных ЭВМ наряду с минимальной единицей измерения
данных "бит" широко используется укрупненная единица измерения "байт", равная 8 бит.
в десятичной системе счисления единица измерения -дит (десятичный разряд).
Пример 1.3. Сообщение в двоичной системе в виде восьмиразрядного двоичного
кода 10111011 имеет объем данных Vд=8 бит.
Сообщение в десятичной системе в виде шестиразрядного числа 275903 имеет
объем данных Vд=6 дит.
Количество информации - на синтаксическом уровне невозможно определить
без рассмотрения понятия неопределенности состояния системы (энтропии системы).
Действительно, получение информации о какой-либо системе всегда связано с изменением степени неосведомленности получателя о состоянии этой системы. Рассмотрим это
понятие.
Пусть до получения информации потребитель имеет некоторые предварительные
(априорные) сведения о системе a. Мерой его неосведомленности о системе является
функция H(a), которая в то же время служит и мерой неопределенности состояния системы.
После получения некоторого сообщения b получатель приобрел некоторую дополнительную информацию Ib(a), уменьшившую его априорную неосведомленность так, что
апостериорная (после получения сообщения b) неопределенность состояния системы
стала Hb(a).
Тогда количество информации Ib(a) о системе, полученной в сообщении b, определится как
Ib(a)=H(a)-Hb(a),
т.е. количество информации измеряется изменением (уменьшением) неопределенности
состояния системы.
Если конечная неопределенность Hb(a) обратится в нуль, то первоначальное неполное знание заменится полным знанием и количество информации Ib(a)=H(a). Иными
словами, энтропия системы H(a) может рассматриваться как мера недостающей информации.
Энтропия системы H(a), имеющая N возможных состояний, согласно формуле
Шеннона, равна:
где Рi - вероятность того, что система находится в i-м состоянии.
Для случая, когда все состояния системы равновероятны, т.е. их вероятности равны Pi=1/N, ее энтропия определяется соотношением
Часто информация кодируется числовыми кодами в той или иной системе счисления, особенно это актуально при представлении информации в компьютере. Естественно,
что одно и то же количество разрядов в разных системах счисления может передать разное число состояний отображаемого объекта, что можно представить в виде соотношения
N=mn,
где N -число всевозможных отображаемых состояний;
т - основание системы счисления (разнообразие символов, применяемых в алфавите);
п - число разрядов (символов) в сообщении.
Пример 1.4. Но каналу связи передается n-разрядное сообщение, использующее
т различных символов. Так как количество всевозможных кодовых комбинаций будет
N=mn, то при равновероятности появления любой из них количество информации, приобретенной абонентом в результате получения сообщения, будет
I=logN=logm - формула Хартли.
Если в качестве основания логарифма принять т, то I=n. В данном случае количество информации (при условии полного априорного незнания абонентом содержания сообщения) будет равно объему данных I=Vд, полученных по каналу связи. Для неравновероятных состояний системы всегда I 0.
Форма логарифмической кривой на рис. 2.5 показывает, что данное преобразование отображает узкий диапазон малых значений яркостей на исходном изображении в более широкий диапазон выходных значений. Для больших значений входного сигнала верно противоположное утверждение. Это позволяет использовать этот тип преобразования для
растяжения диапазона значений темных пикселей на изображении с одновременным
сжатием диапазона значений ярких пикселей. Наоборот, при использовании обратного
логарифмического преобразования происходит растяжение диапазона ярких пикселей и
сжатие диапазона темных пикселей.
Любое преобразование, которое описывается кривой, имеющей общий вид, близкий к показанной на рис. 2.5 логарифмической функции, будет осуществлять такое растяжение/сжатие диапазонов яркости на изображении. На самом деле для этих целей значительно более универсальными, чем логарифмические, являются степенные преобразования.
Несмотря на это, логарифмическая функция имеет важную особенность, позволяя
сжимать динамический диапазон изображений, имеющих большие вариации в значениях
пикселей. Классическим примером, в котором значения пикселей имеют большой диапазон, является спектр Фурье, интенсивности в котором могут изменяться в диапазоне от 0
до 106.
Если обработка подобной совокупности значений не представляет проблемы для
компьютера, то система воспроизведения изображений обычно не способна правильно
отобразить столь большой диапазон значений интенсивности, поэтому при воспроизведении значительная часть деталей теряется.
В качестве иллюстрации логарифмического преобразования, на рисунке 2.7 приведено изображение спектра Фурье, имеющего значения в диапазоне от 0 до 1,5*106. Ес-
ли масштабировать эти значения линейно для отображения в 8-битной системе воспроизведения, то наиболее яркие пиксели будут доминировать над слабыми (и зачастую
важными) значениями спектра. Эффект такого доминирования иллюстрирует рисунок
2.7(а), на котором только весьма малая область изображения не воспринимается как черная. Если же вместо подобного способа воспроизведения мы сначала применим к значениям спектра логарифмические преобразование по формуле (3.2), тогда диапазон значений результата будет от 0 до 6,2, что намного удобнее. На рисунке 2.7 (б) показан результат такого преобразования. Отсюда становится очевидным богатство видимых деталей
на втором изображении по сравнению с непосредственным воспроизведением. Большинство спектров Фурье, демонстрируемых в публикациях по обработке изображений, масштабируются именно таким способом.
б)
а)
Рисунок 2.7 – Пример логарифмического преобразования
2.3.3. Степенные преобразования
Степенные преобразования имеют вид
s cr
где
(3.3)
с и r являются положительными константами. Иногда уравнение (3.3) записывается
в виде s c( r ) для того, чтобы ввести смещение, т.е. измеримый (ненулевой) выход, когда на входе ноль. Графики зависимостей s от г при различных значениях у показаны на рисунке 3.4. Также как в случае логарифмического преобразования, кривые степенных зависимостей при малых отображают узкий диапазон малых входных значений
в широкий диапазон выходных значений, при этом для больших входных значений верно
обратное утверждение. Однако, в отличие от логарифмических функций, здесь возникает
целое семейство кривых возможного преобразования, получаемых простым изменением
параметра . Из рисунка 3.4 видно, что кривые, полученные со значениями > 1 дают
прямо противоположный эффект по сравнению с теми, которые получены при < 1.
Уравнение (3.3) приводится к тождественному преобразованию при с = = 1.
Амплитудная характеристика многих устройств, используемых для ввода, печати
или визуализации изображений, соответствует степенному закону. По традиции, показатель степени в уравнении степенного преобразования называют гамма, поэтому процедура, используемая для коррекции такой степенной характеристики, называется гаммакоррекцией.
Рисунок 2.8 – Кривые гамма-коррекции
Например, устройства с электронно-лучевой трубкой (ЭЛТ) имеют степенную зависимость яркости от напряжения с показателем степени в диапазоне от 1,8 до 2,5. Обращая внимание на кривую для = 2,5 на рисунке 3.4, можно видеть, что подобная система отображения будет иметь тенденцию к воспроизведению изображений темнее, чем
они есть на самом деле. Этот эффект иллюстрируется на рисунке 2.9. На рисунке 3.5(а)
показан простой полутоновой линейный клин, подающийся на вход монитора с ЭЛТ. Как и
ожидалось, изображение на экране реального монитора оказывается темнее, чем должно
быть на экране идеального монитора, что и видно на рисунке 3.5 (б). Необходимость
применения гамма-коррекции очевидна. Все, что требуется для компенсации – это произвести предобработку визуализируемого изображения с помощью преобразования
s r 1/ 2.5 r 0.4
1/ 2.5
прежде, чем оно поступит на вход монитора. Результат s r
прежде, чем оно поступит на вход монитора. Результат показан на рисунке 2.9 (г).
r 0.4
2.3.4. Кусочно-линейные преобразования
Дополняющим методом амплитудных преобразований является использование кусочно-линейных функций. Их главное преимущество по сравнению с вышерассмотренными состоит в том, что форма этих функций может быть сколь угодно сложной. Основной недостаток кусочно-линейных функций заключается в том, что для их описания необходимо задавать значительно большее количество параметров.
Одним из простейших случаев использования кусочно-линейных функций является
преобразование, усиливающее контрасты. Низкий контраст изображений может быть
следствием плохого освещения, излишне большого динамического диапазона сенсора,
или даже неверно установленной диафрагмы объектива при съемке. Усиление контраста
достигается увеличением динамического диапазона яркостей на обрабатываемом изображении.
а)
в)
б)
г)
Рисунок 2.9 – Гамма-коррекция изображения
На рисунке 2.10(а) показано типичное преобразование, используемое для усиления контрастов. Положения точек (r1,s1) и (г2, s2) задают вид функции преобразования.
Если r1 = s1 и r2 = s2, преобразование становится тождественным, не вносящим изменения в значения яркостей. Если r1 = r2, s1 = 0 и s2 = L – 1, преобразование превращается в
пороговую функцию, которая в результате дает бинарное изображение (Рисунок 2.10 (г)).
Промежуточные значения (r1,s1) и (r2,s2) обеспечивают различные степени растяжения
уровней яркости на результирующем изображении, меняя тем самым его контраст. Вообще говоря, условия r1 r 2 и s1 s 2 означают, что функция является однозначной и
монотонно возрастающей. Это условие обеспечивает сохранение правильной последовательности уровней яркости, предотвращая тем самым появление ложных деталей на обработанном изображении.
На рисунке 2.10 (б) представлено исходное малоконтрастное 8-битовое изображение. На рисунке 2.10(в) показан результат усиления контраста, полученный при (r1,s1) =
(rmin, 0) и (r2, s2) = (rmax, L - 1), где rmin и rmax, соответственно, означают минимальную и
максимальную яркости на изображении. Таким образом, функция преобразования линейно растягивает исходный диапазон яркостей в полный диапазон [0, L - 1]. Наконец, на рисунке 3.6(г) показан результат порогового преобразования с r1 = r2 = m, где m— среднее
значение яркостей на изображении.
а)
б)
в)
г)
Рисунок 2.10 – Кусочно-линейное преобразование
2.3.5. Преобразования гистограмм яркости
Весьма эффективным способом повышения контраста изображений является их
обработка на основе информации, извлекаемой из гистограмм распределения яркости.
Гистограммой цифрового изображения, число уровней яркости которого равно L, лежащих в диапазоне [0, G], называется дискретная функция
h ( rk ) nk ,
rk – это k-й уровень яркости в интервале [0, G];
nk – число пикселов изображения, уровень яркости которых равен rk .
Нормированная гистограмма получается делением элементов h ( rk )
число пикселов изображения n :
p ( rk ) h ( rk ) / n nk / n ,
где
на общее
при k = 1, 2, …, L.
С точки зрения теории вероятности, число p(rk) – это вероятность (частота) появления (присутствия) уровня интенсивности rk в данном изображении.
Гистограммы являются основой для многочисленных методов пространственной
обработки. Видоизменение гистограммы (гистофаммная обработка) может быть успешно
использовано для улучшения изображений. Кроме получения полезной статистики об
изображении, содержащаяся в гистофамме информация также весьма полезна и в других
задачах, таких как сжатие и сегментация изображений. Гистограммы достаточно просты
как для программного вычисления, так и для аппаратной реализации, что делает их удобным инструментом для обработки изображений в реальном времени.
Рассмотрим рисунок 2.11, на котором приведен снимок пыльцы, показанный в четырех вариантах яркостных характеристик: темном, светлом, низкоконтрастном и высококонтрастном. На правой части рисунка приведены гистограммы, соответствующие этим
изображениям. По горизонтальной оси каждого графика отложены значения уровней яркости rk. По вертикальной оси — значения гистограммы h(rk) = nk (или p(rk) = nk/n, если они
нормализованы). Тем самым, эти графики являются зависимостями h(rk) = nk от rk или
p(rk) = nk/n от rk.
Рисунок 2.11 – Изображения различного контраста и его гистограммы
Из рисунков видно, что на гистограмме темного изображения ненулевые уровни
сконцентрированы в области низких (темных) значений диапазона яркостей. Аналогично,
значимые уровни гистограммы яркого изображения смещены к верхней части диапазона.
Изображение с низким контрастом имеет узкую гистограмму, расположенную вблизи центра диапазона яркостей. Для одноцветного изображения это означает вялый, «вылинявший» серый вид. Наконец видно, что ненулевые уровни гистограммы высококонтрастного
изображения покрывают широкую часть диапазона яркостей, а также, что распределение
значений пикселей не слишком отличается от равномерного, за исключением небольшого
числа пиков, возвышающихся над остальными значениями.
Интуитивно можно сделать вывод, что изображение, распределение значений
элементов которого близко к равномерному и занимает весь диапазон возможных значений яркостей, будет выглядеть высококонтрастным и будет содержать большое количество полутонов. Основываясь только на информации, содержащейся в гистограмме исходного изображения, можно построить функцию преобразования, которая позволит автоматически добиваться такого эффекта.
2.4. МОДЕЛИРОВАНИЕ АЛГОРИТМОВ
АМПЛИТУДНОЙ ОБРАБОТКИ СРЕДСТВАМИ MATLAB
Базовой функцией, позволяющей выполнять преобразования яркости и контраста
изображений является функция imadjust, которая входит в пакет IPT:
g = imadjust (f,[low_in, high_in], [low_out, high_out], gamma).
На рисунке 2.12 показана амплитудная характеристика (характеристика преобразования) этой функции.
Рисунок 2.12 –Характеристики преобразования функции imadjust
Из рисунка следует, что значения яркости исходного изображения f, лежащие в интервале [low_in, high_in] преобразуются в интервал яркостей выходного изображения
[low_out, high_out], а значения лежащие ниже порога low_in или выше порога high_in обрезаются. Входное изображение может быть класса uint8, uint16, double, а класс выходного изображения g совпадает с входным. Все входные значения изображения f должны
быть вещественными числами в диапазоне 0…1, независимо от класса f. Если вместо
векторов [low_in, high_in] или [low_out, high_out] использовать пустой вектор [ ], то по
умолчанию используются значения [0 1]. Если high_out меньше, чем low_out, то выходные
яркости симметрично переворачиваются и получается преобразование в негатив. Параметр gamma служит для задания формы характеристики преобразования. Следующая
программа показывает применение функции imadjust для изменения контраста изображения:
%использование функции imadjust
f=imread('.\Moon Phobos.tif');
g = imadjust(f, [0 0.95], [0.3 1], 1 );
figure;
subplot (1,2,1); imshow (f); title 'Исходное';
%загрузить изображение
%выполнить преобразования
%яркости
%вывести исходное
%изображение
subplot (1,2,2); imshow (g); title 'Обработанное';
%вывести
%обработанное изображения
Рисунок 2.13 – Результат работы программы преобразования контраста
Анализируя результаты, показанные на рисунке 3.9 можно видеть, что информативность в темных деталях улучшилась, однако общий контраст изображения понизился,
изображение стало вялым. Выходом в этой ситуации является изменение формы характеристики преобразования с помощью –коррекции. Используем ту же программу с коэффициентом gamma = 0.45, выбранным интерактивно.
%использование функции imadjust
f=imread('.\Moon Phobos.tif');
g = imadjust(f, [0 0.95], [0.2 1], 0.45 );
figure;
subplot (1,2,1); imshow (f); title 'Исходное';
subplot (1,2,2); imshow (g); title 'Обработанное';
%загрузить изображение
%выполнить преобразования
%яркости
%вывести исходное
%изображение
%вывести
%обработанное изображения
Рисунок 2.14 – Результат работы программы преобразования контраста
при gamma = 0.45
Как видно из рисунка 2.14, различимость деталей в темных участках изображения
улучшился, при этом контраст всего изображения сохранился достаточно высоким.
Логарифмические преобразования в MATLAB можно реализовать, если запрограммировать вычисление выражения
g c * log(1 double( f )) ,
где с – некоторая константа.
Форма характеристики этого преобразования похожа на кривую гамма-коррекции
при значении gamma<1, однако форму гамма-характеристики можно изменять, а форма
логарифмического преобразования фиксирована. Как уже отмечалось, основное применение логарифмического преобразования состоит в сокращении динамического диапазона яркости изображений, перед их визуализацией. Следующие команды позволяют выполнить логарифмическое преобразование исходного изображения f.
%использование логарифмического преобразования
f=imread('.\spectr.tif');
%загрузить изображение
g = (log(1+double(f)));
%выполнить преобразования яркости
g = mat2gray(g);
%преобразовать к диапазону [0 1]
g = im2uint8(g);
%преобразовать к диапазону [0 255]
figure;
subplot (1,2,1); imshow (f); title 'Исходное';
%вывести исходное изображение
subplot (1,2,2); imshow (g); title 'Обработанное';%вывести обработанное изображения
Использование логарифмического преобразования позволяет уменьшить значения
яркостей пикселов с 106 до значений 14, что позволяет легко их отображать на экране мониторов. Это следует из сравнения исходного и обработанного изображений на рисунке
3.11.
Рисунок 2.15– Результат логарифмического преобразования
Использование функции mat2gray переводит значения аргумента в диапазон [0 1],
а функция im2uint8 преобразует их к диапазону [0 255], что необходимо для визуализации.
Рассмотрим реализацию кусочно-линейных преобразований для растяжения контрастности выбранного диапазона яркостей. Такое преобразование иллюстрируется рисунком 3.12.
Рисунок 2.16 – Растяжение контраста
Как следует из рисунка, функция растягивает входные иненсивности близкие к m
на полный диапазон и сжимает интенсивности меньшие, чем m и большие, чем m в более
узкий диапазон. Предельный случай показан на правом рисунке, где все уровни меньше
m отображаются черными, а уровни больше m – белыми. Это случай порогового преобразования в бинарное изображение.
Описать функцию растяжения контраста можно выражением
s T (r )
где
r – яркость входного изображения;
1
1 (m / r ) E
,
s – соответствующая яркость выходного изображения;
Е – параметр контролирующий наклон функции.
В MATLAB это уравнение можно реализовать в виде команды обработки изображения f
g 1./(1 (m./(double( f ) eps)). ^ E ) .
Величина E подбирается интерактивно. Для левого рисунка 3.11 величина Е=20.
На основе рассмотренного разработаем М-функцию, позволяющую выполнять
рассмотренные выше амплитудные преобразования, использующую в качестве одного из
входных аргументов исходное изображение f, которое необходимо обработать. Для осуществления интерактивного ввода и в ней используется семейство функций narg, которые
описываются ниже [4, 5].
Зачастую в программах требуется определить число входных и выходных аргументов М-функции. Для выполнения этого в MATLAB предусмотрены соответствующие
функции:
nargin и nargout.
Использование в теле М-функции
n = nargin,
позволяет получить значение n, которое равно числу входных аргументов.
Использование в теле М-функции
n = nargout,
позволяет получить значение n, которое равно числу выходных аргументов.
Функция nargchk используется для проверки корректности числа передаваемых в
М-функции аргументов. Она использует синтаксис
msg = nargchk (low, high, number).
Функция выдает сообщение Not enough input parameters, если number меньше, чем low
или Too many input parameters, если number больше, чем high. Если параметр number находится между low и high, то функция nargchk возвращает пустую матрицу. Обычно эта
функция используется для остановки вычислений при обнаружении неправильного числа
входных аргументов (через функцию error). Число фактических входных аргументов при
этом определяется функцией nargin.
Рассмотрим следующий фрагмент кода:
Function G = testhv2(x, y, z) % функция testhv
.
.
.
Error (narchk(2, 3, nargin));
.
.
.
Если теперь набрать команду
>> testhv(6);
в которой имеется всего один входной аргумент, то это вызовет сообщение об ошибке
Not enough input parameters,
и вычисления будут остановлены.
Часто бывает удобно записывать функции с переменным числом входных или выходных аргументов. Для этого можно в качестве аргументов использовать varargin и varargout (набираемые строчными буквами).
Например
function [m, n] = testhv3(varargin)
допускает использование переменного числа аргументов при вызове функции testhv3, а
запись
function [varargout] = testhv4(m, n, p)
возвращает переменное число выходных аргументов для функции testhv4.
Если пользовательская функция testhv3, к примеру, имеет один фиксированный
входной аргумент x, за которым следуют переменное число других входных аргументов,
то запись
function [m, n] = testhv3(x, varargin)
позволяет пользователю выбирать разное число входных аргументов, начиная со второго. Допускается создавать функции у которых количество и входных и выходных аргументов является переменным.
При использовании varargin во входных аргументах функции MATLAB формирует
соответствующий смешанный массив (cell array), который допускает переменное число
входных данных. Поскольку переменная varargin является смешанным массивом, при вызове такой функции могут использоваться данные разных типов. Например, при обращении к функции testhv3, допустимым будет обращение типа
>> [m, n] = testhv(f, [0 0.5 1.5], A, ‘label’);,
где
f – это изображение;
следующий аргумент – это вектор-строка [1x3];
А – матрица;
‘label’ – строка символов.
Сказанное выше в полной мере относится и к функции varargout.
Разработанная М-функция называется trans. Она позволяет выполнять следующие
виды преобразования: негатив, логарифмические, гамма-коррекцию и растяжения контрастности. Ее исходный код приводится ниже.
function[g] = trans(f, varargin)
%TRANS Выполняет преобразования яркости полутонового изображения.
% G = TRANS(F, 'neg') вычисляет негатив входного изображения F.
%
% G = TRANS(F, 'log', C, CLASS) вычисляет log(1 + F) and
% умножает результат на константу C– C*log (1 + F)
%Если последние два
% параметры опущены, значения C по умолчанию равны 1.
% Поскольку log часто используется для отображения
% спектров Фурье, параметр CLASS, определяющий класс выходного изображения,
% может быть 'uint8' или 'uint16'.
% Если параметр CLASS опущен, то по умолчанию класс выходного изображения
% совпадает с входным.
% G = TRANS(F, 'gamma', GAM) выполняет гамма преобразование
%входного изображения F.
%
% G = TRANS(F, 'stretch', M, E) производит усиление контраста
% в соответствии с выражением 1./(1 + (M./(F + eps)).^E).
% Параметр M должен быть в диапазоне [0, 1].
% По умолчанию М определяется как среднее значение
% mean2(im2double(F)), а значение E по умолчанию равно 4.
%
% Для 'neg', 'gamma' и 'stretch' входные изображения класса double
% максимальное значение которых больше чем 1, вначале преобразуются
% функцией MAT2GRAY. Другие изображения преобразуются функцией
% IM2DOUBLE.
% Другие изображения преобразуются в класс double использованием функции
% IM2DOUBLE.
%
% Выходное изображение имеет класс входного, кроме преобразования тип
% 'log'.
%
% Проверка корректного числа аргументов.
error (nargchk (2, 4, nargin))
% Сохранить класс входного изображения для дальнейшего использования.
classin = class(f);
% Если вх. изображение класса double и лежит вне диапазона [0, 1],
% и выполняется преобразование не 'log' преобразуйте его в диапазон [0,1].
if strcmp(class(f), 'double') & max(f(:)) > 1 & ...
~strcmp(varargin{1}, 'log')
f = mat2gray(f);
else % Преобразовать в double, независимо от class(f).
f = im2double(f);
end
% Определите тип преобразования.
method = varargin{1};
switch method
case 'neg'
g = imcomplement(f);
case 'log'
if length(varargin) == 1
c = 1;
elseif length(varargin) == 2
c = varargin{2};
elseif length(varargin) == 3
c = varargin{2};
classin = varargin{3};
else
error('Incorrect number of inputs for the log option.')
end
g = c*(log(1 + double(f)));
case 'gamma'
if length(varargin) < 2
error('Not enough inputs for the gamma option.')
end
gam = varargin{2};
g = imadjust(f, [ ], [ ], gam);
case 'stretch'
if length(varargin) == 1
% Используем умолчания
m = mean2(f);
E = 4.0;
elseif length(varargin) == 3
m = varargin{2};
E = varargin{3};
else error('Incorrect number of inputs for the stretch option.')
end
g = 1./(1 + (m./(f + eps)).^E);
otherwise
error('Unknown enhancement method. ')
end
% Преобразовать в класс входного изображения
g = changeclass(classin, g);
Вызов созданной функции из приводимой ниже программы, позволяет продемонстрировать выполнение преобразования в негатив и растяжения контраста на рентгеновском изображении.
f = imread('.\скелет.tif');
g = trans (f, 'neg');
%загрузить исходное изображение из файла
%вызвать функцию trans для преобразования
%негатив
figure;
subplot (1,2,1); imshow (f); title 'Исходное';
%вывести исходное изображение
subplot (1,2,2); imshow (g); title 'Негатив';
%вывести обработанное изображения
g = trans (f, 'stretch', mean2 (im2double(f)), 0.9); %вызвать функцию trans для
%растяжения контраста
figure;
subplot (1,2,1); imshow (f); title 'Исходное';
%вывести исходное изображение
subplot (1,2,2); imshow (g); title 'Растяжение контраста';
%вывести обработанное
%изображение
Следует обратить внимание, что параметр m при вызове преобразования контраста вычисляется как среднее значение изображения mean2(im2double(f)), а значение Е =0,9. На
рисунке 2.17 показан результат работы программы.
Рисунок 2.17 – Результат работы программы trans
В завершение рассмотрим метод преобразования гистограмм. Для построения
гистограмм яркости в MATLAB используется функция imhist
h = imhist (f, b),
где
h – гистограмма;
f – входное изображение;
b – число градаций яркости, использующееся для построения гистограммы. По
умолчанию b=256.
Гистограммы распределения яркостей типичного изображения естественных объектов имеют явно выраженную неравномерность, в результате чего, контраст такого изображения часто получается не высоким. Улучшить такое изображение можно видоизменив его гистограмму. Видоизменение заключается в преобразовании яркостей исходного
изображения, таким образом, чтобы гистограмма выходного изображения приняла желаемую форму. Наиболее часто используемой формой видоизменения гистограммы является эквализация, при которой вероятность появления уровней яркости в выходном
изображении выравнивается, а гистограмма становится равномерной. Аналитически это
записывается так:
k
k
sk T ( rk ) p ( rk ) n j / n ,
j 1
где
j 1
K = 1, 2, …, L;
sk – величина яркости выходного изображения, соответсвующая яркости rk входно-
го.
В пакете MATLAB эквализация гистограмм реализована функцией histeq, которая имеет
синтаксис
g = histeq (f, nlev),
где
f – входное изображение;
nlev – число уровней яркости для выходного изображения.
Рассмотрим практическое использование метода эквализации гистограмм на примере
реальных изображений. Для этого составим программу и сохраним ее в виде М-файла.
f=imread('.\зерна.tif');
imshow (f);
figure, imhist(f);
ylim ('auto');
h=histeq(f,256);
figure, imshow (h);
figure, imhist (h);
ylim ('auto')
%загрузить изображение 'зерна.tif'
%вывести исходное изображение на экран
%рассчитать и вывести в графическое
%окно гистограмму
%значения по оси Y выбрать автоматически
%выполнить эквализацию гистограммы
%вывести в окно обработанное изображение
%вывести в окно его гистограмму
%значения по оси Y выбрать автоматически
Программа загружает исходное изображение из файла с именем ‘зерна.tif’, выводит исходное изображение на экран (рисунок 2.18, слева), рассчитывает гистограмму исходного
изображения и выводит ее на экран в отдельное графическое окно (рисунок 2.18, справа). Затем
выполняется операция эквализации гистограммы и построение нового обработанного
изображения, которое выводится в графическое окно (рисунок 2.19, слева). В завершение
рассчитывается гистограмма обработанного изображения, которая строится в новом графическом
окне (рисунок 2.19, справа).
Рисунок 2.18 – Исходное изображение и его гистограмма яркости
Рисунок 2.19 – Улучшенное изображение и его гистограмма яркости
Анализируя приведенные иллюстрации можно сделать вывод, что градации яркости исходного изображения сосредоточены в небольшом диапазоне 15…80, поэтому изображение является малоконтрастным и недостаточно информативным.
После выполнения эквализации (выравнивания) гистограммы контраст изображения увеличился, различимость деталей в области малых яркостей стала заметно лучше,
что, несомненно, увеличило общую информативность обработанного изображения.
2.5. ИСПОЛЬЗОВАНИЕ ПРОСТРАНСТВЕННОЙ
ФИЛЬТРАЦИИ ДЛЯ УЛУЧШЕНИЯ ИЗОБРАЖЕНИЙ
Сглаживающие фильтры применяются для подавления шумов на изображениях.
Отклик простейшего сглаживающего фильтра есть среднее значение элементов по окрестности, которую покрывает маска фильтра. Такие фильтры называются усредняющими
или сглаживающими (сглаживают изменения яркости). Поскольку шум часто является
случайным процессом и характеризуется резкими изменениями значений яркости, сглаживающие фильтры весьма эффективно эти шумы подавляют. Однако также эффективно
такие фильтры подавляют и другие резкие изменения яркости на изображении, например
контуры. Расфокусировка контуров является отрицательным эффектом при их использовании. Поэтому используют сглаживающие фильты в случаях, когда следует подавить
объекты на изображении, размеры которых малы по сравнению с размерами маски
фильтра. Простейшим сглаживающим фильтром по окрестности 3х3, является фильтр,
маска которого показана на рисунке 3.7. Отклик этого фильтра формирует обычное среднее значение по маске. Подставив коэффициенты маски в выражение (3.6) получим:
1 9
R Zi .
9 i 1
Рисунок 2.20 – Маска однородного усредняющего фильтра 3х3
Из полученного выражения видно, что фильтром формируется среднее значение
яркостей по окрестности 3х3 пиксела. Следует обратить внимание на то, что коэффициенты маски указаны как 1, вместо 1/9. Это является более эффективным при машинной
реализации фильтров: по окончанию процесса суммирования, полученное значение делится на 9. Такой пространственный фильтр, коэффициенты которого одинаковы, называется однородным усредняющим фильтром.
В пакете IPT MATLAB существуют функции, которые позволяют использовать некоторые стандартные пространственные фильтры, либо создавать свои – пользовательские. Для выбора стандартных фильтров используется функция fspecial, которая генерирует маску фильтра w при выполнении команды
w = fspecial (‘type’, parameters),
где
‘type’ – тип фильтра из списка пакета IPT;
parameters – аргумент, задающий параметры фильтра.
Ниже приводится m-файл, который выполняет обработку исходного изображения,
пораженного высокочастотным шумом, с помощью однородного усредняющего фильтра
размером 3х3.
f=imread('.\chess.tif');
%загрузить изображение
figure; imshow (f);
%вывести изображение в окно
f1=imnoise(f, 'salt & pepper');
%добавить к изображению шум
figure; imshow (f1);
%вывести изображение в окно
f1=im2double(f1);
%преобразовать в формат double
w1=1/9*ones (3);
%создать усредняющий фильтр 3х3
g1= imfilter (f1, w1, 'replicate');%выполнить фильтрацию
figure; imshow (g1);
%вывести обработанное изображение.
На рисунке 2.21 представлено исходное изображение, а на 2.22 обработанное
фильтром 3х3.
Рисунок 2.21 – Исходное изображение, пораженное шумом
Рисунок 2.22 – Изображение, обработанное усредняющим фильтром 3х3
Как и следовало ожидать, результаты подавления шума оставляют желать лучшего, что проявляется в остаточных явлениях на обработанном изображении. Увеличение
размеров маски до 7х7 элементов, как показано на рисунке 2.23, позволяет уменьшить
влияние шума, однако весьма сильно проявляется расфокусировка границ темных и
светлых участков изображения.
Рисунок 2.23 – Изображение, обработанное усредняющим
фильтром 7х7
Проведенный эксперимент показывает, что использование усредняющего фильтра
для подавления шумов дает не очень хорошие результаты. В таких случаях используют
медианный фильтр.
Медианный фильтр относится к классу нелинейных фильтров, основанных на порядковых статистиках (ранговых фильтров). Отклик таких фильтров определяется:
1) предварительным упорядочиванием (ранжированием) значений яркости пикселов изображения, покрываемых маской фильтра;
2) последующим выбором значения, находящегося на определенной позиции упорядоченной последовательности (т.е. имеющего определенный ранг) и назначения его откликом.
Собственно фильтрация сводится к замещению исходного значения пиксела изображения в центре маски на полученный отклик.
Медианный фильтр, как следует из названия, заменяет значения центрального
пиксела на значения медианы распределения яркостей всех пикселов окрестности, покрываемых маской. Медиана набора чисел – это такое число , для которого половина
чисел из набора меньше или равны , а другая половина – больше или равны . Таким
образом для выполнения медианной фильтрации следует выполнить следующую последовательность:
1) упорядочить по возрастанию значения пикселов, покрываемых маской;
2) найти значение медианы;
3) присвоить полученное значение обрабатываемому пикселу.
Для маски размерами 3х3 элемента медианой будет пятое значение, для маски
5х5 элементов – тринадцатое значение, и так далее. Можно сказать, что основная функция медианного фильтра заключается в замене отличающегося от фона значения пиксела на другое, более близкое к его соседям.
В пакете IPT медианный фильтр можно реализовать функцией
g = medfilt2(f, [m n], padopt),
где
f – входное изображение;
[m n] – размер маски фильтра;
padopt – опции расширения изображения.
Приведенный ниже m-файл производит медианную фильтрацию изображения, показанного на рисунке 2.21. Результат фильтрации показан на рисунке 2.24.
%медианная фильтрация 3х3
f=imread('.\chess.tif');
%загрузить изображение
figure; imshow (f);
%вывести изображение в окно
f1=imnoise(f, 'salt & pepper');
%добавить к изображению шум
figure; imshow (f1);
%вывести изображение в окно
f1=im2double(f1);
%преобразовать в формат double
g1=medfilt2 (f1, [3 3]);
%выполнить фильтрацию медианным
%фильтром фильтром 3х3
figure; imshow (g1);
%вывести обработанное
%изображение в окно.
Рисунок 2.24 – Устранение шума медианным фильтром 3х3
По разным причинам наблюдаемые изображения могут быть расфокусированными, нерезкими, что существенно затрудняет анализ мелких деталей изображения и границ деталей. Поэтому методы повышения резкости ставят своей целью подчеркивания
яркостных переходов и мелких деталей на изображении. Методы повышения резкости
основаны на пространственном дифференцировании изображения. Дифференцирование
позволяет усилить перепады и другие изменения яркости и не влияет на области с ее
медленными изменениями. Наиболее известным пространственным фильтром повышения резкости является лапласиан (оператор Лапласа). Он основан на использовании второй производной от изображения f(x,y) и определяется как
d2 f d2 f
f 2 2
dx
dy
2
.
Поскольку производные любого порядка являются линейными операторами, то и лапласиан является линейным оператором. Чтобы применить это уравнение в цифровой обработке, его необходимо выразить в дискретном виде:
2 f [ f ( x 1, y ) f ( x 1, y ) f ( x, y 1) f ( x, y 1)] 4 f ( x, y ) .
Реализовать это уравнение можно с помощью масок, которые показаны на рисунке 2.25.
Рисунок 2.25 – Маски фильтра, используемые для
реализации лапласиана
Улучшение изображений с помощью лапласиана производится по формуле
g ( x, y ) f ( x, y ) c2 f ( x, y ) ,
где
f(x,y) – исходное изображение;
g(x,y) – обработанное изображение;
с = 1, если центральный элемент маски положителен, с = –1, в противном случае.
Это уравнение объясняется тем, что дифференцирование преобразует области с постоянным значением яркости в 0, а добавление исходного изображения восстанавливает яркость таких областей.
Приведенный ниже m-файл предназначен для выполнения пространственной
фильтрации с помощью лапласиана.
%фильтрация Лапласианом
f=imread('.\ТИТ_1.tif');
imshow (f);
w4=[0 1 0; 1 -4 1; 0 1 0];
figure;freqz2(w4);
f=im2double (f);
%загрузить изображение ТИТ
%вывести исходное изображение в %окно
%создать маску фильтра лапласа
%вывести АЧХ фильтра в окно
%преобразовать исходное изобр. в
%формат double
g4 = f-imfilter (f, w4, 'replicate');
%выполнить фильтрацию
figure; imshow (g4);
%вывести результат фильтрации в %окно
w8=[1 1 1; 1 -8 1; 1 1 1];
%создать маску фильтра лапласа
figure; freqz2(w8);
%вывести АЧХ фильтра в окно
g8 = f-imfilter (f, w8, 'replicate');
%выполнить фильтрацию
figure; imshow (g8);
%вывести результат фильтрации в %окно.
Результаты фильтрации показаны на рисунках ниже. В качестве исходного изображения используется расфокусированное изображение телевизионной испытательной
таблицы, показанное на рисунке 2.26.
Рисунок 2.26 – Исходное изображение
Рисунок 2.27 – Изображение, обработанное фильтром Лапласа_1
Рисунок 2.28 – Передаточная характеристика фильтра Лапласа_1
Рисунок 2.29 – Изображение, обработанное фильтром Лапласа_2
Рисунок 2.30 – Передаточная характеристика фильтра Лапласа_2
Как следует из результатов, представленных на рисунках 2.27 и 2.29 использование фильтра Лапласа позволяет существенно улучшить резкость изображений, причем
эффективность фильтра Лапласа_2 (с маской, изображенной на рисунке 2.25 справа)
выше.
В заключение выполним обработку, рассмотренными методами, изображения, которое показано на рисунке 2.30. Как видно это изображение не резкое, имеет малый контраст и испорчено мелкими вкраплениями и царапинами. M-файл, который выполняет
обработку, приведен ниже.
%фильтрация лапласианом, медианным фильтром
f=imread('.\семья_02.jpg');
%загрузить изображение
imshow (f);
%вывести изображение в окно
f=im2double (f);
%преобразовать в формат double
w4=[0 1 0; 1 -4 1; 0 1 0];
%создать маску лапласиана
g4 = f-imfilter (f, w4, 'replicate');
%выполнить повышение резкости
figure; imshow (g4);
%вывести изображение в окно
g1=medfilt2(g4,[3 3]);
%выполнить медианную фильтр.
figure; imshow (g1,[ ]);
%вывести изображение в окно
w8=[1 1 1; 1 -8 1; 1 1 1];
%создать маску лапласиана
g8 = f-imfilter (f, w8, 'replicate');
%выполнить повышение резкости
figure; imshow (g8);
%вывести изображение в окно
g2=medfilt2(g8,[3 3]);
%выполнить медианную фильтр.
figure; imshow (g2,[ ]);
%вывести изображение в окно.
Рисунок 2.30 – Исходное изображение
После первой обработки фильтром Лапласа и вычитания лапласиана из исходного
изображения резкость стала заметно выше, однако вместе с повышением резкости стали
более заметны шумы. Это видно из рисунка 2.31.
Рисунок 2.31 – Изображение, после повышения резкости
Дальнейшая обработка заключается в подавлении шумов медианным фильтром 3х3. Как
видно из рисунка 2.32, после этого шага изображение заметно улучшилось, поскольку
шумы на изображении практически незаметны.
Рисунок 2.32 – Изображение после фильтрации шумов
Список использованных источников
1
Методы компьютерной обработки изображений / М.В. Гашников [и др.]; под
ред. В.А. Сойфера. – 2-е изд., испр. - М.: ФИЗМАТЛИТ, 2003.
2
Абламейко С. В.
– 784 с.
Обработка изображений: технология, методы, применение.
Учебное пособие / С. В Абламейко., Д. М. Лагуновский - Минск: Амалфея, 2000. – 304 с.
3 Цифровое преобразование изображений: Учебное пособие для вузов /Р. Е.
Быков и [др.]; под ред. Р. Е. Быкова. - М.: Горячая линия-Телеком, 2003. – 228 с.
4
Дьяконов В. П. MATLAB 6/6.1/6.5 + Simulink4/5. Основы применения / В. П
Дьяконов. М.: - СОЛОН-Пресс, 2004. 768 с.
5
Вычисления в среде Mathlab / В.Г. Потемкин. – М.: ДИАЛОГ-МИФИ, 2005.– 385
6
Куляс М.О., Куляс О.Л., Никитин К.А. Использование шумового поля для
с.
оценки частотно-контрастных характеристик телевизионных систем / М.О. Куляс, О.Л.
Куляс, К.А. Никитин // Физика волновых процессов и радиотехнические системы, 2008. –
т.11. –№4. – с. 53-59.
7 Гонсалес Р., Вудс Р. Цифровая обработка изображений / Р. Гонсалес, Р. Вудс.
– М.: Техносфера, 2005. – 1072 с.