Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР4 / мт - МТ_лаб_04

.pdf
Скачиваний:
4
Добавлен:
25.06.2023
Размер:
733.03 Кб
Скачать

Лабораторная работа №4.

Основы цифровой фильтрации изображений средствами MATLAB

Цель работы. Изучить основы обработки изображений на примере методов фильтрации, реализуемой как в спектральном пространстве, так и при помощи двумерных пространственных фильтров.

Краткие теоретические сведения

Фильтрация является одним из широко применяемых методов обработки изображений, только в отличие от одномерных сигналов, 2D размерность изображений резко увеличивает вычислительную сложность алгоритмов обработки. При этом, так же, как и для одномерных сигналов, вводятся в рассмотрение частотные характеристики изображений и фильтров, но в отличие от сигналов, при обработке изображений не оперируют частотами в Герцах. Тем не менее, базовые идеи одномерной фильтрации с успехом обобщаются на двумерный случай.

Задачи обработки изображений довольно разнообразны: от банального улучшения (enhancement) типа повышения контрастности и выравнивания яркости, а также устранения типовых видов искажений, до решения задач нахождения объектов с заданными свойствами в поле изображения, систем идентификации пользователей, систем автоматического распознавания текста в изображении и перевода его в текст и т.д. Фильтрация является одним из типовых алгоритмов обработки при решении любой задачи.

Фильтрация основана на наличии существенных различиях в спектральном составе различных компонентов исходного сигнала. Для получения информации о частотном составе цифровых изображений существует специальный метод и алгоритм – двумерное быстрое преобразование Фурье (2D-БПФ). В результате его применения к массиву {xn,m} образуется массив значений его спектра {Xn,m}. Существует также и алгоритм обратного действия (обратное 2D-БПФ): по массиву значений спектра {Xn,m} можно вычислить массив значений пикселей изображения

{xn,m}.

Метод фильтрации в частотной области. Как и для одномерных сигналов, при обработке изображений часто применяют метод фильтрации в спектральном пространстве (метод Фурье-фильтрации). Идея метода заключается в вычислении двумерного спектра {Xn,m} исходного изображения {xn,m}, последующей модификации спектра в соответствии заданными частотными характеристиками пространственного фильтра и формировании выходного изображения посредством вычисления обратного двумерного преобразования Фурье модифицированного спектра {Yn,m}.

Для модификации спектра исходного изображения {Xn,m} необходимо задать массив отсчетов дискретной передаточной функции фильтра {Wn,m}, после чего выполнить преобразование

1

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №4 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. ГУАП, 2023. – 11 с.

 

=

, для всех n и m.

(1)

,

,

,

 

При задании массива {Wn,m} исходят из требований к свойствам, которые необходимо придать выходному изображению.

В отличие от одномерных сигналов, при обработке изображений практически всегда приходится предварительно оценивать свойства спектра конкретного изображения, чтобы выбрать область для коррекции спектра, хотя есть и общие рекомендации, основанные на аналогиях с одномерными фильтрами. Более протяженным объектам на изображении соответствуют более низкие частоты, а мелким деталям – высокие частоты, а резкая граница между объектом и фоном по свойствам аналогична фронту одномерного импульсного сигнала.

Всегда важно помнить, что свойство симметрии алгоритма двумерного БПФ требует обязательного выполнения условия комплексно-сопряженной симметрии для массива {Wn,m}. Для облегчения реализации этого принципа в MATLAB введена специальная операция центрирования спектра fftshift(). Эта команда осуществляет двумерный циклический сдвиг спектра, так что компоненты спектра с нулевыми индексами сдвигаются в центр матрицы. Тогда при необходимости оставить в изображении только низкие частоты (т.е. оставить неизмененными протяженные объекты), необходимо оставить в спектре только двумерную область в центре сдвинутого спектра, симметричную относительно центра. Если же, наоборот, требуется выделить края объектов, а сами объекты сделать невидимыми, то нужно убрать область в центре сдвинутого спектра. По окончании модификаций сдвинутого спектра осуществляется его обратный сдвиг и вычисляется двумерное обратное БПФ, в результате чего формируется отфильтрованное изображение.

На рисунке 1 приведен пример программы, реализующей алгоритм Фурье-фильтрации изображения, с целью выделения границ объектов. Для улучшения контрастности выходного изображения дополнительно осуществляется нормировка выходного изображения таким образом, чтобы максимальное значение выходного массива было бы равно 255.

На рисунке 2 показан результат работы данной программы для изображения, содержащего черные буквы кириллицы на белом фоне. Значения пикселей выходного изображения дополнительно были инвертированы, чтобы получить черные края (черный цвет соответствует значениям элементов матрицы, близким к нулю) на белом фоне (белый цвет соответствует значениям элементов матрицы, близким к 255).

2

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №4 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. ГУАП, 2023. – 11 с.

clc, clear, close all %очистка памяти

raw_image = imread('D:/input_image.jpg');

input_image = rgb2gray(raw_image); % перевод изображения в оттенки серого

Spectr_input_image = fftshift(fft2(input_image)); % 2D-БПФ изображения

figure(1)

imagesc(20*log(abs(Spectr_input_image))) % вывод двумерного спектра изображения

[x y] = size(Spectr_input_image); % получение размера изображения

space_freq = 30; % настраиваем пространственную частоту среза фильтра

mask=ones([x y]); % пустой массив для маски фильтрации в частотной области

mask(round(x/2) - space_freq : round(x/2) + space_freq, ...

round(y/2) - space_freq : round(y/2) + space_freq)=0; %задание маски ФВЧ

Spectr_output_image = Spectr_input_image.* mask; %изменение спектра

figure(2)

imagesc(20*log(abs(Spectr_output_image))) % вывод измененного спектра

output_image = (ifft2(ifftshift(Spectr_output_image), 'symmetric')); %обратное 2D-БПФ

max_output_image = max(max(output_image));

output_image = uint8(255.*output_image./max_output_image); %нормировка

output_image = 255 - output_image; % инверсия

figure(3), imshow(input_image) figure(4), imshow(output_image)

imwrite(output_image, 'D:/output_gray_image.jpg'); %запись полученного изображения в файл

Рисунок 1 – MATLAB-программа, реализующая метод Фурье-фильтрации изображения с целью выделения краев объектов

3

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №4 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. ГУАП, 2023. – 11 с.

Рисунок 2 – Результат Фурье-фильтрации изображения при помощи фильтра, выделяющего края объектов: слева исходное изображение, справа –

результат фильтрации.

Пространственная фильтрация. Фильтрацию изображений можно производить без вычисления спектра изображения, непосредственно во пространстве значений пикселей изображения. В частности, уравнение работы нерекурсивного пространственного фильтра

 

= ∑

 

 

(2)

,

=−

=−

,

− , −

 

предполагает выполнение операции взвешенного суммирования значений пикселей исходного изображения в некоторой окрестности для каждого пикселя ,. для всех индексов n и m. Нетрудно видеть, что (2) является двумерным обобщением алгоритма фильтрации одномерных сигналов во временной области.

Матрица { ,} размера (p+1) на (q+1) полностью определяет характеристики фильтра и называется маской фильтра.

Заметим, что при использовании формулы (2) возникает некоторая сложность обработки изображения на краях (p и q пикселей).

В отличие от одномерных сигналов, двумерные фильтры имеют весьма небольшие величины p и q. Часто довольно эффективную обработку изображений удается осуществить, выбирая p=1 и q=1.

На рисунке 3 приведен текст mat-файла, реализующий алгоритм пространственной фильтрации, позволяющий решать задачу, аналогичную той, которая решалась посредством программы, текст которой приведен на рисунке 1. Алгоритм использует маску фильтра Собеля.

4

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №4 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. ГУАП, 2023. – 11 с.

clc,clear, close all

input_image = imread('D:/input_image.jpg'); %чтение изображения input_image = rgb2gray(input_image); %перевод в оттенки серого figure(1)

imshow(input_image)

output_image = edge(input_image,'Sobel'); %реализуем фильтр для выделения краев с применением фильтра Собеля

max_output_image = max(max(output_image));

output_image = uint8(255.*output_image./max_output_image); %нормировка

output_image = 255 - output_image;

figure(2) imshow(output_image) title('output image')

imwrite(output_image, 'D:/output_spatial_filtered.jpg'); %запись восстановленного изображения в файл

Рисунок 3 – MATLAB-программа фильтрации изображения при помощи метода Собеля, выделяющего края объектов

Рисунок 4 – Результат фильтрации изображения при помощи метода Собеля, выделяющего края объектов: слева исходное изображение, справа – результат фильтрации

Можно заметить, что результат фильтрации алгоритмом, приведенным на рисунке 3, несколько отличаются от результата фильтрации по алгоритму на рисунке 1, поскольку в алгоритме встроенной функции edge MATLAB, помимо фильтрации с маской реализован еще пороговый метод бинаризации изображения, вследствие чего на выходном изображении меньше артефактов.

При желании улучшить качество результата, получаемого в программе, приведенной на рисунке 3, достаточно вставить дополнительную строчку

5

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №4 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. ГУАП, 2023. – 11 с.

output_image = imbinarize(output_image, 'global');

в результате чего алгоритм бинаризации осуществит преобразование изображения к двум уровням, используя глобальный пороговый уровень.

На рисунке 5 приведен результат работы программы после бинаризации. Заметим, что в MATLAB реализованы многие другие алгоритмы,

предназначенные для выделения границ объектов, такие как "Prewitt"

"Roberts", "log", "zerocross", "Canny", "approxcanny": соответствующие методы можно использовать в программе, приведенной на рисунке 3, написав любое из этих слов вместо метода 'Sobel'.

Рисунок 5 – Сравнение результатов обработки изображения при помощи метода фильтрации в спектральном пространстве с последующей бинаризацией (слева) и метода Собеля (справа)

Фильтры, компенсирующие влияние искажений движения. Среди множества актуальных задач обработки изображений является компенсация специфических искажений, возникающих при фотографировании сцен устройствами, которые претерпевали изменение местоположения в процессе экспозиции. Таким образом формируется искажение, известное как “смазывание” (blurring). Теоретические положения, позволяющие осуществить некоторую компенсацию таких искажений, слишком сложны для изложения в рамках методических указаний к лабораторной работе.

Существуют как минимум два стандартных алгоритма, более-менее успешно справляющиеся с решением данной задачи: метод восстановления изображений с использованием регуляризации Тихонова и метод инверсной винеровской фильтрации. Оба метода реализованы в MATLAB в виде стандартных функций: deconvreg и deconvwnr, соответственно. Однако, для корректной работы данных методов нужно задавать модель искажений. Если модель искажений задана неточно, эффективность работы данных фильтров резко снижается. Устойчивых алгоритмов идентификации вида искажений для общего случая не существует, поэтому обычно исследователи

6

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №4 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. ГУАП, 2023. – 11 с.

иразработчики алгоритмов обработки изображений прибегают к тем или иным обоснованным рабочим гипотезам, или осуществляют кропотливый подбор параметров искажающей модели, ориентируясь на конечный результат. Последним параметром в списке параметров каждой из функций, является оценка уровня шума на изображении, что в каждом конкретном случае является отдельной нетривиальной задачей. Таким образом, простого

иуниверсального решения для данной задачи, пригодного на все случаи жизни, просто нет.

На рисунке 6 представлен текст mat-файла [1], который позволяет внести искажения в имеющееся изображение. В данном случае искажение соответствует “смазыванию” – нередкое явление при фотографировании. Подобные модели внесения контролируемых искажений полезны при отладке алгоритмов обработки. Здесь и далее для простоты алгоритмы обработки приводятся для черно-белых изображений.

%Пример моделирования смаза и зашумления изображения clc,clear, close all %очистка памяти

RGB = imread('D:/input_image.jpg'); %чтение изображения input_image = rgb2gray(RGB); %преобразование в черно-белое изображение

%Вывод изображения (с повышенным контрастом) в 1-е подокно: figure

subplot(1,2,1), imshow(input_image,[])

title('input image','FontSize',10, 'FontName','Tahoma')

%Создание маски (модель искажений) для смазывания изображения:

PSF = fspecial('motion',8,35); %формируем фильтр для внесения искажений типа смаз, длиной 8 пикселей под углом 35 град. %Смазывание изображения:

S = imfilter(input_image, PSF,'circular');

%Зашумление смазанного изображения импульсным шумом ("соль и перец"):

distorted_image = imnoise(S,'salt & pepper',0.01); %зашумлено 1%

изображения

%Вывод смазанного и зашумленного изображения во 2-е подокно: subplot(1,2,2), imshow(distorted_image,[])

title('distorted image','FontSize',10,'FontName','Tahoma') imwrite(distorted_image, 'D:/distorted_image.jpg'); %запись искаженного изображения в файл

Рисунок 6 – MATLAB-программа в виде mat-файла, позволяющая формировать изображение, искаженное смазом, отображать его и сохранять в файл в формате *.jpg

На рисунке 7 приведена программа [1], которая позволяет обработать изображение, искаженное программой, приведенной на рисунке 6. Модель

7

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №4 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. ГУАП, 2023. – 11 с.

искажений в программе задана идентичной той, которая была применена в программе, приведенной на рисунке 6.

Результаты работы программы приведены на рисунке 8.

clc, clear, close all %очистка памяти

input_image = imread('D:/distorted_image.jpg'); %чтение изображения

%input_image = rgb2gray(input_image); %перевод в оттенки серого figure

subplot(2,2,1), imshow(input_image)

%%Параметры смаза изображения: Delta = 8; %длина смаза в пикселях theta = 35; %угол смаза в град

PSF = fspecial('motion',Delta,theta); %PSF (модель искажений)

%%устранение смаза изображения

Tikh = deconvreg(input_image,PSF,[],1e-2); %по Тихонову subplot(2,2,2), imshow(Tikh)

title('Restored image Tikhonov')

imwrite(Tikh, 'D:/restored_image_Tikhonov.jpg'); %запись восстановленного изображения в файл

Wnr = deconvwnr(input_image,PSF,1e-2); %по Винеру subplot(2,2,3), imshow(Wnr)

title('Restored image Wnr')

imwrite(Wnr, 'D:/restored_image_Wiener.jpg'); %запись восстановленного изображения в файл

Рисунок 7 – MATLAB-программа, реализующая два метода фильтровкомпенсаторов искажений типа “смазывание”

Рисунок 8 – Результат компенсации смазывания изображения: в центре исходное искаженное изображение, слева – результат фильтрации: по методу регуляризации Тихонова, справа – по методу инверсной винеровской фильтрации.

Из рассмотрения рисунка 8 можно сделать вывод, что в данном конкретном случае метод компенсации смазывания изображения, основанный на методе регуляризации Тихонова, работает лучше, чем метод на основе винеровской фильтрации. Подчеркнем еще раз, что при

8

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №4 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. ГУАП, 2023. – 11 с.

несоответствии модели искажений, принятой в алгоритме компенсации смазывания, реальному механизму воздействия этих искажений на исходное изображение, результат компенсации будет хуже. Обучающимся предлагается проверить этот факт, изменяя в некоторых пределах числовые значения параметров Delta и theta в программе, приведенной на рисунке 7.

Варианты заданий

Задание на лабораторную работу включает 2 части. Каждый обучающийся выбирает изображение для выполнения работы по своему усмотрению.

В первой части следует осуществить фильтрацию изображения с целью выделения краев объектов. В методе фильтрации в спектральном пространстве (см. рисунок 1) неочевидным является выбор параметра space_freq, который каждый обучающийся должен подобрать в процессе выполнения работы, ориентируясь на субъективно наилучший результат обработки.

Вторая часть предполагает реализацию двух методов компенсации смазывания изображения и исследование влияния неточности задания модели искажений в алгоритме компенсации смазывания на получаемые результаты.

В программе, текст которой приведена на рисунке 6, в изображение, помимо смаза, вносится дополнительный шум типа “соль и перец”. Имеются другие варианты внесения в изображение искажений типа расфокусировки и дополнительного шума, с разными характеристиками.

Варианты искажающего шума приведены в таблице 1. Варианты искажений типа расфокусировки приведены в таблице 2. Ненулевые значения параметров функций в таблицах 1 и 2обучающийся может изменять по своему усмотрению.

Таблица 1 – Варианты шумов, вносимых в искаженное изображение

Вар.

Вид шума

1

%% шум типа "соль и перец"

 

distorted_image = imnoise(S,'salt & pepper',0.001);

 

%зашумлено 0.1% изображения

2

%% гауссовский шум

 

distorted_image = imnoise(S,'gaussian',0,0.0001);

 

% с нормированной дисперсией, равной 0.0001 (нормированное

 

СКО равно 0.01, т.е. истинное значение сигма, с учетом

 

нормировки равно 2.55)

 

 

3

%% мультипликативный шум (спекл-шум)

 

distorted_image = imnoise(S,'speckle',0.0001);

 

 

9

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №4 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. ГУАП, 2023. – 11 с.

Таблица 2 – Варианты искажений, вносимых в искаженное изображение

Вар.

Вид искажений

1

%% движение фотоаппарата на P

пикселей под углом А градусов

 

PSF = fspecial('motion',P,A);

 

 

S = imfilter(input_image,PSF,'replicate');

 

 

 

2

%% движение фотоаппарата на P

пикселей под углом А градусов

 

PSF = fspecial('motion',P,A);

 

 

S = imfilter(input_image, PSF,'circular');

 

 

 

3

%% сферическая расфокусировка

радиусом в P пикселей

 

PSF = fspecial('disk',P);

 

 

S = imfilter(input_image, PSF,'replicate');

 

 

4

%% расфокусировка по гауссовскому закону

 

PSF = fspecial('gaussian',P,Sigma);

 

S = imfilter(input_image, PSF,'replicate');

 

 

 

Для выполнения лабораторной работы каждому обучающемуся выдается 2 варианта – один по таблице 1, другой – по таблице 2.

При необходимости создания собственных тестовых изображений можно использовать бесплатный редактор, входящий в MS Windows.

Порядок выполнения работы

1.Согласовать с преподавателем вариант задания во время занятия по расписанию, удостовериться в правильном понимании задания и критериев его оценки.

2.Выполнить первую часть лабораторной работы: обработать тестовое изображение при помощи алгоритмов, реализованных в программах, приведенных на рисунках 1 и 3. Подобрать значение параметра space_freq, при котором результат работы будет субъективно наилучшим. Сохранить несколько изображений, полученных при различных space_freq.

3.Выполнить вторую часть лабораторной работы, используя шаблон программы, приведенной на рисунке 6: получить модельное изображение с заданными искажениями типа “смазывание” или расфокусировка. Сохранить несколько изображений, полученных при различных значениях параметров функции, реализующей искажение изображения. Осуществить восстанавливающую фильтрацию искаженного изображения, используя программу, приведенную на рисунке 7, как шаблон.

4.При желании можно попытаться смоделировать реальную ситуацию: попросить другого студента изменить параметры искажений типа расфокусировка и/или параметров зашумления и попытаться подобрать необходимые значения в алгоритме восстановления изображения, ориентируясь только на качество получаемого результата.

10

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №4 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. ГУАП, 2023. – 11 с.

Соседние файлы в папке ЛР4