close

Вход

Забыли?

вход по аккаунту

?

Timofeevndd

код для вставкиСкачать
Министерство образования и науки Российской Федерации
Государственное образовательное учреждение
высшего профессионального образования
Санкт-Петербургский государственный университет
аэрокосмического приборостроения
ОСНОВЫ ТЕОРИИ И ПРАКТИКА
ЦИФРОВОЙ ОБРАБОТКИ ИЗОБРАЖЕНИЙ
Методические указания
к практическим работам
Санкт-Петербург
2010
Составители: Н. А. Обухова, Б. С. Тимофеев
Рецензенты: доктор техн. наук, профессор Л. Л. Полосин; доктор
техн. наук, профессор Н. В. Лысенко
Даны теоретические материалы по основным направлениям
цифровой обработки сигналов изображений. Рассмотрены элементы
теории сигналов, организация базиса и разложение сигналов по системе базисных функций. Изложены вопросы дискретизации и восстановления аналоговых сигналов, цифровой фильтрации линейными, логическими и морфологическими фильтрами. Обсуждены методы сжатия неподвижных и движущихся изображений. Сформулированы задания по моделированию и контрольные вопросы для
каждого из разделов теоретических материалов. Даны практические рекомендации по составлению моделирующих программ с использованием программного пакета Delphi. Приведены примеры
листингов фрагментов программ, призванные помочь в освоении методов программирования студентам радиотехнического профиля,
не имеющим фундаментальной подготовки в области программирования.
Предназначены для студентов радиотехнического факультета,
осваивающих специальность «Аудиовизуальная техника»; могут
быть полезны студентам, изучающим другие специальности радиотехнического направления.
Подготовлены к публикации кафедрой радиоэлектронных и телевизионных систем и рекомендованы к изданию методической комиссией Санкт-Петербургского государственного университета аэрокосмического приборостроения.
Редактор А. Г. Ларионова
Верстальщик С. Б. Мацапура
Сдано в набор 21.10.10. Подписано к печати 30.12.10.
Формат 60×84 1/16. Бумага офсетная. Усл.-печ. л. 5,9.
Уч.-изд. л. 5,8. Тираж 150 экз. Заказ № 608.
Редакционно-издательский центр ГУАП
190000, Санкт-Петербург, Б. Морская ул., 67
© Санкт-Петербургский государственный
университет аэрокосмического
приборостроения (ГУАП), 2010
Предисловие
Цифровое представление сигналов и их обработка с помощью
компьютеров стали обычной практикой в большинстве областей
деятельности человека, связанных с изображениями. Аналоговое
телевидение, пленочные фотоаппараты прекращают свое существование, не выдержав конкуренции с цифровыми технологиями. Разложение видеосигналов по системе подходящих базисных функций
(переход в спектральную плоскость) позволяет выявить особенности изображений, которые не видны в исходном сигнале (в сигнальной плоскости). Цифровая обработка дает возможность исправить
изображения, полученные с ошибками в экспозиции, цветопередаче, фокусировке (реставрация изображений). Низкочастотная
цифровая фильтрация (фильтры НЧ) позволяет сгладить влияние
помех на изображения, высокочастотная (фильтры ВЧ) – повысить
их четкость. Оказывается возможным препарировать изображения
с целью выделить их наиболее информативные участки для решения задач сегментации, различения и сопровождения объектов.
Цифровое представление изображений связано с определенными
издержками (шумами квантования, муар-эффектом), из которых
наиболее существенным представляется резкое повышение требований к пропускной способности каналов связи и емкости цифровых носителей информации. Поэтому без компрессии видеоданных
переход к цифровым технологиям в настоящее время оказывается
технологически и экономически нецелесообразным.
Практикум по цифровой обработке изображений наряду с получением теоретических знаний призван обеспечить повышение
уровня подготовки специалистов в области аудиовизуальной техники. В ходе проведения занятий по курсу «цифровая обработка
аудиовидеосигналов» авторы пришли к мнению, что использование студентами для моделирования операций интегрированных
пакетов (MatLab, PhotoShop и др.) или специализированных программ, разработанных преподавателями, недостаточно эффективно с методической и познавательной точек зрения. Самостоятель3
ное же составление студентами программ обработки изображений
на основе реализации теоретических положений дает двойной эффект. С одной стороны, студенты вынуждены глубоко разбираться
в сущности поставленной задачи и в результате видят плоды своих
трудов, с другой – получают навыки программирования, что, несомненно, пригодится им в будущей практической деятельности.
Это предопределило содержание и порядок изложения материала в предлагаемых читателям указаниях. В первой части даны теоретические положения по ряду аспектов цифровой обработки изображений, задания на программирование и контрольные вопросы.
Вторая часть содержит практические рекомендации по составлению программ в среде Delphi. По каждому заданию даны пояснения
и примеры текстов программ по вводу изображений, их обработке
и выводу результатов моделирования на экран монитора. Это поможет успешно справиться с заданиями студентам, не имеющим
фундаментальной подготовки в области программирования.
Первая часть книги написана Б. С. Тимофеевым, за исключением контрольных вопросов, составленных соавтором. Втора часть
книги написана Н. А. Обуховой.
4
1. ОСНОВЫ ТЕОРИИ
ЦИФРОВОЙ ОБРАБОТКИ ИЗОБРАЖЕНИЙ
1.1. Краткие сведения из теории сигналов
1.1.1. Организация базиса
Аналоговый сигнал является аналогом порождающего его процесса и может быть описан, например, функциональной зависимостью u(x). В таком сигнале вблизи некоторой точки с координатой
x всегда можно выделить точку с координатой x + dx, расположенную бесконечно близко к исходной.
В дискретном сигнале по оси x задают только отдельные точки,
в интервале между которыми сигнал не существует. Расстояния
между точками в большинстве случаев выбирают одинаковыми.
Переменную x заменяют индексом k (рис. 1.1.1).
В цифровом сигнале дискретные отсчеты сигнала квантуют по
уровням, что дает возможность каждому уровню поставить в соответствие цифровой код конечной размерности. Дискретный (или
цифровой) сигнал, заданный на конечном интервале совокупностью N значений отсчетов, может быть записан в виде N-мерного
T
вектора u = (u0 ,u1, ..., uN−1 ) , принадлежащего пространству RN –
– u ∈ RN. Тем самым сигналу придают геометрический смысл. Чтобы наглядно представить вектор u, откладывают значения отсчетов
сигнала по осям координатной системы и строят вектор (рис. 1.1.2).
Так сигнал отображают точкой в N-мерном пространстве. Например, один кадр телевизионного сигнала соответствует точке
в 440 000-мерном пространстве.
VY
HL
VL
Y
™Æ¹ÄǼǻÔÂÊÁ¼Æ¹Ä
¬ÉÇ»ÆÁ
û¹ÆËÇ»¹ÆÁØ
L
L
ÁÊÃɾËÆÔÂÊÁ¼Æ¹Ä
¯ÁÍÉÇ»ÇÂÊÁ¼Æ¹Ä
Рис. 1.1.1. Аналоговый, дискретный и цифровой сигналы
5
Сигнал u1 находится в другой точке пространства RN. Различия
между сигналами трактуют как расстояние. Если определена метрика d, пространство называют метрическим. Множество векторов образует линейное пространство. В нормированном линейном
пространстве определена норма (длина) вектора, это расстояние
от точки в пространстве до начала координат. Таким образом, расстояние между сигналами u и u1 есть норма разностного вектора
g (см. рис. 1.1.2).
Последним шагом в усовершенствовании структуры пространства является введение дополнительной геометрической характеристики – это угол β между векторами u и u1, который определяют через скалярное произведение векторов 〈u,u1 〉= u T u1 = u ∗ u1 cos β.
Скалярное произведение называют еще внутренним произведением двух векторов. Через скалярное произведение выражают евклидову норму вектора u =〈u,u〉1/2 , которая, в свою очередь, определяет метрику в линейном пространстве RN.
Линейной комбинацией называют вектор, образованный суммированием нескольких векторов со скалярными коэффициентами:
N-1
{Ri } являются линейно незавиå A iRi . Векторы в множестве
n-1
симыми, если равенство å A i Ri = 0 справедливо только при всех
b=
i=0
i=0
α i = 0. Другими словами, в линейно независимом множестве векторов ни один из них не может быть получен в результате линейной
комбинации других векторов этого множества. В геометрическом
смысле это утверждение означает, что в двумерном пространстве
векторы координатной системы не могут находиться на одной прямой, в трехмерном – на одной плоскости и т. д.
V
V
H
V
V
V
VO
Рис. 1.1.2. Векторы сигналов
6
Множество линейно независимых векторов {Ri , i = 0, 1, ..., N -1}
называют базисом для пространства RN. Каждый вектор в пространстве RNсоответствует единственной линейной комбинации векторов ri, умноженных на скалярные коэффициенты u N1
¤ A iRi .
i0
Набор из N чисел a = {ai} является представлением вектора u по
отношению к базису {ri} или его спектром. Такое представление
должно быть отнесено к конкретному базису. Важно понимать, что
любое множество линейно независимых векторов в пространстве
RNявляется его базисом; таким образом, линейное пространство
может иметь не один базис. Различные наборы из N чисел (спектры) могут представлять один и тот же вектор по отношению к различным базисам. В геометрическом смысле это эквивалентно смене систем координат: сигнал один, а координатных систем для его
представления может быть бесконечно много.
В большинстве случаев предпочитают использовать ортогональный базис. Два вектора называют ортогональными, если их
скалярное произведение равно нулю. Базис {jn} называют ортонормальным, если
« 1 ïðè n s
®
Jn , Js ¯ D(n, s) ®
,
¬
®
®
­0 ïðè n x s
где δ(n, s) – символ Кронекера.
При реализации целого ряда практических приложений целесообразно сначала преобразовать исходный сигнал в спектр, провести
его обработку, а затем восстановить полученный сигнал. Существуют следующие основные области применения спектральных преобразований для обработки изображений: фильтрация; выделение
характерных признаков изображений; кодирование изображений;
сжатие (сокращение размерности) изображений. Например, постоянная составляющая спектра Фурье пропорциональна средней яркости изображения; высокочастотные составляющие ответственны
за его контуры. Если подавить определенные спектральные составляющие, то будет реализована фильтрация изображения. В силу
малой чувствительности глаза к градациям яркости мелких деталей изображения высокочастотные составляющие спектра можно
кодировать с меньшим числом уровней квантования. Для большинства натурных изображений высокочастотные составляющие
спектра малы по амплитуде и могут быть исключены практически
без потери качества восстановленного изображения.
7
Значение каждой составляющей спектра характеризует вклад
соответствующей спектральной (базисной) функции в энергию исходного изображения. При такой трактовке понятие частоты применяют не только к синусам и косинусам, но и к другим базисным
функциям, которые в свою очередь представляют наборами чисел
(векторами).
Пусть RN – N-мерное пространство, натянутое на необязательно ортонормированный базис {{r
ρnn,, n = 0, 1, 2, ..., N −1}.
}. Тогда для
любого ограниченного сигнала u, представленного в виде вектора
в пространстве RN, имеем его выражение через координаты этого
пространства
u
N1
¤ AnRn .
(1.1.1)
n0
Для вычисление коэффициентов αn этого представления умножим скалярно правую и левую части выражения (1.1.1) на вектор
Rs: u, Rs¯
N1
¤ Rn, Rs¯An.
n0
Запишем эту систему уравнений в развернутом виде
¨ R ,R ¯
R1,R0 ¯
© 0 0
© R0 ,R0 ¯
R0 ,R0 ¯
©
©
.
.
©
©
.
.
©
©
.
.
©
©
©ª R0 ,RN1 ¯ R1,RN1 ¯
.
.
.
.
.
.
.
.
.
.
.
.
. RN1,R0 ¯ · ¨ A 0 · ¨ u,R0 ¯ ·
¸©
¸ ©
¸
. RN1,R0 ¯ ¸ © A1 ¸ © u,R1 ¯ ¸
¸©
¸ ©
¸
¸©
¸ ©
¸
.
.
.
¸. © . ¸ ©
¸
¸© . ¸ ©
¸
.
.
.
¸©
¸ ©
¸
¸
©
¸
©
¸
.
.
.
.
¸©
¸ ©
¸
¸©
¸ ©
¸
. RN1,RN1 ¯ ¸¹ ©ªA N1 ¸¹ ª© u,RN1 ¯¹̧
или PA B.
Для решения системы уравнений нужно обратить матрицу скалярных произведений P: A P1B. При неудачном выборе базиса
и достаточно большой размерности эта матрица может оказаться
плохо обусловленной, а решение системы уравнений неустойчивым. Коэффициенты αn намного удобнее вычислять при ортонормированном базисе {jn}. Тогда скалярные произведения 〈ϕn , ϕs 〉= 0
при n ≠ s, а при n=s – единице. Матрица P становится единичной, а
система уравнений распадается на N независимых уравнений
A 0 u, J0 ¯; A1 u, J1 ¯, ..., A N1 u, J N1 ¯,
(1.1.2)
и коэффициенты разложения αn оказываются несвязанными [1].
8
Любой косоугольный базис может быть преобразован в ортогональный базис путем применения процедуры ортогонализации
Грамма–Шмидта. Геометрический смысл
процесса ортогонализации Грамма–Шмидта
RJ
поясняется рис. 1.1.3. Чтобы получить j1,
ортогональный r0, нужно из вектора r1 выHR
честь проекцию r1 на r0 Действительно,
R
H10R0 J1 R1, а J1 R1 H10R0 . Образуем
из этого выражения скалярное произведеJ
ние J1, J0 ¯ R1, J0 ¯ H10 R0 , J0 ¯. По условию
ортогональности J1, J0 ¯ 0, тогда скаляр Рис. 1.1.3. Ортогонализация базиса
R , J ¯
H10 0 0 .
R1, J0 ¯
Орты новой координатной системы находят после деления ϕk на
их длину, которая в евклидовом пространстве RN ϕk =〈ϕk , ϕk 〉1/2 .
Рекуррентное выражение для определения системы ортогональных базисных функций {jk} из {rk} имеет вид
k
Jk1 Rk1 ¤
j1
Rk1, J j ¯
J j , J j ¯
Jj .
При получении систем ортонормированных базисных функций
с помощью процедуры Грамма–Шмидта часто пользуются понятием нормы с весом. Весовая функция W позволяет при оценке погрешности приближения сигнала u и его представления v обратить
особое внимание на некоторый участок области определения.
Если область определения сигнала {−1, 1}, а весовая функция
w(x) = 1, то применение к последовательности степенных функций
1, x, x2 , x3 .... процедуры Грамма–Шмидта дает ортонормированные
базисные сигналы
ϕ0 (x) = 1 / 2; ϕ1 (x) = 3 / 2x; ϕ2 (x) =
5
(3x2 −1);
2
7
9
(5x3 − 3x); ϕ4 (x) =
(35x4 − 30x2 + 3), ...,
2
2
ϕm (x)= (2m + 1) / 2Lm (x),
ϕ3 (x) =
где Lm (x) – полиномы Лежандра: Lm (x) =
dm  2
m
(x −1)  .
2m m ! dxm 
1
9
Полиномы Лежандра удобно рассчитывать по рекуррентному
соотношению mLm (x) = (2m −1)xLm−1 − (m −1)Lm−2 (x), где для начала расчета принимают L0 = 1, L1 = x. Базисные сигналы на основе полиномов Лежандра известны тем,
XY
что дают наилучшее среднеквадрати
ческое приближение функций.
Если в аналогичных условиях приме1
нить весовую функцию w(x) =
1 − x2
(рис. 1.1.4), то из степенных функций получают систему ортонормированных базисных функций на основе
Y
полиномов Чебышева первого рода
s
Рис. 1.1.4. Весовая функция Ñm (x) = cos(m arccos x), которые также
могут быть рассчитаны по рекуррентной
формуле Cm+1 (x) = 2xCm (x) − Cm−1 (x), причем C0 (x) = 1; C1 (x) = x.
В силу ортогональности полиномов Чебышева
0 äëÿ m ≠ n
1

Ñm (x)Cn (x)
dx = π äëÿ m = n = 0 .
∫

1 − x2
−1
π / 2 äëÿ m = n ≠ 0
Для получения ортонормированного базиса нужно нулевой многочлен поделить на π , а все последующие – на π / 2:
ϕ0 = 1 / π ; ϕ1 (x) =
ϕ3 (x) =
1
π /2
1
π /2
x; ϕ2 (x) =
1
π /2
(2x2 −1);
(4x3 − 3x), ...
Базисные функции на основе полиномов Чебышева обеспечивают наилучшее равномерное приближение.
Чтобы воспользоваться этими базисными функциями для преобразования дискретных сигналов, их нужно представить в виде
совокупности отсчетов. Если произвольно дискретизировать, например, полиномы Чебышева, то сохранить их ортогональность
не удается. Рассмотрим базисные функции, заданные численно, и
ортогональные на системе отсчетных точек. Многочлены ϕn (x)
называют ортонормированными на системе точек {xi } с весами
{wi }, где 1 ≤ i ≤ N (число N обязательно должно быть нечетным!),
10
если они удовлетворяют соотношению
N
∑ wi ϕn (xi )ϕs (xi ) = δ(n,s).
i=1
Систему таких многочленов получают из последовательности степенных функций 1, x, x2 , x3 .... методом ортогонализации Грамма–
Шмидта, или пользуясь рекуррентным выражением
λn ϕn+1 (x) = (x − an )ϕn (x) − bn ϕn−1 (x), где
N
an = ∑ wi xi ϕn2 (xi );
i=1
(1.1.3)
N
bn =∑ wi xi ϕn (xi )ϕn−1 (xi ),
i=1
а значение λn определяют из условий нормировки. Для начала расчета принимают
ϕ−1 (x) ≡ 0; ϕ0 (x) =
N
∑ wi .
i=1
Если задать область изменения аргумента x симметричной относительно начала координат, то выражение (1.1.3) существенно
упрощается, так как коэффициент bn оказывается равным нулю:
λn ϕn+1 (x) = xϕn (x) − bn ϕn−1 (x) ïðè – 1 ≤ x ≤ 1.
Коэффициенты разложения находят из условия минимизации
2
взвешенной среднеквадратической оценки
xi ) v(xi ) > min êàê An u, WJn ¯ .
N
2
¤ wi <u(xi ) v(xi )> min êàê A
i1
1.1.2. Задание на моделирование
1. Разработать программу построения базисных функций, ортонормированных на системе из 7 отсчетных точек, с использованием приведенных выше рекуррентных соотношений и весовой функции, подобной показанной на рис. 1.1.4.
Внимание! При определении значений весовой функции на краях диапазона аргументу x нельзя присваивать значения ±1, так
как возникнет ситуация деления на ноль! Поэтому для x = ±1
значение w(x) принимают равным какому-нибудь большому числу, например w(±1) = 25.
2. Записать формулы для 7 базисных функций и рассчитать векторы базисных сигналов.
3. Построить графики базисных функций.
11
N : = 67
wj :=
φ0 : =
 N −1

i −
2 
yi : =
N −1
2
i : = 0..N −1 j : = 1..N − 2
1
1− (y j )2
1
N−1
w 0 : = 25
w N : = 25
N−1
∑ φ02 w1
λ0 : =
λ0 = 1
φ0 = 0.093
1=0
∑ w1
1=0
λ1 : =
N−1
∑ w1 ⋅ φ02 (y1 )2
λ1 = 0.746
Ñ1 : =
1=0
φ1i = C1⋅ yi
b1 : =
Ñ1 = 0.124
N−1
∑ w i yi φ0 ⋅ φ1i
N−1
∑ w i ⋅ (φ2i )2
i= 0
N−1
∑ w1 ⋅ (φ11 )2
h =1
1=0
i=0
λ2 : =
h :=
φ0
λ1
b1 = 0.746 φ2i : = yi ⋅ φ1i − b1⋅ φ0
λ 2 = 0.495
φ2i : =
φ2i
λ2
Рис. 1.1.5. Фрагмент программы
для организации базиса из семи точек
Организуем базис, ортонормированный на 7 точках. Для построения базиса можно использовать программные пакеты
MatCad, MatLab или Delphi. Выше приведен фрагмент программы в среде MatCad для расчета первых трех базисных функций
(рис. 1.1.5).
Контрольные вопросы
1. Дайте определение базиса.
2. Какой базис называется ортонормированным?
12
3. Приведите примеры ортонормированных и не ортонормированных базисов.
4. Дайте определение спектра. Каким образом вычисляют коэффициенты спектрального разложения сигнала?
5. В чем преимущества ортонормированного базиса по сравнению с базисом не ортонормированным?
6. Перечислите и поясните основные шаги процедуры ортогонализации Грамма–Шмидта.
1.2. Спектральное представление сигналов
1.2.1. Разложение сигналов по базису
В телевидении используют одномерные звуковые сигналы и двумерные сигналы изображения. Одномерные сигналы задают в виде
вектора u, а двумерные – в виде матрицы отсчетов U (так называемой битовой карты bitmap) размерностью z× b, где z – число строк,
а b – столбцов.
Для разложения сигнала, представленного в виде вектора u
размером N×1, по некоторому ортонормированному базису (ядру
преобразования) нужно вычислить скалярные произведения этого вектора на векторы, составленные из N отсчетов базисных
функций [см. выражение (1.1.2)]. Чтобы сразу получить вектор
a коэффициентов преобразования, организуют матрицу (оператор преобразования) Φ, строки которой составлены из N отсчетов
базисных функций, причем каждая базисная функция занимает
строку. Исходный сигнал воспроизводят совершенно точно, если
число базисных функций (строк в матрице Φ) равно числу отсчетов сигнала N и матрица Φ квадратная. Результатом разложения является вектор коэффициентов a = Φu или в развернутом
виде
 α 0   ϕ0 (0)
ϕ0 (1)

 
 α1   ϕ1 (0)
ϕ1 (1)

 
 . =
.
.

 
 .  
.
.

 
α
 ϕ
 N−1   ( N−1) (0) ϕ( N−1) (1)
.
.
.
.
.
ϕ0 (N −1)   u0 
.
 

ϕ1 (N −1)   u1 
.
 

.
.
. ×  .  .
  . 
.
.
 

. ϕ( N−1) (N −1)  uN−1 
13
Восстановленный сигнал u = Φ–1a, где используют матрицу, обратную Φ. По определению, обратной называют такую матрицу,
которая после умножения напрямую дает единичную матрицу:
Ф−1Ф = 1. В данном случае обратная матрица равна транспонированной прямой матрице Ф−1 = ФT , поскольку базисные функции, составляющие оператор преобразования, ортонормированы и
ФФT = 1. Действительно, скалярные произведения строк матрицы
Ф и столбцов матрицы ФT с различными номерами дают нули, а с
одинаковыми – единицы. В результате обращение матрицы не требуется и u = ΦTa.
Сигнал от изображения записывают в виде массива отсчетов
 u11 u12

 u21 u22

.
U =  .
 .
.

u
 N1 uN 2
.
.
.
.
.
. u1N 

. u2N 

.
.  , .
. 
. uNN 
(1.2.1)
который для простоты будем считать квадратным с размером N × N.
В отличие от предыдущего случая, теперь сигнал является двумерным, и преобразование также должно быть двумерным. Чтобы
сохранить преемственность изложения, представим массив отсчетов сигнала в виде длинного вектора u размером N2 × 1, например
путем развертки по столбцам:
u = (u11,u21, ..., uN1,u12 ,u22 , ..., uN 2 , ..., u1N ,u2N , ..., uNN )T .
Полученные ранее выражения для прямого и обратного преобразований будут справедливы, если оператор двумерного преобразования Фxy разделим и получен путем произведения одномерных
операторов по направлениям y и x: Ф xy = Ф y ⊗ Ф x . Здесь знак ⊗
означает прямое левое кронекерово произведение матриц, в ходе
выполнения которого каждый элемент матрицы Фy умножают на
всю матрицу Фx. Размерность так полученной матрицы Фxy (N2 ×
× N2), и даже при сравнительно небольших значениях N с ней трудно оперировать. Поэтому предпочитают выполнять двумерное преобразование массива U сначала по столбцам, а затем по строкам
путем его последовательного умножения на транспонированную
матрицу Фx и матрицу Фy. Результатом преобразования является
матрица трансформант
14
(1.2.2)
A = Ф y UФTx той же размерности, что и исходный массив сигнала U.
В развернутом виде матрица коэффициентов
 α 00 α 01 . . α 0 N 


 α10 α11 . . α1N 


.
. .
.  . (1.2.3)
A =  .
 .

.
.
.
.


α

.
.
α
α
N1
NN 
 N 0
Число математических операций при таком выполнении преобразования остается прежним, однако для размещения матрицы Фxy
в памяти ЭВМ нужно N4 ячеек, а матриц Фx и Фy – только 2×N2.
Для восстановления сигнала матрицу трансформант A нужно
умножить на матрицы, обратные исходным матрицам преобразований, причем операцию обращения выполняют путем транспонирования:
(1.2.4)
U = ФT
y AФ x .
Если массив изображения квадратный, то для преобразования
по направлениям x и y используют одну и ту же матрицу Ф [1].
1.2.2. Разложение сигналов в ряд Фурье
При разложении в ряд Фурье ортонормированными базисными
сигналами являются синусы и косинусы. Неоспоримое преимущество
разложения в ряд Фурье заключается в том, что базисные гармонические функции проходят через линейные системы без изменения своей формы. В ряд Фурье можно разложить периодические сигналы, так
как дискретный спектр соответствует только периодическому сигналу! Поскольку в действительности далеко не каждый сигнал является
периодическим, пользуются тем, что сигнал, заданный на конечном
интервале, практически аналогичен периодическому сигналу, с периодом, равным значению этого интервала. Предположим, аналоговая
функция f(x) определена на интервале, например –π ÷ π. Тогда
f (x) = a0 / 2 +
n=∞
∑ (an cos nx + bn sin nx),
n=1
где коэффициенты ряда
15
π
1
f (x)cos nxdx;
π∫
an =
π
bn =
−π
1
f (x)sin nxdx.
π∫
−π
Предположим, функция задана на интервале –λ/2 ÷ +λ/2, где
λ – пространственный период функции (длина волны λ первой гармонической составляющей). Тогда
f (x) = a0 / 2 +
n=∞
∑ an cos
n=1
2πn
2πn 
x + bn sin
x,
λ
λ 
а коэффициенты ряда
an =
2
λ
λ /2
∫
f (x)cos
−λ /2
2π
2
nxdx; bn =
λ
λ
λ /2
∫
f (x)sin
−λ /2
2π
nxdx.
λ
Величина, обратная λ, есть пространственная частота, а
2π
= ϖS – пространственная круговая частота. Выражения для коλ
эффициентов ряда можно переписать в такой форме:
an =
ϖS
π
λ /2
∫
f (x)cos(nϖS x)dx; bn =
−λ /2
ϖS
π
λ /2
∫
f (x)sin(nϖS x)dx.
−λ /2
Для расчета коэффициентов ряда Фурье берут один период периодической функции. Если функция задана на конечном интервале, то периодическую функцию организуют путем ее периодиче¤ÁÆÁØÊÁÅžËÉÁÁ
°¾ËÆǾÈÉǽÇÄ¿¾ÆÁ¾ÊÁ¼Æ¹Ä¹
À¾ÉùÄÕÆǾÇËɹ¿¾ÆÁ¾
¦¾Ð¾ËÆǾÈÉǽÇÄ¿¾ÆÁ¾ÊÁ¼Æ¹Ä¹
Рис. 1.2.1. Продолжения сигналов
16
ского продолжения. Существуют два способа периодического продолжения сигналов: согласно первому, к сигналу пристраивают его
зеркальное отражение; согласно второму – отрезки сигналов пристраивают друг к другу, налагая крайние элементы (рис. 1.2.1).
В первом случае функция четная: f (−x) = f (x), и все коэффициенты при синусах обращаются в нуль. Во втором – функция нечетная:
f (−x) = −f (x), и коэффициенты при косинусах обращаются в нуль.
Так можно вдвое сократить число вычислений при преобразовании.
Для дискретных сигналов применяют дискретное преобразование Фурье (ДПФ). На практике чаще всего используют четное
дискретное косинусное преобразование (ДКП), когда для организации четной функции крайние элементы сигнальной последовательности дублируют, и линия симметрии проходит посередине между ними (см. рис. 1.2.1). Теперь сигнал – это вектор
J
Y
J
Y
J
Y
J
Y
J
Y
J
Y
*
Y
Рис. 1.2.2. Базисные функции ДКП при N=8
17
u = (u0 ,u1, ..., uk , ..., uN−1 )T размером N×1, а базисные сигналы –
T
векторы jϕnn = (ϕn (0), ϕn (1), ..., ϕn (k), ..., ϕn (N −1)) также размером N×1. Элементы векторов jn представляют собой отсчеты косинусов:
 πn

ϕ0 = 1 / N , åñëè n = 0; ϕn (k) = (2 / N) cos  (k + 1 / 2) , åñëè n > 0,
 N

 πn

(1.2.5)
n = 0; ϕn (k) = (2 / N) cos  (k + 1 / 2) , åñëè n > 0,
 N

где n – это номер гармонической составляющей (строки в матрице
преобразования Ф); k – номер отсчета (столбца в матрице Ф).
Например, при N = 8 рассчитанные по выражению (1.2.5) графики базисных сигналов являются грубыми приближениями к
косинусоидам (рис. 1.2.2). Для высших частот сходство теряется.
Результатом одномерного ДКП является вектор коэффициентов
преобразования a
α = (α 0 , α1, ..., αn , ..., α N−1 )T .
При обработке изображений двумерный сигнал представляет собой матрицу U [см. формулу (1.2.1)], а результат преобразования –
матрицу A [см. формулу (1.2.3)] получают по выражению (1.2.2).
Обратное преобразование выполняют согласно выражению (1.2.4).
1.2.3. Задание на программирование
1. Рассчитать матрицу базисных сигналов Ф ДКП при N=8 по
выражению (1.2.5).
2. Вывести на экран матрицу преобразования Ф размером 8×8,
состоящую из отсчетов базисных сигналов.
3. Построить графики всех составляющих базиса (кроме нулевой).
Ввести тестовое изображение в программу обработки и разбить
его на блоки размером 8×8 элементов.
4. Выполнить ДКП для всех блоков изображения.
5. Предусмотреть возможность просмотра коэффициентов преобразования в виде численных значений матрицы A и их трехмерной гистограммы для любого из блоков по указанию манипулятора
«мышь».
В дальнейшем разработанная программа и матрицы значений
коэффициентов преобразований должны быть использованы для
моделирования системы сжатия изображения.
18
Контрольные вопросы
1. В чем отличие дискретного преобразования Фурье и дискретного косинусного преобразования? Почему возможен переход от
ДПФ к ДКП?
2. Каким образом может быть получена матрица трансформант
ДКП двумерного сигнала? Что такое разделимое преобразование?
3. Поясните связь между свойствами изображения и значениями матрицы трансформанта, полученными с помощью ДКП.
4. Почему при использовании ДКП изображение предварительно разбивают на блоки?
5. Что такое обратное ДКП и как его реализуют?
1.3. Дискретизация и квантование аналоговых изображений
1.3.1. Дискретизация изображений
Обрабатываемое аналоговое изображение представляют в виде
поля распределения яркости L(x, y) в зависимости от координат x,
y. В аналоговом сигнале вблизи некоторой точки с координатами
(x, y) всегда можно выделить точку с координатами (x + dx, y + dy),
расположенную бесконечно близко к исходной. В дискретном сигнале задают только отдельные точки, в интервале между которыми сигнал не существует. Расстояние между этими точками фиксировано (в большинстве случаев – одинаковое). Переменные (x,
y) заменяют индексами k, l. В цифровой форме изображение – это
двумерная матрица, в ячейках которой помещены значения дискретных отсчетов яркости. Процесс такого преобразования изображения называют дискретизацией. Отсчеты исходного изображения получают путем перемножения двумерной функции L(x, y) с
пространственно-дисретизирующей функцией
S(x, y) =
k=∞ l=∞
∑ ∑
δ(x − k∆x, y − l∆y),
k=−∞ l=−∞
состоящей из бесконечного числа дельта-функций, заданных в
узлах прямоугольной решетки с шагом (∆x, ∆y) , как показано на
рис. 1.3.1. Напомним, что двумерная дельта-функция Дирака обладает следующими свойствами:
19
$Z
$Y
Рис. 1.3.1. Решетка из дельта-функций
∞, x = 0, y = 0,
δ(x, y) = 
;
0 â îñòàëüíûõ ñëó÷àÿõ
∞
ε
ε
∫−ε ∫−ε δ(x, y)dxdy = 1
ïðè ε > 0;
∞
∫ ∫
L(ξ, η)δ(x − ξ, y − η)dξdη = L(x, y).
−∞ −∞
Величина ε здесь обозначает бесконечно малый предел интегрирования.
Дельта-функцию используют, чтобы взять отсчет сигнала в бесконечно малой области с координатами центра x, y. Дискретное
изображение описывают выражением
Lä (x, y) = L(x, y)S(x, y) =
k=∞
∑
l=∞
∑
L(x, y) ⋅ δ(x − k∆x, y − l∆y),
k=−∞ l=−∞
где учтено, что исходная функция L(x, y) теперь задана отдельными отсчетами, взятыми в точках L(k∆x, l∆y).
Для анализа процесса дискретизации используем спектр
F (ϖx , ϖy ), полученный в результате двумерного преобразования
Фурье дискретного изображения. Согласно теореме о свертке, спектр
произведения двух функций можно представить в виде свертки их
спектров (исходного изображения и дискретизирующей функции)
Fä (ϖx , ϖy ) = (1 / 4π2 ) F (ϖx , ϖy ) ∗ Φ(ϖx , ϖy ).
Рассмотрим преобразование Фурье периодической последовательности дельта-функций. Спектральное разложение одномерной
дельта-функции
∞
Φ (ϖx ) =
∫
−∞
20
∞
δ(x)cos ϖx xdx − j
∫
−∞
δ(x)sin ϖx xdx = cos(0) − j sin(0) = 1.
Спектр дельта-функции равен единице во всем протяжении частотной оси. Спектр периодической последовательности дельтафункций с шагом (∆x, ∆y)
Φ(ϖx , ϖy ) = (4π2 / ∆x∆y)
∞
∞
∑ ∑
m=−∞ n=−∞
δ(ϖx − nϖSx , ϖy − mϖSy )
состоит из единичных спектральных линий, отстоящих друг от
2π
2π
; ϖyS =
, и
друга на значения частот дискретизации ϖxS =
∆x
∆y
совпадает по форме с изображением на рис. 1.3.1.
Спектр исходного изображения должен быть ограничен по ча1
1
стоте так, что F (ϖx , ϖy ) = 0 при ϖx > ϖxS и ϖy > ϖyS . Вычис2
2
ляя свертку спектров, находим выражение для спектра дискретного изображения:
Fä (ϖx , ϖy ) = (1 / ∆x∆y)
∞
∞
∑ ∑
m=−∞ n=−∞
F (ϖx − nϖxS , ϖy − mϖy ).
Спектр дискретного изображения получается путем бесконечного
повторения спектра исходного изображения со сдвигом на значения
ϖxS , ϖyS (рис. 1.3.2.). Если частоты дискретизации ϖxS , ϖyS недостаточны по сравнению с шириной спектра исходного изображения F (ϖx , ϖy ), то соседние спектры перекрываются (см. рис. 1.3.2).
Из отсчетов дискретного изображения Lä (x, y) можно получить
непрерывное изображение методом линейной пространственной
фильтрации. При отсутствии наложения спектров оптимальную
фильтрацию получают, пропуская дискретное изображение через
идеальный фильтр НЧ с частотной характеристикой

1 ïðè ϖx,y < ϖx,yS / 2
.
K (ϖx , ϖy ) = 




0 â îñòàëüíûõ ñëó÷àÿõ
Коэффициент K(ϖx , ϖy ) равен единице только в пределах ϖx , ϖy ,
и все составляющие спектра с m,n ≠ 0 подавлены. Так полученный
спектр не отличается от исходного спектра F (ϖx , ϖy ), и после обратного преобразования Фурье (ОПФ) изображение будет восстановлено абсолютно точно!
Обратное фурье-преобразование от единицы дает импульсную
реакцию восстанавливающего фильтра
1 sin (ω xL x) sin (ω yL y)
R (x, y) =
.
ω yL y
π2 ω xL x
21
VZ
VZ4
VZ4
VY
sVY4 VY4 sVY4
VY4 VY4
sVZ4
VY4
VZ4
Рис. 1.3.2. Пространственный спектр дискретного изображения
Восстановленное изображение получают как свертку последовательности отсчетов с импульсным откликом восстанавливающего
фильтра:
L(x, y) = Lä (x, y) ∗ R (x, y).
Можно сделать следующие выводы об условиях выполнения операций дискретизации и восстановления сигналов без искажений.
– Частота дискретизации (или интервалы дискретизации ∆x, ∆y)
должны быть выбраны в соответствии с теоремой Котельникова!
Это предполагает, что спектр исходного изображения ограничен,
а верхняя граничная частота ωS не превышает половины частоты
дискретизации ϖx , ϖy ≤ ϖS / 2.
– Фильтрация при восстановлении сигнала должна быть произведена фильтром с прямоугольной частотной характеристикой в
пределах ϖxL , ϖyL , а интерполирующая функция должна воспроизводить функцию sin(ϖxL x) / (ϖxL x), где ϖxL , ϖyL – граничные
пространственные частоты восстанавливающего фильтра, причем
в идеальном случае ϖxL = ϖxS / 2; ϖyL = ϖyS / 2.
22
– Совершенно очевидно, что условия идеальной фильтрации и
восстановления физически не реализуемы, так как невозможно получить интерполирующую функцию бесконечных размеров, да еще
распространяющуюся в отрицательную область, или реализовать
фильтр с бесконечно крутым срезом частотной характеристики.
В реальной системе изображение и дискретизующая решетка
имеют конечные размеры, а ширина импульсов отлична от нуля.
Отсчеты могут быть взяты с недостаточной частотой, и тем самым
нарушена теорема отсчетов (Котельникова). В результате происходит наложение спектров (см. рис. 1.3.2). Недостаточная частота
дискретизации приведет к появлению в восстановленном изображении ложных низкочастотных гармоник, так называемых муаров.
Идеальный фильтр НЧ подавит все составляющие, которые находятся за пределами полосы пропускания этого фильтра. Однако
заштрихованная часть спектра входит в полосу пропускания, и ее
уже невозможно подавить! Ошибку, вызванную наложением спектров, определяют через энергию паразитных гармоник, принадлежащих смещенным спектрам, попадающим в полосу пропускания
восстанавливающего фильтра.
Если введена предварительная фильтрация изображения с целью не допустить появление паразитных спектров и изображений
(муаров), то теряется четкость изображения. Таким образом, надо
искать компромисс между четкостью изображения и ошибкой, вызванной наложением спектров.
1.3.2. Квантование ТВ-сигнала
Дискретные отсчеты сигнала изображения квантуют по уровням
яркости: каждому такому уровню ставят в соответствие цифровой
код. Возможности дискретизации по уровням яркости без видимой потери качества изображения обусловлена свойствами глаза.
Человеческое зрение характеризуют дифференциальным порогом
(DL/L)пор = const (закон Вебера–Фехтнера). Если закон Вебера–
Фехтнера справедлив в диапазоне изменения яркостей от Lmin до
Lmax, то число градаций яркости M, которое нужно воспроизводить
на изображении с тем, чтобы человек не заметил подмены:
M ≈ 2,3 lg K / (∆L / L), (1.3.1)
где K – контраст изображения.
23
Численные значения дифференциального порога определены экспериментально в пределах 0,02÷0,05. Если подставить эти значения
в выражение (1.3.1), получим оценку M = 92÷230. Чтобы обеспечить
передачу 230 уровней, применяют 8-разрядный код (28 = 256). Весь
динамический диапазон ТВ-сигнала разбивают на ряд уровней квантования, и каждому такому уровню ставят в соответствие цифровой
код. Между уровнями квантования располагают пороговые уровни
(рис. 1.3.3). Если сигнал превышает пороговый уровень, ему присваивают двоичный код, соответствующий верхнему уровню, если
не превышает – нижнему. При недостаточном числе уровней квантования человек замечает ложные контуры в тех частях изображения,
где яркость исходного изображения изменяется плавно.
Появление ложных контуров вызвано скачкообразным изменением яркости квантованного изображения при переходе от одного
уровня квантования к другому. При использовании равномерной
шкалы квантования и двоичного кода интервал квантования Uкв =
= U0/2n, где U0 – размах сигнала; n – число разрядов двоичного кода.
Поскольку входной сигнал не всегда точно совпадает с уровнями
квантования, возникает ошибка, дисперсия которой s2 = U2кв /12;
эффективное значение – Uкв/ 12. Отношение размаха сигнала к
эффективному значению ошибки квантования в децибелах вычисляют по следующим выражениям:
ψ=
U0 U0 12 U0 12 ⋅ 2n
=
=
= 12 ⋅ 2n ;
σ
Uêâ
U0
ψ = 20 lg 12 ⋅ 2n = 20 lg 12 + 20 ⋅ n lg 2 = (10,8 + 6n).
Таким образом, теоретический предел отношения сигнал/шум
при 8-разрядном квантовании составляет 58,8 дБ. Для улучшения
соотношения сигнал/шум нужно повышать разрядность. В профессиональных сканерах для качественной оцифровки изображений
используют 10-разрядные коды. При этом потенциальное соотношение сигнал/шум повышается до 70,8 дБ.
Глаз человека воспринимает яркость по логарифмическому закону, в то время как оцифровку изображений выполняют линейно. В результате возникает дефицит уровней в области малых яркостей, нужных для глаза человека. Положение усугубляется при
нелинейной обработке изображения (g-коррекции) при g < 1, когда
уровни квантования «растягиваются» в области малых яркостей и
«сжимаются» при больших яркостях. В вещательных цифровых
24
6U
§ËÊоËÆÔ¾
ÌÉÇ»ÆÁ
¬ÉÇ»ÆÁ
û¹ÆËÇ»¹ÆÁØ
™Æ¹ÄǼǻÔÂ
ÊÁ¼Æ¹Ä
U
«¹ÃËÔ
£Ç½Ç»Ô¾¼ÉÌÈÈÔ
Рис. 1.3.3. Преобразование сигнала в цифровой код
ТВ-камерах обработку сигнала, первоначально квантованного на
256 уровней, проводят с использованием 16-разрядных чисел. Однако на выходе снова округляют их до 8 разрядов.
Цветные изображения описывают с помощью «красной», «зеленой» и «синей» координат цвета, или сигналов UR, UG и UB.
Если каждый из сигналов кодирован 8-разрядным кодом, говорят
об «оцифровке глубиной 24 разряда по цвету»: изображение содержит 256⋅256⋅256 = 16 777 216 (≈16,8 млн) цветов. Это гораздо
больше, чем может воспринимать человек: большинство людей
способны различать приблизительно 128 цветовых тонов при 30
значениях насыщенности и 50 уровнях яркости, что соответствует
128⋅30⋅50=192 000 цветов. При максимальном размере изображения 576⋅720 элементов и 24-битовом квантовании цветных сигналов требуемая емкость памяти для записи одного кадра составит
1,2 МБ. Для экономии вычислительных затрат каждую цветовую
составляющую иногда представляют (5÷6)-разрядным кодом, чему
соответствует 32 768 цветов (режим Hi-Color). Этот режим обеспечивает достаточно высокое качество цветовоспроизведения.
В совместимых ТВ-системах выделяют яркостной UW и цветоразностные UR-Y и UB-Y сигналы, которые дискретизируют поразному. В силу пониженной разрешающей способности человеческого зрения при восприятии цветных деталей частоту дискретизации для цветоразностных сигналов допускается снижать в два или
четыре раза в зависимости от принятого стандарта (системы кодирования 4:2:2 и 4:1:1) [1].
25
Согласно рекомендации МККР № 601, число значений квантования в вещательных ТВ-системах принято равным 256.
Для сигналов Y, CR, CB используют значения от 1 до 255, или
от 01 до FF в шестнадцатеричной системе; значение 00 может быть
использовано только для целей синхронизации. Для сигнала Y
стандартного значения 0,7 В рекомендовано использовать 220 градаций: значение черного – 16; значение белого – 235.
Если в сигнале есть выбросы больше 0,7 В и меньше 0 В, могут быть
использованы и другие значения, кроме значения 00, которое предназначено только для синхронизации. Если это значение все же появится, оно должно быть искусственно преобразовано в значение 01.
Стандартные цветоразностные сигналы квантуют так, чтобы
нижнее (отрицательное) значение соответствовало цифровому значению 16, а верхнее (максимальное положительное) – 240. Значения 1–16, 241–255 в принципе разрешены для передачи выбросов,
так же как и для сигнала Y.
1.3.3. Задание на моделирование
В ходе моделирования должна быть создана и отлажена программа обработки тестового изображения. Требуется выполнить
следующие операции.
1. Загрузить тестовое изображение и представить его в виде битовой матрицы отсчетов сигнала яркости.
2. Провести квантование изображения на 2, 8, 16, 32, 64 значения. Вывести изображение на экран, наблюдать и описать впечатления от ложных контуров.
3. Построить гистограмму распределения значений яркостей в
изображении. Для этого подсчитать, как часто встречаются отсчеты
с заданным значением, и построить график в виде гистограммы.
4. Подсчитать среднеквадратическое отклонение отсчетов исходного изображения от среднего значения, которое характеризует
это изображение.
5. Подсчитать среднеквадратическую ошибку за счет квантования.
Контрольные вопросы
1. Сформулируйте и обоснуйте требования к частоте дискретизации при переходе от аналогового сигнала к дискретному.
26
2. Чем определено число значений квантования при получении
цифрового сигнала? Почему при квантовании изображений наиболее часто используют 255 значений?
3. Чему равны средняя и максимальная ошибки квантования?
4. Поясните, при каких условиях на изображении появляются
ложные контуры и муары.
5. Что означают режимы TrueColor и HighColor при квантовании цветных изображений?
1.4. Цифровая фильтрация
1.4.1. Цифровые фильтры
Рассмотрим дискретное описание линейных преобразований
(операторов), которые реализуют программно или с помощью цифровых процессоров, например на ПЛИС. Обработке подлежат цифровые сигналы, которые получены после дискретизации и квантования. Цифровую фильтрацию широко используют при обработке
изображений. Принцип цифровой фильтрации состоит в том, что
значение элемента изображения модифицируют с учетом значений соседних элементов. Цифровые фильтры применяют для увеличения резкости изображения (двумерная апертурная коррекция) или сглаживания изображения в целях уменьшения заметности шумов; гребенчатые фильтры используют для разделения
спектров сигналов яркости и цветности в системах NTSC и PAL.
Другое применение цифровой фильтрации – препарирование изображений – выделение характерных особенностей изображений,
например контуров, локальных экстремумов яркости и т.д. Цифровые фильтры могут быть линейными, нелинейными и логическими.
Линейные преобразования характерны тем, что для них справедлив принцип суперпозиции. Цифровой фильтр считают линейным, если сумма любого числа входных сигналов преобразуется в сумму откликов на отдельные слагаемые. Пусть последовательности a1 (k) и a2 (k) преобразованы с помощью цифрового фильтра F в b1 (k) = F [a1 (k)] и b2 (k) = F [a2 (k)] соответственно, а c1 и c2 – постоянные коэффициенты. Тогда справедливо
b(k) = F [c1a1 (k) + c2a2 (k) ] = c1b1 (k) + c2b2 (k).
27
При сдвиге входной последовательности на m отсчетов, где m –
целое число, выходная последовательность также сдвигается на
m: если y(k) = F [x(k) ] , то F [x(k − m) ] = y(k − m) .
Фильтр называют стационарным, если его импульсная характеристика не зависит от времени. В общем виде сигнал – вектор, а
оператор, который преобразует один вектор в другой, – матрица.
Частным видом линейного оператора (линейного цифрового фильтра) являются операторы, инвариантные к сдвигу: их свойства
не меняются при перемещении относительно сигнала. Импульсная реакция такого фильтра есть функция разности аргументов
h(t, τ) = h(t − τ), так что применительно к аналоговому сигналу
∞
b(t) =
∫
a(τ)h(t − τ)dτ, причем эту операцию называют сверткой
−∞
(рис. 1.4.1).
Преобразование Фурье от импульсной реакции линейного оператора (фильтра), инвариантного к сдвигу, является его частотной характеристикой:
∞
H(f ) =
∫
h(t)exp(−j2πft)dt.
−∞
Преобразование Фурье от свертки двух функций равно произведению спектров этих функций: Φ {L(x) H(x)}= F (f ) H(f ). Это основа
двойственности фильтрации. В сигнальной плоскости фильтрацию
проводят путем свертки сигнала с импульсной реакцией фильтра,
в частотной – путем перемножения спектра сигнала и частотной характеристики фильтра.
Y
-YZ
C
)AB
B
«ÇÐù
ÊÃÇÇɽÁƹ˹ÅÁ
Z
-YsAZsB
)AB
Рис. 1.4.1. Двумерная свертка двух функций
28
Достоинства цифровых фильтров, по сравнению с аналоговыми
фильтрами, реализованными на индуктивности, емкости и сопротивлении, несомненны:
– абсолютная стабильность характеристик, не зависящая от воздействия внешних условий;
– простота изменения характеристик, поэтому такие фильтры
можно использовать в качестве адаптивных устройств (с перестраиваемыми характеристиками);
– при эксплуатации не возникает проблема согласования нагрузок;
– могут работать в диапазоне сверхнизких частот;
– имеют линейные фазовые характеристики и т. д.
Недостатком цифровых фильтров является работа с цифровыми
сигналами, что неизбежно приводит к некоторым ошибкам.
Процесс фильтрации заключается в том, что отсчеты фильтрованного сигнала {bk} выражают через отсчеты исходного сигнала
{аk} и отсчеты усеченной по спектру (чтобы ее можно было выразить через отдельные отсчеты по Котельникову) импульсной реакции фильтра {hk}. Цифровой фильтр преобразует последовательность отсчетов входного сигнала a1, a2,... an в выходную последовательность b1, b2,..., bn, причем выходной сигнал в каждый момент
времени представляет собой взвешенную сумму входных сигналов:
bk =
∞
∑
n=−∞
an hk−n =
∞
∑
n=−∞
ak−n hn .
Пользоваться такой формулой невозможно, так как бесконечные пределы физически не реализуемы. Поэтому используют конечномерное приближение к непрерывному фильтру, отбрасывая
члены с достаточно малыми значениями hn, в результате чего получают некоторую маску (в данном случае одномерную) размером
2N+1 отсчетов (число элементов в маске чаще всего нечетное, чтобы фильтр был симметричным):
bk ≈ ak−N hN + ... + ak h0 + ... + ak+N h−N =
N
∑
n=−N
ak−n hn . (1.4.1)
Это алгоритм нерекурсивного, или трансверсального, фильтра
(рис. 1.4.2). Выходная переменная зависит только от (2N+1) значений входной переменной. Это фильтры с конечной памятью (КИХфильтры).
Цифровой фильтр, реализованный непосредственно по выражению (1.4.1), для вычисления одного отсчета преобразованного сиг29
¡ÅÈÌÄÕÊƹØ
ɾ¹ÃÏÁØÍÁÄÕËɹ
ªÁ¼Æ¹Ä
Is/ Is/s
I
I/s
I/
BL/BLBLs/
Рис. 1.4.2. Дискретная свертка сигнала
и импульсной реакции фильтра
нала требует выполнения 2N+1 операций умножения и 2Nопераций
сложения. Сократить объем вычислений можно путем использования рекурсивных цифровых фильтров, которые имеют более сложную структуру, а выходной сигнал является функцией предшествующих значений как входного, так и выходного сигналов:
bk = h0 ak + h1ak−1 + ... + hNT −1ak−NT +1 +
+g1bk−1 + g2bk−2 + ... + gNP bk−NP ;
bk =
NT −1
∑
n=0
NP
hn ak−n + ∑ gn bk−n . (1.4.2)
n=1
В этом случае по-другому обозначены отсчеты импульсной реакции трансверсальной части фильтра (рис. 1.4.3). В результате фильтр вносит чистую задержку (выходной сигнал сдвинут
на NT/2). Рекурсивные фильтры позволяют получить заданную
амплитудно-частотную характеристику (АЧХ) при меньшем числе звеньев и с более точным соответствием аналоговому прототипу.
Фильтры относятся к системам с обратной связью и нуждаются в
анализе устойчивости. Поскольку выходная переменная у таких
фильтров в данный момент времени зависит не только от значений
входных переменных, но и от значений выходной переменной в
30
¡ÅÈÌÄÕÊƹØ
ɾ¹ÃÏÁØÍÁÄÕËɹ
ªÁ¼Æ¹Ä
I
I
BL
BLs
I/5s
BLs/5s
Рис. 1.4.3. Другое обозначение отсчетов сигнала
и импульсной реакции
предыдущие моменты времени, это фильтры с бесконечной памятью (БИХ-фильтры).
Вычисление последовательности значений {bk} для рекурсивных фильтров требует меньшего числа операций на один отсчет,
так как использованы результаты предыдущих вычислений.
Это преимущество в быстродействии заставляет искать возможности аппроксимации требуемого фильтра рекурсивным фильтром.
Рассмотрим часто применяемый при обработке изображений
фильтр, вычисляющий текущее среднее значений сигнала на данном отрезке (окне):
bk =
N
1
ak−n , ∑
2N + 1 n=−N
(1.4.3)
1
, n = −N....
где отсчеты импульсной реакции фильтра
hn =
1
2N + 1
, n = −N....0....N.
=
2N + 1
Выражение (1.4.3) можно преобразовать в рекурсивную форму
bk = (ak+N − ak−N−1 ) / (2N + 1) + bk−1. (1.4.4)
Построив вычисления по выражению (1.4.4), можно найти текущее среднее не за 2N сложений на один отсчет среднего, а только
31
за 3. Замечательно то, что число операций в этом случае не зависит
от числа отсчетов, по которым происходит усреднение. Если задать
апертуру (маску) фильтра в 3 элемента n = {−1, 0, + 1}, то не очень
видны преимущества рекурсивного вычисления. Для фильтра из
5 элементов n = {−2, −1, 0, + 1, 2} по выражению (1.4.3) нужно
сделать 5 сложений и одно деление, а по выражению (1.4.4) – попрежнему 3 сложения и одно деление. Выигрыш тем значительнее,
чем больше размер апертуры (рис. 1.4.4).
При обработке изображений используют двумерные линейные
преобразования. Для двумерного случая выражение (1.4.1) можно
переписать в следующем виде:
bkl ≈
N
N
∑ ∑
m=−N n=−N
al−m, k−n hm, n , (1.4.5)
где {blk }; {alk }; {hmn } – взятые на прямоугольном окне отсчеты
сигналов и импульсной реакции фильтра. Это математическая запись алгоритма, который реализуют все программы фильтрации
изображений.
В двумерном случае также возможно построение рекурсивных
фильтров, но при этом необходимо задаться направлением рекурсии. В соответствии с телевизионной разверткой логично принять
«прошлыми» значения сигнала сверху и слева от данного отсчета
и нумеровать отсчеты слева направо и сверху вниз. Тогда формулу
для одномерного рекурсивного фильтра можно обобщить на двумерный случай следующим образом:
¥¹ÊùÍÁÄÕËɹ
½ÄØLs
Ls Ls Ls
Ls L
¥¹ÊùÍÁÄÕËɹ/
½ÄØL
L L L L
§ËÊоËLsÆÌ¿ÆÇÇËÆØËÕ¹L½Çº¹»ÁËÕ
Рис. 1.4.4. Схема вычисления текущего среднего
32
bkl =
NP
+∑
NT −1 NT −1
NP
∑
∑ ∑
m=0 n=0
al−m, k−n hmn +
NP
m=1n=−NP
bl−m, k−n gm,n + ∑ bl, k−n g0, n .
(1.4.6)
n=1
Существует еще один класс двумерных цифровых фильтров,
представляющих особый интерес с точки зрения экономии вычислительных затрат, – это двумерные разделимые фильтры. Импульсная реакция для таких фильтров может быть представлена
в виде произведения одномерных функций hm,n = hm hn . Тогда формула (1.4.6) принимает вид
blk =
N
∑
m=−N
hm
N
∑
n=−N
h n al−m, k−n ,
и вычисления можно производить рекурсивно. Примером является
фильтр, используемый для получения текущего среднего значения
сигнала по квадратному окну N × N:
blk =
1
N
N
∑ ∑
(2N + 1)2 m=−N n=−N
al−m, k−n .
1.4.2. Синтез цифровых фильтров
Чтобы синтезировать цифровой фильтр, нужно задать его частотную характеристику и затем найти отсчеты импульсной реакции hn. Можно действовать в обратном порядке: задать импульсную реакцию, а затем рассчитать частотную характеристику. Частотная характеристика и импульсная реакция фильтра связаны
через преобразование Фурье.
Различают два класса цифровых фильтров: фильтры НЧ и фильтры ВЧ. Фильтры НЧ применяют для сглаживания изображений,
снижения влияния зернистости изображений из-за шумов, подавления помех дискретизации и ослабления муар-эффекта. Простым
примером является сглаживание изображений путем вычисления
средних значений элементов изображения в некоторой области. Соответствующую функцию содержат многие программы обработки
изображений. Для нее задают число усредняемых элементов по ко33
ординатам x и y. Коэффициенты, на которые при фильтрации умножают значения сигнала, сводят в матрицу F (матрицу свертки, маску или апертуру) размером n×n. При фильтрации апертуру перемещают по битовой матрице как маску, которая определяет, какие
элементы изображения нужно обрабатывать в данный момент времени и на какие коэффициенты их следует умножать (рис. 1.4.5).
Например, при усреднении по трем элементам по горизонтали и вертикали матрица F размером 3×3 состоит из единиц:
1 1 1


F = 1 1 1 /k. 1 1 1


(1.4.7)
Элементы, которые охватывает маска, умножают на соответствующие им коэффициенты, результаты складывают и делят на
нормирующее число k, равное сумме коэффициентов маски (в данном случае k=9). Операцию деления можно исключить, если сумма
коэффициентов в маске всегда будет равна единице.
Фокусом маски называют ее центральный элемент (см.
рис. 1.4.5). Все операции производят с исходной битовой матрицей,
а в выходной матрице полученное значение элемента ставят на место, где в настоящее время находится центральный элемент маски.
Затем маску передвигают на один элемент. Исключение составляет
операция «Мозаика», когда всем попадающим под маску элемен¥¹Êù
­ÇÃÌÊŹÊÃÁ
¥¹ÊÊÁ»ÇËÊоËÇ»
ÁÊÎǽÆǼÇÊÁ¼Æ¹Ä¹\BNO^
¥¹ÊÊÁ»ÇËÊоËÇ»
»ÔÎǽÆǼÇÊÁ¼Æ¹Ä¹\CNO^
Рис. 1.4.5. Двумерная фильтрация
34
там присваивают одно и то же вычисленное значение, а маску сдвигают на n элементов.
Значения коэффициентов в матрице F представляют собой отсчеты двумерного импульсного отклика изображающей системы
на воздействие также двумерной дельта-функции. Для оптической
системы – это функция рассеяния точки; для телевизионной –
апертура. Параметрами апертуры являются ее диаметр, форма и
закон распределения прозрачности. При цифровой фильтрации диаметр апертуры – это размерность матрицы маски, значения ее коэффициентов – отсчеты функции распределения прозрачности ρ(α,
β), а форму апертуры обычно принимают квадратной. Например,
матрица F в выражении (1.4.7) соответствует квадратной апертуре
с равномерным законом распределения прозрачности. Увеличения
диаметра апертуры достигают повышением размерности матрицы
F, при этом сглаживающее действие цифрового фильтра возрастет,
а закон распределения прозрачности может быть воспроизведен
точнее за счет большего числа отсчетов. При сглаживании изображений вычисляют взвешенное среднее соседних элементов изображения. Действие типичной маски для сглаживания изображения
1 4 1 


F = 4 16 4 /k
1 4 1 


с нормирующим числом k = 36 иллюстрирует изображение на
рис. 1.4.6.
Исходное
Сглаженное
Рис. 1.4.6. Результат действия фильтра НЧ
35
Фильтры ВЧ применяют для повышения резкости изображения. Резкость изображения можно повысить, если усилить скачки яркости на границах объекта. Это так называемая апертурная
коррекция. Сглаживающее действие апертуры можно скомпенсировать, если из сигнала Uij, соответствующего фокусу апертуры (см. рис. 1.4.5), вычесть сигналы соседних элементов. Тогда
матрица коэффициентов для фильтрации примет следующий
вид:
−1 −1 −1


F = −1 X −1 / k,
−1 −1 −1


где коэффициент X определяет глубину коррекции, а нормирующий множитель k равен сумме коэффициентов маски.
Для матрицы F размером 3×3 коэффициент X вычисляют по выражению
X = int (100 / S −1)+ 8 ,
где S – глубина коррекции в процентах; функция int означает округление до следующего целого числа.
Применять апертурную коррекцию надо с осторожностью, так
как побочным эффектом является увеличение шума в изображении. Коэффициент S редко назначают большим, чем (20÷30)%.
Если соотношение сигнал/шум в исходном изображении недостаточно высокое, апертурную коррекцию применять нельзя, а для
субъективного улучшения качества изображения лучше применить сглаживающий фильтр.
Частотной характеристикой цифрового фильтра, определяемого соотношением (1.4.1), называется частотная характеристика
соответствующего ему непрерывного фильтра с импульсной реакцией
h(t) =
N
∑
n=−N

n 
hn δ t −
,
 2F 
здесь 2F – частота дискретизации; F – верхняя граничная частота исходного сигнала и частотной характеристики фильтра, а обратная ей величина 1/2F – это шаг дискретизации, причем применительно к битовой матрице – это расстояние между пикселями.
Тогда
36
∞
H(f ) =
 N

n 
hn δ t −
 exp( j2πft)dt =
 2F 
=−
n
N


−∞
∫  ∑
=
N
∑
n=−N

n 
hn exp j2πf
.

2F 
(1.4.8)
Это выражение получилось в силу свойств дельта-функции при
ее интегрировании. Найдем связь отсчетов цифрового фильтра {hn }
с частотной характеристикой аппроксимируемого им непрерывного фильтра H(f). Реальный фильтр всегда будет иметь частотную
характеристику, ограниченную в интервале частот от 0 до F:
f+F
,
2F
где функция rect равна единице вплоть до значения аргумента, равного единице, когда f=F.
Отсчеты импульсной реакции фильтра можно рассчитать через
ОПФ
Hy (f ) = H(f )rect
∞
hn =
∫
−∞

n 
Hy (f )exp j2πf
df =

2F 
F
∫
−F

n 
H(f )exp j2πf
df.

2F 
Число отсчетов цифрового фильтра, которые закладывают в память машины для построения цифрового фильтра, всегда ограничено. Это вносит дополнительные искажения в частотную характеристику получающегося цифрового фильтра.
Рассмотрим пример синтеза цифрового фильтра по заданной
частотной характеристике непрерывного фильтра. Пусть требует f 2
ся синтезировать фильтр с АЧХ H (f ) = exp−   , где F0=200 Гц
 F0 
(рис. 1.4.7). На первом этапе выбираем число отсчетов импульсной
реакции, которое мы можем себе позволить. Например, примем
число отсчетов, равное (2N+1)=5. Далее организуем симметричную
частотную характеристику, дополнив ее зеркальным отражением
в области отрицательных частот. Отсчеты частотной характеристики
H (0) = exp(0) = 1; H (1) = H (−1) = exp(−1) = 0,368;
H (2) = H (−2) = exp(−4) = 0,0183.
Затем выполняем обратное ДПФ:
37
sssGœÏ
sssG'
Рис. 1.4.7. Симметричная частотная характеристика
h (kT ) =
=
N

1
2π 
K (nF0 )exp jkn
=
∑


2N + 1 n=−N
2N + 1
N

1
2π 
K (nF0 )coskn
,
∑


2N + 1 n=−N
2N + 1
где T – интервал дискретизации, равный 1/F0; косинус появился
потому, что мы организовали четную функцию и коэффициенты
при синусах равны нулю.
1 + 0,368 + 0,0183
= 0,355, так как
В результате расчета h (0) =
5
cos(0) = 1; h (T ) = 0,239; h(2T ) = 0,083.
После нормировки маска фильтра принимает вид
0,234
0,673
1
0,673
0,234
Приведем формулу, позволяющую рассчитать двумерную
пространственно-частотную характеристику (двумерный аналог
АЧХ) в случае, когда матрица фильтра симметрична как относительно среднего столбца и средней строки, так и относительно обеих главных диагоналей:
H(2πfx ,2πfy ) = a0 + 2a1 (cos 2πfx + cos 2πfy ) + 2a2 ×
× cos 2π(fx + fy ) + cos 2π(fx − fy ) ,


где маска фильтра
 a2

 a1

a
 2
38
a1
a0
a1
a2 

a1  ,
a2 
причем fx, fy – пространственные частоты по горизонтальному и
вертикальному направлениям, которые измеряют в долях пространственной частоты дискретизации (т. е. величины, обратной
расстоянию между соседними отсчетами) по соответствующей
координате, и каждая из них изменяется в диапазоне частот от 0
до 0,5.
1.4.3. Препарирование изображений
Цифровые фильтры используют не только для улучшения изображения, а также для его препарирования с целью извлечь видеоданные. Типичным примером является выделение контуров изображения, полезных для распознавания образов. Различают три
вида контуров: вертикальные, горизонтальные и наклонные. Для
каждого из этих видов существуют фильтры, которые особенно
хорошо выделяют соответствующие контуры. Фильтры, используемые для этих целей, могут быть линейными, нелинейными и
морфологическими. Вертикальные перепады находят дифференцированием по строкам, горизонтальные – по столбцам. Дифференцирование выполняют цифровым способом, заменяя производные конечными приращениями: dL / dx ≈ (L(k, l)− L(k −1, l))/ ∆x;
dL / dx ≈ (L(k, l)− L(k, l −1))/ ∆y, где обычно принимают ∆x = ∆y = 1.
Для выделения перепадов используют следующие наборы масок весовых множителей, реализующих двумерное дифференцирование:
1
1
1  −1 1 1 −1 −1 1

 
 

 1 −2 1  ; −1 −2 1 ; −1 −2 1 ,

 
 

−1 −1 −1 −1 1 1  1

1
1

 
 

где направления склонов перепада условно обозначают «север»,
«восток», «юго-восток» и т. д.
Сумма весовых множителей масок равна нулю, что обеспечивает нулевой отклик на ровном участке изображения. Оператор
Лапласа позволяет вычислить вторые производные от яркости изображения в двух направлениях. Маска для вычисления оператора
Лапласа имеет вид
 0 −1 0 


−1 4 −1 .


 0 −1 0 


39
В этом случае по-прежнему сумма весовых коэффициентов равна нулю.
Увеличение центрального элемента маски на единицу означает
добавление исходного изображения к контуру, выделенному оператором Лапласа. В результате будет повышена четкость исходного
изображения.
Вектор, составленный из частных производных по вертикали
и горизонтали, называют вектором-градиентом grad(L(x, y)). Интересует норма вектора-градиента, объединяющая значения обеих
производных. Тогда контур будет белым на черном фоне. Для облегчения вычислений используют норму l1, которая представляет
собой сумму абсолютных значений производных. Такой оператор
теряет свойство линейности: это означает, что даже теоретически
вернуться к исходному изображению будет невозможно!
Для выделения вертикальных, горизонтальных и наклонных
контуров (рис. 1.4.8) применяют маски, известные под названием
«операторов Собела»:
−1 0 1 −1 −2 −1 −2 −1 0

 
 

−2 0 2 ;  0
0
0  ; −1 0 1 .

 
−1 0 1  1
2
1   0
1 2

 
Рис. 1.4.8. Результат выделения наклонных контуров
40
Рис. 1.4.9. Препарат
нерезкого маскирования
Оператор Собела, извлекающий одновременно все контуры,
имеет вид
 a b c


d e f  ,


g h j 


где Sob = (a + 2b + c) − (g + 2h + e) + (a + 2d + g) − (c + 2f + j) , причем
буквами обозначены значения яркости в элементах битовой матрицы, охваченных маской фильтра.
Другим методом выделения контуров изображения является
нерезкое маскирование: из исходного изображения вычитают его
сглаженную копию (рис. 1.4.9). Полученный контурный препарат
представляет самостоятельную ценность, а также может быть добавлен с определенным весом к исходному изображению. В результате будет повышена его резкость.
1.4.4. Медианная фильтрация
Для обработки изображений широко применяют нелинейную медианную фильтрацию. Рангово-порядковые (медианные) фильтры
относят к отдельному классу сглаживающих фильтров, которые позволяют эффективно подавлять точечные помехи и шумы, сохраняя
при этом резкие перепады яркости на границах объектов. Однако такой фильтр может подавить в изображении мелкие детали, размеры
которых меньше маски фильтра. Предположим, что строка битовой
матрицы выглядит следующим образом: 17 200 55 64 100 99 …. Повидимому, здесь имеется грубая ошибка во втором элементе, который резко отличается от соседних элементов и выглядит совершенно изолированным. Рангово-порядковые фильтры не изменяют отдельные значения яркости, а производят их сортировку в пределах
маски. Сильно отличающийся от соседей элемент заменяют средним
значением из числа сортируемых элементов. Проведем эту сортировку: 17 55 200; 55 64 200; 55 64 100; 64 99 100 …, в результате получим
новую фильтрованную последовательность: 55 64 64 99 …., где аномальный элемент безвозвратно устранен.
Аналогичным образом выполняют медианную фильтрацию двумерных изображений: в фокус маски (например, 3×3) ставят после
сортировки элементов в пределах маски средний по рангу элемент.
В результате медианной фильтрации с маской 3×3 на нижнем изо41
Исходное изображение
Рис. 1.4.10. Результат медианной фильтрации
бражении (рис. 1.4.10) среднеквадратическое значение шума заметно снизилось по сравнению с исходным верхним изображением.
Медианный фильтр сохраняет перепад, если по одну сторону
границы все точки сохраняют свои значения: 5;5;5;5;5;1;1;1;1. После прохождения медианного фильтра с апертурой в три точки мы
получим следующую последовательность: 5;5;5;5;1;1;1.
Формально медианный фильтр описывают так:
yi y=
mediana
mediana
(x(ix
) i=) =
mediana
mediana
(x(i−
xvi−,v...,
, ...,
xix
, i...,
, ...,
xi+
xiv+),v ),
i=
где v = (n −1) / 2, а n = (2j + 1) – нечетное число, чтобы у маски был
центральный элемент (фокус).
Шум с нормальным законом распределения медианный фильтр
подавляет примерно на 50% хуже, чем усредняющий фильтр, зато
не искажает перепады яркости в исходном изображении. Медианный фильтр сохранит верное значение сигнала в том и только в том
случае, если число выбросов m в пределах апертуры фильтра длиной N меньше половины ее ширины, т. е. m< (n −1) / 2. Это свойство
сохраняется и для двумерной апертуры.
Имеются модификации медианного фильтра: взвешенный,
адаптивный, с детектором импульсов [6].
1.4.5. Задание на моделирование
1. Воспроизвести алгоритм линейной цифровой фильтрации с
маской размером 5×5, в которую можно вставлять с консоли произвольные значения коэффициентов.
42
2. Получить изображения типа «Портрет», обработанные фильтрами с различными импульсными характеристиками: «Мозаика», сглаживающий фильтр, фильтр апертурной коррекции с различной глубиной, – для чего реализовать в программе выражение
(1.4.5) с различными коэффициентами в маске фильтра.
3. Реализовать алгоритм медианной фильтрации.
4. Реализовать алгоритм цифровой фильтрации на основе спектрального представления сигнала. С этой целью обработать матрицы трансформант, полученные в работе № 2, частотным фильтром с
гауссовой характеристикой и σ = 2.
5. Получить и сравнить все обработанные изображения.
Контрольные вопросы
1. Поясните разницу между линейными, нелинейными и логическими цифровыми фильтрами. Приведите примеры фильтров
каждого класса.
2. В чем отличие БИХ- и КИХ-фильтров?
3. Что такое импульсная реакция фильтра?
4. Сравните операцию свертки в сигнальной и спектральной областях.
5. Перечислите и поясните основные шаги синтеза цифрового
фильтра.
1.5. Морфологическая обработка изображений
1.5.1. Основные операции морфологической фильтрации
Математическую морфологию как системно-теоретический метод анализа изображений применяют в стандартных областях обработки/анализа цифровых изображений, таких как нелинейная
фильтрация изображений, определение граней, подавление шумов,
отображение форм, сглаживание и распознавание, скелетирование,
кодирование. Алгоритм обработки изображения, на входе и выходе
которого находятся бинарные изображения, называют двумерным
системным SP-фильтром. Алгоритм, который преобразует входное полутоновое в выходное полутоновое изображения, называют
43
функциональным двумерным FP-фильтром. Логические операции
совершают между структурным элементом (маской) S и областью
цифрового изображения L, выделенной этим структурным элементом. Результат операции помещают в новую битовую матрицу на
место, где находится фокус маски. Используют структурные элементы различной формы и размерности (рис. 1.5.1).
Рассмотрим основные операции морфологической фильтрации
применительно к обработке бинарно квантованных изображений.
– Эрозию (erosion) обозначают символами L  S и осуществляют
путем операции логического «И» между состоящей из единиц маской S размером n×n и накрываемым маской фрагментом бинарно
квантованного изображения L. По результатам логического умножения формируют новый массив изображения. Если накрываемый
маской фрагмент содержит хотя бы один ноль, в элементе вновь
формируемого изображения, соответствующем положению «фокуса» маски, устанавливают ноль. В результате этой операции все
фрагменты исходного изображения, по площади меньшие, чем маска, исчезают, а большие – «сжимаются» на величину маски.
– Наращивание (dilation – дилатация) обозначают символами
L ⊕ S и выполняют путем операции логического «ИЛИ»: в фокусе
маски устанавливают единицу, если в накрываемом маской фрагменте находится хотя бы один единичный элемент. В результате
изображение восстанавливают до исходных размеров.
£É̼
£»¹½É¹Ë©Çź£ÇÉǺù
¤ÁÆÁؤÁÆÁؤÁÆÁؤÁÆÁØ
›¾ÃËÇɛ¾ÃËÇɛ¾ÃËÇɛ¾ÃËÇÉ
Рис. 1.5.1. Структурные элементы на плоскости
(крестом помечен фокус маски)
44
Исходный
объект L
Эрозия
Открывающая
операция
Структурный
элемент S
Наращивание
Закрывающая
операция
Исходный сигнал
Эрозия
Наращивание
Открытие
Закрытие
Рис. 1.5.2. Результаты операций морфологической фильтрации
применительно к бинарным (слева) и полутоновым (справа)
изображениям (пунктиром показаны исходные объекты)
Открытие (opening) представляет собой комбинацию эрозии и наращивания, которые выполняют последовательно: L S = (LS) ⊕ S;
в результате «открытия» элементы, меньшие площади маски, исчезают из изображения, а бóльшие – восстанавливаются до своих
исходных размеров.
– Закрытие (closing) – порядок выполнения действий заменен на
обратный: LS = (L ⊕ S)  S.
Открытие устраняет острые выступы и узкие перешейки в L,
тогда как закрытие заполняет узкие заливы и малые отверстия.
Форма и размер структурного элемента определяют природу и
степень сглаживания. Если структурный элемент S имеет регулярную форму, открытие и закрытие можно рассматривать как
нелинейную фильтрацию, которая сглаживает контуры входного
сигнала.
Применительно к полутоновым изображениям операцию эрозии
трактуют как нахождение минимума в пределах области исходного
цифрового изображения, накрытой маской, и установку этого значения в результирующей матрице на место, где расположен фокус
маски. В операции наращивания ищут максимум сигнала.
Морфологической фильтрации подвергают, в частности, одномерные полутоновые сигналы, при использовании структурного элемента S в виде линии или вектора (см. рис. 1.5.1). Эрозия
(erosion) функции L(x), x ∈ Z при использовании ограниченного
45
структурного элемента S ⊆ Z расширяет минимумы L(x), тогда как
наращивание расширяет максимумы. Открытие с помощью S отрезает пики в сигнале, а закрытие заполняет спады, так что всегда
LS ≤ L≤ LS для любых L и S (рис. 1.5.2).
1.5.2. Подавление импульсных шумов
Морфологические операции «открытие» и «закрытие» эффективно подавляют импульсные шумы, т. е. случайные выбросы
шума, которые имеют большие положительные или отрицательные значения в малой области изображения. Крутизна фронта сигнала, а значит, и четкость изображения после этих операций остаются неизменными (см. рис. 1.5.2). Морфологическая фильтрация
несколько проигрывает по эффективности медианной фильтрации,
однако не нарушает резкости границ объектов, больших по размеру, чем маска фильтра. Задача подавления шумов разделена на две
отдельные операции: сглаживание положительных и отрицательных импульсов (см. рис. 1.5.2). Кроме того, операции открытиязакрытия в вычислительном отношении менее сложные, чем медианная фильтрация.
Операции эрозии и наращивания для бинарно квантованных
изображений обратные: для белых объектов на черном фоне –
эрозия и наращивания, а для черных объектов на белом фоне эти
операции меняются местами. Кроме того, эти операции обратимы
для объектов, которые по размеру больше структурного элемента:
утончение объекта с помощью операции эрозии полностью компенсируют операцией наращивания. Однако объекты, меньшие по размерам структурного элемента, бесследно исчезают. Поэтому операция открытия удаляет всплески шума в виде белых точек (соль) на
черном фоне; операция закрытия – черные точки на белом фоне
(перец). Последовательное применение обеих операций устраняет
все виды выбросов, в то время как относительно крупные объекты
полностью сохранены.
1.5.3. Препарирование изображений
Видеоизображения препарируют с целью выделить информацию, позволяющую наиболее эффективно решить задачи по обнару46
жению и сопровождению объектов. Пусть S – начальный структурный элемент, один из представленных на рис. 1.5.1. Затем к нему
n раз применяют операцию наращивания nS = S ⊕ S ⊕ S... ⊕ S. Если
S – выпуклый элемент, то в результате получают новый структурный элемент nS той же формы, но большего размера. Если S – двумерный симметричный структурный элемент, то системная разность L − (L  nS) (здесь минус в круге означает оператор эрозии)
дает границу бинарного изображения L, а алгебраическая разность
L − (L  nS) усиливает контуры полутонового изображения L. Величина n в nS управляет толщиной контуров. Контуры различной
ориентации получают с использованием одномерной структурной
системы S, направленной должным образом. Более симметричной
обработкой между изображением и задним планом является оценщик контуров (L ⊕ nS) − (L  nS), который аппроксимирует градиент функции L. Результаты извлечения полутонового контура с помощью морфологических операций показаны на рис. 1.5.3.
Если в кадре могут присутствовать объекты как темнее фона,
так и светлее фона, то для препарирования изображения используют градиентный метод. Напомним, что вектор-градиент составлен
из первых частных производных L(x, y) в заданной точке изобра dL dL  T
 .
жения gradL(x, y) =  ,
 dx dy 


Чтобы выявить рельеф изображения, используют норму вектораградиента gradL(x, y) . В точках локальных минимумов и максимумов рельефа вектор-градиент равен нулю, следовательно, объекты как темнее фона, так и светлее фона приводятся к одному и тому
Рис. 1.5.3. Контурный препарат
47
Рис. 1.5.5. Карта морфологического
градиента для изображения
самолета
Рис. 1.5.4. Видеокадр
самолета
же (нулевому) уровню. Вычисления вектора-градиента для каждой
точки кадра представляют достаточно трудоемкую задачу, поэтому
используют приближение к норме вектора-градиента – так называемый многомасштабный морфологический градиент. Пусть L(x, y)
обозначает фильтрованное изображение, а Si – группу квадратных
структурных элементов. Размер Si равен (2i + 1)(2i + 1) пикселей
для 1 ≤ i ≤ 3, ⊕ и  обозначают наращивание и эрозию соответственно. Многомасштабный морфологический градиент
3
MG (L) = 13 ∑ ((L ⊕ Si )− (L  Si )) Si−1 .
(1.5.1)
i=1
В соответствии с выражением (1.5.1) значения градиентов рассчитывают трижды с использованием структурных элементов различной размерности, а затем результаты складывают. Применим
указанную методику обработки к видеокадру самолета, идущего на
посадку (рис. 1.5.4, 1.5.5). Обращает на себя внимание тот факт,
что как корпус самолета (он темнее фона), так и включенные фары
теперь отображены в виде темных участков, соответствующих минимальным значениям сигналов.
1.5.4. Закраска областей
Алгоритм заливки области внутри непрерывного контура включает в себя операции наращивания, образования дополнения и пересечения. Имеем бинарное изображение контура X. Создадим до48
¡ÊÎǽÆÔÂÃÇÆËÌÉ9
¦¹Ð¹ÄÕÆÔÂÊËÉÌÃËÌÉÆÔÂÖľžÆË
¡ÀǺɹ¿¾ÆÁ¾ÇºÉ¹ËÆǾÁÊÎǽÆÇÅÌ9$
§È¾É¹ÏÁØȾɾʾоÆÁ؄¡”
Рис. 1.5.6. Заливка области
полнение к этому изображению (обратное изображение контура)
XC. Пусть S – симметричный структурный элемент, чей радиус
не превышает ширину границы. Возьмем точку p внутри области,
ограниченной X, и применим операцию наращивания (дилатации).
Если Y 0 = {p} на нулевом начальном шаге, то на каждом последующем шаге ширина области наращивается на ширину структурного
элемента Y i = (Y i−1 ⊕ S) ∩ X C , i = 1, 2, 3... . Операция пересечения
«И» ограничивает результат только внутренней областью X, так
как черный контур из нулей на правом рисунке после операции «И»
с белым контуром (единицами) на левом дает нуль. Беда наступит,
если радиус структурного элемента шире контура хотя бы на один
пиксель. Тогда левый ограничивающий контур не сможет выполнить свою функцию, и мгновенно весь рисунок будет залит белым!
1.5.5. Построение остова фигуры (скелета, каркаса)
Чтобы выразить структурные соотношения сложных объектов
в сцене, часто оказывается достаточным представление объектов в
виде остова, или каркаса. Остов большинства объектов, как правило, можно записать и сохранить значительно экономнее, чем сам
объект. Остов сохраняет все свойства формы объекта, и сам объект может быть восстановлен по своему остову. Рассмотрим способ получения остова, названный преобразованием к срединным
осям, который для каждого заданного объекта дает однозначный
результат. Интуитивное определение такого преобразования осно49
œÉ¹ÆÁÏÔÍÁ¼ÌÉÔ
а)
¤ÁÆÁØǼÆØ
ªÉ¾½ÁÆÇÇÊÆÔÂÇÊËÇ»
œÉ¹ÆÁÏÔÍÁ¼ÌÉÔ
б)
¤ÁÆÁØǼÆØ
ªÉ¾½ÁÆÇÇÊÆÔÂÇÊËÇ»
Рис. 1.5.7. Примеры преобразования к срединным осям:
а – круг; б – прямоугольник
вывается на аналогии со «степным пожаром». Представим себе, что
изображенные на рис. 1.5.7, а, б области круглой и прямоугольной
формы, – это участки земли, покрытые высохшей травой. Если бы
огонь возник одновременно по всему периметру участков, то он распространялся бы к их центрам до тех пор, пока не сгорела бы вся
трава. В случае круглой области огонь распространялся бы к центру круга, который представляет собой точку самогашения огня.
Для прямоугольной области огонь распространялся бы с каждой
стороны. По мере продвижения огня слева и сверху линии огня
будут встречаться, и пожар будет затухать. Геометрическое место
точек самогашения огня образует линию самогашения. Точки или
линии самогашения называются срединными осями, или остовом
фигуры. Остов состоит из множества точек, которые находятся на
©¹ÊÊËÇØÆÁ¾Ê¹ÅǼ¹Ñ¾ÆÁØ
¤ÁÆÁØǼÆØ
§ÊËÇ»
œÉ¹ÆÁϹÍÁ¼ÌÉÔ
Рис. 1.5.8. Построение остова прямоугольника
50
одинаковом расстоянии от двух ближайших к ним точек на границе
фигуры. Это расстояние называется расстоянием самогашения фигуры (рис. 1.5.8). Границу фигуры можно восстановить по ее остову
и расстоянию самогашения. Эта граница есть огибающая окружностей с радиусом, равным расстоянию самогашения, с центрами в
каждой точке остова. Алгоритм построения остова включает в себя
последовательность операций эрозии с проверкой на связность полученной фигуры на каждом шаге.
1.5.6. Задание на моделирование
1. Разработайте программы базовых операций (эрозия, наращивание, открытие и закрытие) для бинарно квантованных и полутоновых изображений.
2. На базе тестового полутонового изображения с использованием генератора случайных чисел создайте изображение, пораженное
шумом. Бинарно квантуйте полученное полутоновое изображение.
Обработайте изображения с помехами фильтрами открытия и закрытия для бинарных и полутоновых изображений соответственно. Выведите исходные и результирующие изображения на экран и
оцените эффект фильтрации.
3. Получите средствами морфологической фильтрации бинарные и полутоновые контурные препараты. Предусмотрите возможность регулирования толщины контуров.
4. Выполните операцию заливки замкнутого контура бинарного
изображения.
5. Получите карту морфологического градиента для полутонового изображения.
Контрольные вопросы
1. Какие основные морфологические операции Вы знаете? Изложите принципы их реализации для бинарно квантованных изображений.
2. Каким образом реализуют операции эрозии и наращивания
для полутоновых изображений?
3. Дайте сравнительную характеристику медианного фильтра и
морфологических операторов открытия и закрытия применительно к задаче подавления импульсных шумов.
51
4. Что такое многомасштабный морфологический градиент?
Раскройте процедуру его определения. Для решения каких задач
цифровой обработки изображений его применяют?
5. Перечислите и поясните основные шаги процедуры морфологической закраски областей изображений и процедуры скелетизации.
1.6. Сжатие телевизионных сообщений
1.6.1. Методы компрессии видеоданных
Цифровое представление ТВ-сигналов открывает широкие возможности по синтезу и обработке изображений, однако предъявляет серьезные требования к каналам связи: скорость передачи данных в цифровых потоках телевидения высокой четкости достигает
1,0 Гбайта/с.
Теоретической основой сжатия видеоданных является их избыточность: статистическая, по восприятию ТВ-изображений
человеком, структурная и по спектру. Под статистической избыточностью понимают сильные корреляционные связи между
отдельными элементами, строками и кадрами ТВ-изображения:
коэффициенты корреляции составляют, соответственно, 0,93, 0,95
и 0,92. Диапазоны статистического влияния, определяемые промежутками времени, когда коэффициенты корреляции спадают
до значения 1/e, составляют примерно 30 элементов и 12 кадров
ТВ-изображения. Усредненный по многим реализациям спектр
ТВ-сигнала быстро падает по мере роста частоты. В типичных для
телевизионного вещания изображениях часто встречаются протяженные яркостные и цветовые поля, а резкие переходы и мелкие
детали занимают малую долю площади ТВ-кадра. Это особенно заметно, если рассмотреть осциллограммы сигнала и разности сигналов соседних элементов: большую часть интервала разностный
сигнал близок к нулю и лишь изредка значительно отклоняется от
нуля. Зная значение предыдущего элемента изображения, можно
с высокой вероятностью предсказать значение последующего элемента. Такого рода избыточность называют пространственной.
Соседние кадры ТВ-изображения очень мало отличаются друг от
друга, даже если передаются движущиеся объекты. Межкадровая
разность близка к нулю на большей части кадра. Это так называемая временная избыточность (рис. 1.6.1).
52
Рис. 1.6.1. Соседние кадры ТВ-изображения и межкадровая разность
Избыточность по восприятию связана с особенностями зрения
человека: например, цветовая разрешающая способность зрения
примерно в 4 раза ниже, чем яркостная. Число воспринимаемых
градаций яркости зависит от размеров фрагмента изображения, поэтому мелкие детали можно квантовать на меньшее число уровней. К качеству движущихся изображений зрение человека гораздо менее требовательно, чем к статичным кадрам, так что потери
информации вплоть до некоторого предела вполне допустимы.
Структурная избыточность обусловлена способом передачи
ТВ-сигнала: в нем, например, передаются постоянные по форме
сигналы гашения и синхронизации, которые в цифровом сигнале
нет необходимости воспроизводить. Устранение этих сигналов снижает цифровой поток на 23%.
Спектральная избыточность проявляется как результат излишне высокой частоты дискретизации. Принятая в телевидении ортогональная структура дискретизации не является оптимальной.
Используя интерполяцию и передискретизацию, можно понизить
частоту отсчетов ТВ-сигнала и выиграть в объеме передаваемой информации.
Все методы сжатия видеоданных делят на две группы: сжатие
без потери и с допустимой (незаметной наблюдателю) потерей
информации.
1.6.2. Сжатие видеоданных без потери информации
Когда требуется сжать программные файлы или массивы данных, сжатие следует выполнять без каких-либо потерь: утрата
хотя бы одного байта может обернуться катастрофой. Известные
программы обеспечивают сжатие за счет оптимального кодиро53
вания символов сообщения (например, для текста этим символом
является буква) или за счет устранения избыточной информации.
Идея метода кодирования информации по Хаффману заключается
в том, чтобы наиболее часто встречающиеся элементы алфавита
кодировать короткими кодовыми группами, а наименее часто –
длинными, т. е. использовать кодовые группы переменной длины.
Разумеется, выигрыш может быть получен лишь в случае, когда
частоты использования отдельных элементов алфавита в типичных сообщениях заметно различаются. Например, для букв русского алфавита рассчитаны вероятности появления каждой буквы.
Наиболее часто встречаются буквы о и е; значительно реже – э и
ф. Это учтено в коде Морзе: например, букве о присвоен наиболее
короткий код (точка).
Предположим, используемый алфавит состоит из M = 32 букв.
Для равномерного кодирования символов этого алфавита нужны
комбинации из 5 бит, так как log2M = 5. Среднюю информацию на
один независимый символ сообщения в теории информации называют энтропией
M
H = ∑ − pi log2 pi , (1.6.1)
i=1
где pi – вероятность появления в сообщении символа с номером i.
Каждой букве соответствует энтропия H0 = 5 бит только в том
случае, когда все буквы равновероятны и pi = 1/32. Энтропия H,
рассчитанная с учетом разной вероятности появления букв, всегда
меньше. Это означает, что описание всех букв кодовыми комбинациями из 5 бит является избыточным.
Избыточность сообщений характеризуют коэффициентом R = 1 –
– (H/H0), который может принимать значения от 0 до 1. При H = H0
коэффициент R = 0 и избыточность отсутствует; при H<< H0 R → 1,
что означает малую информативность и высокую степень предсказуемости текста данного сообщения. Применение кода Хаффмана позволяет уравнять энтропию и среднюю длину кодовой комбинации,
нужную для описания одного символа сообщения. При кодировании
элементов сообщения кодовыми группами переменной длины возникает проблема их разделения. Чтобы не использовать разделители (пробелы), код Хаффмана наделен свойством префиксности: ни
одна его кодовая комбинация не является началом другой.
Границы применимости этого метода кодирования очевидны:
если элементы данных распределены статистически равномерно,
54
то сжатие невозможно. Лучший коэффициент компрессии равен
8; средний – 1,5; худший – 1,0. Это единственный алгоритм, который никогда не увеличивает длину кодового сообщения. Реализация алгоритма Хаффмана требует двух проходов по сообщению:
в первом проходе набирают статистику, во втором – производят
собственно кодирование. Если статистика источника сообщения
известна априорно, то первый проход исключают и используют заранее рассчитанную кодовую таблицу.
Кодирование длин серий (RLE – Run Length Encoding) основано
на сравнении значений соседних элементов по строке развертки. Серией называют последовательность элементов, значения которых не
отличаются друг от друга. При таком методе кодирования передают
данные о значении первого элемента серии или разностного сигнала на границе серий, а также длины серии или позиции последнего
элемента серии относительно начала строки или последнего элемента предыдущей серии. Сообщение кодируют двумя байтами: первый
байт – счетчик повторений элемента в серии; второй – значение элемента. Достигнутые коэффициенты компрессии: лучший – 32÷64;
средний – 2÷3; худший – 0,5. Алгоритм ориентирован на изображения с небольшим количеством цветов: деловую и научную графику.
Примером использования данного метода кодирования являются
файлы изображений с расширением PCX. Кроме того, кодирование
длин серий может быть использовано в BMP- и Targa-файлах.
Накопленный опыт показывает, что эффективность кодирования изображений без потерь информации невелика и зависит от исходных изображений. Лишь двухградационные (черно-белые) изображения можно действенно сжимать при использовании кодирования длин серий: примером служит факсимильная передача. В качественном полутоновом изображении не только содержатся практически все уровни между 0 и 255, но к тому же многие из них еще
и встречаются с близкими частотами повторения. Поэтому сжатие
данных методом кодирования по Хаффману в большинстве случаев
неэффективно. Реальное сжатие палитровых изображений (SuperVGA, Hi-Color) составляет от 5 до 50%. Для изображений в режиме
True Color достойное упоминания сжатие достижимо только в виде
исключения. Иногда происходит даже увеличение объема файла,
так как в нем должна быть записана дополнительная информация
для интерпретации сжатых данных. Признано, что кодирование
без потери информации не решает задачу сжатия видеоданных и
имеет лишь вспомогательное значение.
55
Достижение коэффициентов сжатия, достаточных для реализации систем цифровой передачи видеоданных в полосе частот аналогового сигнала, оказалось возможным при допущении некоторой
потери информации. Различают системы сжатия статичных и движущихся ТВ-изображений. В первом случае используют внутрикадровые статистические связи между соседними элементами и
строками изображения; во втором – дополнительно учитывают статистические связи между соседними кадрами. В системах сжатия с
потерей информации применены известные и хорошо себя зарекомендовавшие методы: ДКП и кодирование с предсказанием – дифференциальную импульсно-кодовую модуляцию (ДИКМ). Кроме
того, в существенной мере реализуют возможности устранения избыточности по восприятию человеческим зрением.
1.6.3. Внутрикадровая компрессия видеоданных
(стандарт JPEG)
В большинстве пакетов программ для обработки изображений
используют стандарт внутрикадрового кодирования JPEG (Joint
Photographic Expert Group). Основой стандарта JPEG является
ДКП (DCT – Discrete Cosine Transform) и тот факт, что коэффициенты ДКП быстро уменьшаются по мере роста частоты. Подвергать
ДКП весь кадр не имеет смысла по двум причинам. Первая причина принципиальная: высокочастотные составляющие ТВ-сигнала,
несмотря на их крайне низкую интенсивность, нельзя исключать,
так как они обеспечивают четкость изображения. Вторая причина
обусловлена большой размерностью массива изображения и, как
следствие, значительными вычислительными сложностями. Поэтому изображение делят на блоки и подвергают ДКП каждый блок
в отдельности. В большинстве блоков мелкие детали практически
отсутствуют, и можно не передавать коэффициенты ДКП, значения
которых ниже некоторого порога. В тех блоках, где присутствуют
мелкие детали и резкие яркостные переходы, коэффициенты ДКП
даже могут расти по мере роста частоты, и их транслируют, чем сохраняют исходную четкость изображения.
Блок представляет собой матрицу 8×8=64 элементов и является
базовой структурной единицей (сигнальной матрицей), над которой осуществляют все операции кодирования, в частности, ДКП
и квантование полученных коэффициентов. В ТВ-кадре создают
56
704/8=88 зон по горизонтали и 576/8=72 зоны по вертикали, что
в общей сложности дает 72×88=6336 блоков, подлежащих ДКП в
реальном масштабе времени. Матрица коэффициентов ДКП (трансформант)
A = ÔUÔT , (1.6.2)
где матрица Ф составлена из отсчетов базисных функций.
Отсчеты изображения u(x, y) зависят от пространственных координат (номеров отсчетов) k и l, изменяющихся от 0 до 7. Алгоритмом JPEG предусмотрено, что перед выполнением ДКП из значений яркости в видеоданных вычитают число 128, благодаря чему
значения отсчетов располагаются в диапазоне между –128 и +127.
После умножений матриц, согласно выражению (1.6.2), получим
матрицу коэффициентов ДКП A. Коэффициенты ДКП a(m, n) задают изображения в частотной плоскости, где m и n также изменяются от 0 до 7. Изображение представлено в виде суммы пространственных косинусоид, где a(m, n) – их амплитуды, а координаты
m, n – их частоты. Значение a(0,0) пропорционально среднему
уровню яркости в блоке. «Высокие» частоты передают мелкие детали изображения и в среднем имеют значительно меньшие амплитуды относительно a(0,0).
Двумерный спектр ДКП имеет важную особенность: основная
энергия частотных составляющих сосредоточена в области нулевых и низких частот. Амплитуды высокочастотных составляющих
либо малы, либо просто равны нулю (табл. 1.6.1).
Таблица 1.6.1
Пример матрицы A коэффициентов ДКП
n
m
0
1
2
3
4
5
6
7
0
395
–132
78
19
5
0
3
0
1
130
–30
–55
31
9
0
12
0
2
150
70
0
3
0
0
0
0
3
–40
35
23
1
11
9
–12
6
4
23
–11
7
3
0
0
0
0
5
0
14
0
0
15
0
13
0
6
0
8
–11
0
8
2
–15
0
7
0
5
–4
5
0
1
–3
7
57
Следующим шагом является квантование коэффициентов
α [m,n ] и сведение их к диапазону –127÷127. Дело в том, что при выполнении преобразования динамический диапазон коэффициентов
ДКП возрастает в 8 раз и составляет либо 0÷2047, либо –1023÷1023
дискретных уровней. Чтобы избежать перехода к 11-битовому кодированию, нужно разделить полученные коэффициенты на 8, а
результат округлить до ближайшего целого значения.
Пусть, например, передается поле с постоянной яркостью,
близкой к максимальной (244-й дискретный уровень). Матрица U
составлена из чисел 244 – 128 = 116. После ДКП в матрице A отличен от нуля только один элемент α(0, 0) = 928. Значение средней
яркости будет восстановлено после деления на 8: 928/8 = 116.
Глаз человека наиболее чувствителен к градациям яркости крупных деталей, поэтому для коэффициентов α(0, 0) шаг квантования
должен быть минимален. Для более высоких пространственных
частот можно применять квантование на меньшее число уровней.
Конкретный шаг квантования назначают согласно кодовой таблице JPEG-стандарта (табл. 1.6.2). Для формирования таблицы коэффициентов в ряде случаев используют следующий алгоритм:
Begin
quality:=5;//Ввод коэффициента масштаба квантования
For i:=0 to 7 do For j:=0 to 7 do
gamma[i, j]:=8+(i+j)∗quality;
end.
Здесь quality (качество) играет роль масштаба квантования,
который может быть принят от 1 до 31.
Таблица 1.6.2
Кодовая таблица
i
0
1
2
3
4
5
6
7
58
j
0
8
13
18
23
28
33
38
43
1
13
18
23
28
33
38
43
48
2
18
23
28
33
38
43
48
53
3
23
28
33
38
43
48
53
58
4
28
33
38
43
48
53
58
63
5
33
38
43
48
53
58
63
68
6
38
43
48
53
58
63
68
73
7
43
48
53
58
63
68
73
78
Назначение масштаба квантования позволяет управлять степенью сжатия и качеством восстановленного изображения.
Значения в ячейках с номерами i и j табл. 1.6.2 являются коэффициентами, на которые делят соответствующие им по местоположению элементы матрицы A. После округления до целых чисел
получаем новую матрицу, в которой значительно больше нулей
(табл. 1.6.3). Если все же коэффициенты разложения отличны от
нулей, для их кодирования применяют сокращенные по длительности кодовые группы. Например, для спектральных составляющих
α(7,7) число уровней квантования составит 2047/78≈26, что позволяет применить для их передачи (4÷5)-битные кодовые группы.
Таблица 1.6.3
Коэффициенты преобразования после деления
n
0
1
2
3
4
5
6
7
m
0
49
10
8
–2
0
0
0
0
1
–10
–2
3
1
0
0
0
0
2
4
–2
0
0
0
0
0
0
3
0
1
0
0
0
0
0
0
4
0
0
0
0
0
0
0
0
5
0
0
0
0
0
0
0
0
6
0
0
0
0
0
0
0
0
7
0
0
0
0
0
0
0
0
Исключением является кодирование постоянной составляющей – элемента α(0,0), для которого коэффициент деления фиксирован и равен 8: значения этого элемента всегда передают не менее
чем 256 уровнями, иначе будет заметно изменение яркости от блока к блоку (эффект шабровки, или шахматной структуры).
При восстановлении изображения элементы матрицы A умножают на соответствующие элементы кодовой матрицы (с учетом
масштаба квантования), а полученные числа округляют. Эта операция восстанавливает исходные значения коэффициентов матрицы A с точностью до ошибок округления, возрастающих по мере роста номеров (m, n). Так устраняют избыточность по восприятию,
поскольку высокочастотные составляющие передают с ошибками
квантования, которые зритель практически не замечает.
Следующий шаг сводится к преобразованию матрицы в одномерную последовательность кодовых групп путем зигзаг-сканирования.
59
Схема зигзаг-сканирования (рис. 1.6.2) позволяет сначала рассматривать коэффициенты с малыми значениями (m, n), а затем двигаться по мере нарастания номеров коэффициентов. В подавляющем
большинстве блоков отличные от нуля коэффициенты (показаны на
рис. 1.6.2 черными кругами) сосредоточены в левом верхнем углу.
Остальные коэффициенты образуют длинные последовательности
нулей (см. рис. 1.6.2). В этой ситуации эффективным методом является кодирование длин серий RLE (Run Length Encoding). При этом
получаем пары типа (пропустить, число), где «пропустить» является счетчиком пропускаемых нулей, а «число» — значение, которое необходимо поставить в следующую ячейку. Так, вектор 42 3 0
0 0 –2 0 0 0 0 1... будет свернут в пары (0, 42) (0, 3) (3, –2) (4, 1)... .
После последнего значащего элемента передают сигнал конца блока
EOB, который кодируют короткой кодовой группой 10.
Следующий этап кодирования связан с использованием кода с
переменной длительностью (кода Хаффмана). Тем значениям коэффициентов ДКП, которые встречаются наиболее часто, присваивают
наиболее короткий битовый код. Дело в том, что распределение вероятностей значений коэффициентов ДКП неравномерно: для всех
коэффициентов наиболее вероятны малые значения. Чтобы усилить
это свойство для коэффициентов α(0, 0), квантованию подвергают
разности средних яркостей соседних блоков, которые оказываются
в большинстве случаев малыми в силу существенной корреляционной связи между этими коэффициентами. Для коэффициентов с отличными от нуля значениями номеров (m, n) эти связи отсутствуют.
Таблица кодирования по Хаффману определена стандартом.
Рис. 1.6.2. Схема зигзаг-сканирования
60
В зависимости от информационного содержания фрагмента изображения длина кодовой последовательности, соответствующей
блоку, может быть разной. В результате информационный поток на
выходе кодера будет неравномерным. Для организации передачи по
каналу связи необходим буфер памяти, в который данные записывают по мере их поступления, а считывание производят с постоянной
скоростью. Чтобы не происходило переполнения или опустошения
этого буфера, систему кодирования делают адаптивной. Когда резервы буфера иссякают, блок управления автоматически увеличивает
масштаб квантования quality, и скорость поступления данных в буфер снижается ценой роста ошибок квантования. Если же буфер опустошается, блок управления уменьшает масштаб квантования, что
приводит к улучшению качества восстановленного изображения.
При передаче цветных изображений описанный алгоритм можно применить для RGB-данных, однако обычно так не делают. Сначала отделяют яркостную информацию от цветовой. Яркостную
информацию кодируют непосредственно, а цветовую подвергают
субдискретизации (subsampling). Сначала осуществляют пересчет
из системы RGB в YUV, где Y – яркостной сигнал, а U и V соответствуют цветоразностным сигналам R–Y и B–Y. Значения Y-сигнала
соответствуют яркости каждого элемента изображения, а цветовых – в зависимости от стандарта субдискретизации (рис. 1.6.3).
Яркостные элементы изображения показаны треугольниками без
штриховки, а цветовые заштрихованы. Например, в стандарте
4:1:1 цветовую информацию передают от каждого четвертого эле4:4:4
4:2:2
4:2:0
4:1:1
Рис. 1.6.3. Форматы представления видеоданных
61
мента, но в каждой строке; в стандарте 4:2:0 – через строку. Таким
простым путем производят сжатие изображения более чем на 50%,
причем после восстановления потери качества изображения практически незаметны.
1.6.4. Межкадровая компрессия видеоданных
(стандарт MPEG)
Для сжатия ТВ-изображений, представляющих собой последовательность ТВ-кадров, применяют кодирование с предсказанием – ДИКМ: по каналу связи передают лишь разность между истинным и предсказанным значениями отсчетов ТВ-сигнала. При
межкадровом предсказании вперед текущий отсчет принимают
равным отсчету с теми же координатами, но предыдущего кадра.
В качестве предсказывающего устройства используют память на
ТВ-кадр. Разностное изображение (см. рис. 1.6.1) содержит ошибку
предсказания, причем характерны обширные области с нулевыми
значениями. Это особенно эффективно при передаче неподвижных
изображений. Если изображение смещается, применяют компенсацию движения, для чего определяют векторы перемещения движущихся фрагментов изображения при переходе от кадра к кадру.
Эти векторы позволяют определить новое положение предсказанного отсчета (скомпенсировать его перемещение) и сохранить высокую точность предсказания.
Общее название стандартов сжатия движущихся изображений MPEG (Moving Picture Expert Group). Разработаны 4 варианта стандарта: MPEG-1, MPEG-2, MPEG-4 и MPEG-7. Стандарт
MPEG-1 ориентирован на системы записи CD-ROM и низкоскоростные каналы передачи изображения со скоростями цифрового
потока 1,5 Мбит/с и меньше. Стандарт MPEG-2 создан для кодирования сигналов вещательного телевидения, в том числе высокой
четкости. Следующая модификация MPEG-4 первоначально была
предназначена для организации телеконференций при передаче
видеоданных по цифровым телефонным каналам. В настоящее время стандарт принят для наземного телевизионного вещания в ряде
стран, в том числе в России. Стандарт MPEG-7 (Multimedia Content
Description Interface) призван определить универсальную многоуровневую структуру описания аудио- и видеоинформации. На высшем уровне прописываются свойства файла, такие как название,
62
имя создателя, дата создания и т. д. На следующем уровне указывают особенности сжимаемой аудио- или видеоинформации – цвет,
текстуру, тон или скорость. Формат сжатия MPEG-7 содержит богатый набор стандартных инструментов для описания мультимедийных данных, которые делают возможным автоматическое выделение информации как по общим, так и по семантическим признакам, связанным с восприятием информации человеком.
Базовым объектом кодирования в стандарте MPEG-2 является ТВ-кадр. Это обеспечивает преемственность со стандартом внутрикадрового кодирования JPEG. В MPEG-2 используют три вида
предсказания: внутрикадровое, межкадровое предсказание вперед
с компенсацией движения, межкадровое двунаправленное с компенсацией движения.
Кодирование и передачу информации выполняют по макроблокам размером 16×16 элементов (рис. 1.6.4). В состав каждого
макроблока входят четыре блока 8×8 элементов, которые несут
информацию о яркости изображения. За счет субдискретизации в
макроблок входят лишь два блока, несущих информацию о цветности (заштрихованные элементы на рис. 1.6.4). В результате каждый из макроблоков состоит из шести блоков, четыре из которых
несут информацию о яркости, а по одному определяют цветовые Uи V-компоненты. Всего таких макроблоков 396. Следующие друг за
другом макроблоки объединяют в независимые друг от друга разделы (slices) максимальным числом до 396. В предельном случае на
кадр изображения приходится только один раздел из 396 макроблоков.
:
:
67
:
:
Рис. 1.6.4. Макроблок
63
ТВ-кадры объединяют в группы (GOP – Group of Pictures), представляющие из себя минимальный повторяемый набор из 12 последовательных кадров, которые могут быть декодированы независимо от других ТВ-кадров (рис. 1.6.5). На первом этапе кодирования
обрабатывают с применением алгоритмов JPEG так называемые
I-кадры (intra), которые служат опорными при межкадровом предсказании P- и B-кадров (predicted и bidirectionally predicted). Типичной является группа вида: I0, B1, B2, P3, B4, B5, P6, B7, B8,
P9, B10, B11, I12, B13, B14, P15 и т. д.
Все макроблоки I-кадров являются опорными (тип intra) и подвергаются независимому преобразованию по стандарту JPEG. Кодирование P-кадров выполняют с использованием алгоритмов компенсации движения и предсказанием вперед по предшествующим
I- и P-кадрам (на рис. 1.6.5 показано стрелками). По каналу связи
передают лишь ошибки предсказания. В результате в P-кадрах в
3 раза выше степень сжатия, чем в I-кадрах.
В кодирующем устройстве для предсказания использована память на ТВ-кадр. B-кадры кодируют с использованием предсказания по соседним I- и P-кадрам (см. рис. 1.6.5). Предсказание оказывается более точным, а объем передаваемых по каналу связи
данных об ошибках предсказания сокращается. Поэтому степень
сжатия в B-кадрах в полтора раза выше, чем в P-кадрах. Для восстановления B-кадров одновременно нужны предшествующие и
следующие за ними I- и P-кадры. Следует увеличить объемы памяти на передающем и приемном концах, а также изменить порядок передачи кадров. Сначала нужно передать I-кадр, по нему
восстановить P-кадр, затем восстановить находящиеся между
*
# # 1 # # 1 # # 1 # #
*
Рис. 1.6.5. Межкадровое кодирование
64
ними B-кадры и т. д. Новый порядок кодирования и передачи кадров в группе: I0, P3, B1, B2, P6, B4, B5, P9, B7, B8... . Группы
могут быть открытыми и закрытыми. Последним элементом закрытой группы является P-кадр, предсказанный на основе кадра
этой же группы; открытой – B-кадр, для восстановления которого используют I-кадр последующей группы. Преимущество закрытых групп в том, что они позволяют выполнять прямые монтажные переходы перед очередным I-кадром без декодирования
цифрового потока; недостаток – более сложный кодер, так как
нужно, чтобы группа занимала строго фиксированный интервал
времени.
В стандарте MPEG-2 используют метод межкадрового предсказания P- и B-кадров с компенсацией перемещения по макроблокам. Напомним, что макроблок – это квадратная 16×16 элементов матрица.
Именно для них определяют векторы смещения относительно I- и
P-кадров. Вводят понятие зоны поиска перемещенного макроблока,
которая обычно в 4 раза больше его размеров и равна 64×64, что позволяет надеяться, что при быстром движении блок к следующему
кадру не выйдет за пределы зоны поиска. Всего получается 9 зон поиска по вертикали и 11 зон по горизонтали. Вычисляют абсолютные
значения модуля разности отсчетов сигналов (целевой функции) для
всех возможных смещений (слепой поиск) макроблоков предыдущего (опорного) и последующего кадров. Вектор смещения s = (sx, sy)Т
составлен из разностей координат старого положения макроблока и
нового, где значение целевой функции минимально.
Более быстрым алгоритмом является логарифмический метод
(деления отрезка пополам, или дихотомии), который выполняют
за несколько шагов, в каждом из которых рассчитывают и сравнивают по 9 значений целевой функции в узловых точках. На последующих шагах область поиска сужают, повышая точность предсказания.
Пример реализации такого поиска за 3 шага дан на рис. 1.6.6,
где цифрами показаны пробные точки (положения центров макроблока) на каждой итерации поиска. Вычисляя значения целевой
функции для пробных точек, сужают зону поиска на каждом шаге
примерно в 3 раза по площади. Линейный размер шага меняется
как 4:2:1, а диапазон возможных значений вектора смещения в
данном примере равен (7, 7).
Известен также метод телескопического поиска, рекомендуемый для последовательных B-кадров, основанный на использова65
Рис. 1.6.6. Совмещение макроблоков методом дихотомии
нии в качестве стартовой оценки вектора смещения текущего макроблока значения вектора из предыдущего B-кадра для этого же
макроблока.
После того как все перемещения макроблоков выполнены (движения объектов скомпенсированы), вычисляют разность между
предсказанными и фактическими значениями отсчетов в сигнальных матрицах. Выигрыша достигают за счет того, что ошибки предсказания оказываются существенно меньшими или даже равными
нулю. Однако на практике полностью скомпенсировать изменение
содержания изображений в соседних кадрах обычно не удается, так
как одновременно с движением происходят изменения размеров
и ракурса объектов. Полученные матрицы ошибок предсказания
кодируют с применением ДКП так же, как и I-кадры, с той лишь
разницей, что для разностного сигнала не приходится надеяться на
существенные корреляционные связи между элементами. Поэтому
высокие частоты столь же важны, как и низкие. По умолчанию все
значения матрицы квантования (см. табл. 1.6.2) принимают одинаковыми и равными 16. Сведения о значениях векторов смещений
для всех макроблоков включают в общий поток цифровых данных
и используют при декодировании видеоданных.
Обычно смещения изображения внутри кадра незначительны, и
зачастую вектор смещения равен нулю. Тогда после кодирования
все ДКП-коэффициенты блока также могут оказаться равными
нулю. В этих случаях достаточно поставить определенную стандартом метку (флаг) и сразу перейти к следующему блоку. Для таких
пропускаемых (skipped) блоков достигается самый короткий код.
Аналогичная ситуация возникает с макроблоком, когда все его
66
блоки имеют статус skipped и соответствующие векторы смещения
также равны нулю. В экстремальных случаях (например, при монтажных переходах, переключениях камер) ошибка может быть так
велика, что выигрыша нет по сравнению с кодированием данного
кадра как опорного (типа I).
Определение векторов смещений, использование различных
стратегий предсказания требуют использования сложных вычислительных процедур, поэтому кодирующее устройство получается
гораздо сложнее и дороже, чем декодирующее.
В результате видеокомпрессии происходят необратимые искажения изображений, которые при значительных коэффициентах
сжатия могут быть замечены наблюдателями. Общий недостаток
систем сжатия, основанных на разбиении всего изображения на
блоки, заключается в том, что при больших коэффициентах сжатия восстановленные блоки плохо стыкуются друг с другом и становится заметной блочная структура полученного изображения.
Еще раньше появляются артефакты – различного рода посторонние узоры (муары), которые прежде всего зависят от содержания
изображения и алгоритма компрессии. Количество и интенсивность артефактов сильно зависят от степени сжатия, причем эта
зависимость нелинейная. Артефакты проявляются на тех участках изображения, где содержится много мелких деталей, резких
яркостных и цветовых переходов. Их появлению способствуют
быстрое движение объектов, смена сюжета, изменения фокусного расстояния объектива, панорамирование при съемке. В этих
обстоятельствах происходит декорреляция ТВ-изображения, и
система компрессии перегружается (переполняется буферная память). Чтобы справиться с возникшей ситуацией, вводят более
грубое квантование, что и приводит к ошибкам при воспроизведении сжатых изображений. Ошибки проявляются в виде нестабильности контуров, появления окантовок и шумов в областях резких
яркостных и цветовых переходов. При плохих соотношениях сигнал/шум в исходном ТВ-сигнале сжатие применять вообще нецелесообразно. Следует предостеречь от многократного применения
сжатия к одному и тому же изображению, так как ошибки быстро
накапливаются.
При формировании ТВ-программ используют сигналы от разных источников: цифровых видеокамер и видеомагнитофонов, систем спутникового телевидения и пр., где могут быть применены
различные системы сжатия или даже одни и те же, но с разными
67
параметрами. В этих условиях могут возникнуть конфликтные ситуации, в результате которых искажения резко возрастают. Свою
лепту вносят системы нелинейного видеомонтажа, где часто применяют компрессию 10:1. Сказанное не опровергает систем сжатия, но требует внимательности при их использовании.
1.6.5. Задание на моделирование
Используйте Ваши программы по дискретизации и квантованию, а также дискретному косинусному преобразованию ДКП изображения «Портрет».
1. Оцените возможности по энтропийному кодированию исходного изображения, квантованного на 256 уровней. Используйте
данные гистограммы распределения уровней яркости и просчитайте вероятности появления этих уровней; энтропию источника
сообщения по формуле (1.6.1), а также избыточность сообщений
R = 1 – (H/H0), где H0 составляет 8 бит.
2. Постройте гистограмму появления коэффициентов ДКП по
всем блокам, просчитайте вероятности появления определенных
значений коэффициентов; энтропию источника сообщения по формуле (1.6.1), а также избыточность сообщений R = 1 – (H/H0), где
H0 составляет 8 бит.
3. Используйте либо кодовую таблицу JPEG-стандарта
(табл. 1.6.1), либо программу формирования коэффициентов кодовой таблицы. Выполните деление коэффициентов ДКП в блоках на
соответствующие элементы кодовой таблицы и округление результатов путем отбрасывания дробной части.
4. Реализуйте зигзаг-сканирование коэффициентов в блоках
и кодирование длин серий (RLE-кодирование). Напоминаю, что
RLE-кодирование заключается в подсчете числа повторяющихся
значений данных и их передаче в виде двух чисел: первое число
означает число повторений, а второе – собственно передаваемое значение конкретного отсчета. Например, последовательность чисел
27;3;5;5;0;0;0;0;0;0; должна быть закодирована как 1;27;1;3;2;5;6;
0. Не забудьте поставить код конца каждого блока.
5. Подсчитайте число бит закодированного Вами сообщения
«Портрет» и оцените полученный выигрыш. Реальный выигрыш
будет еще большим, так как не использовано энтропийное кодирование по Хаффману!
68
Контрольные вопросы
1. Перечислите основные виды избыточности, используемые
при разработке методов сжатия изображения.
2. Что значит методы сжатия с потерями информации и без потерь? Приведите примеры методов сжатия информации без потерь.
3. Перечислите и поясните основные шаги метода сжатия по
стандарту JPEG.
4. Какие из перечисленных шагов JPEG реализуют сжатие информации с потерями, а какие без потерь?
5. Сравните стандарты сжатия видеоданных MJPEG и MPEG.
6. Какие типы кадров используют в стандарте сжатия MPEG, и
чем они друг от друга отличаются?
7. Какой профиль MPEG обеспечивает более высокий уровень
компрессии с использованием или без использования B-кадров?
8. Каким образом в стандарте MPEG реализуют компенсацию
движения?
69
2. Методические указания
к разработке программ в среде Delphi
2.1. Описание компонентов и команд
для работы с растровыми изображениями
В рамках лабораторной работы необходимо разработать программу, позволяющую загружать из файла растровое изображение,
производить его модификацию и сохранять результаты на диске.
Рассмотрим компоненты и команды языка Delphi, обеспечивающие решение указанных задач.
Основным компонентом для отображения и модификации графической информации, содержащейся в файлах типа BMP (битовых матрицах), служит компонент Image (свойство Picture, подсвойство BitMap).
Для загрузки изображения в компонент Image из файла в процессе работы программы используют метод файлового чтения Load
FromFile:
Procedure LoadFromFile (const FileName: string);
Запись изображения компонента Image в процессе работы программы реализуют с помощью файлового метода записи SaveTo
File:
Procedure SaveToFile (const FileName: string);
Модификация растрового изображения может быть реализована с помощью свойства Canvas.
Свойство Canvas определяет полотно – прямоугольную сетку
пикселей. Каждый пиксель имеет свой номер по горизонтали и номер по вертикали. Левому верхнему углу соответствуют координаты 0,0. Общее количество пикселей по горизонтали определяется
свойством Width, по вертикали – свойством Height. Цвет каждого
пикселя полотна содержится в массиве Pixels[X,Y] и может быть
извлечен командой
<имя переменной: Longint>:= Image.Canvas.Pixels[X, Y].
Например, p_Color:=Image1.Canvas.Pixels [100,100]. В результате работы этой команды переменной p_Color будет присвоен цвет
пикселя с координатами 100,100.
Класс цвета пикселя определен как длинное целое Longint. Переменные этого типа занимают в памяти 4 байта. Информация о
70
RGB-координатах цвета размещена следующим образом. Младший
байт – R-координата, второй байт – G-координата, третий байт –
B-координата: $00BBGGRR. Значение каждой координаты может
меняться от 0 до 255.
Для того чтобы получить значение каждой из RGB-координат,
следует использовать команды:
– получение координаты R
<имя переменной: byte>:=Image.Canvas.Pixels[X,Y] and $000000FF;
– получение координаты G
<имя переменной: byte>:=(Image.Canvas.Pixels[X,Y] and $0000FF00)
shr 8;
– получение координаты B
<имя переменной: byte>:=( Image.Canvas.Pixels[X,Y] and $00FF0000)
shr 16;
Например, для определения RGB-координат пикселя с координатами 100,100 фрагмент программы будет иметь вид
R_Color:=Image1.Canvas.Pixels[100,100] and $000000FF;
G_Color:=(Image1.Canvas.Pixels[100,100] and $0000FF00) shr 8;
B_Color:=( Image1.Canvas.Pixels[100,100] and $00FF0000) shr 16;
Для получения яркости пикселя:
Y_pixel:=0.59*G_Color+0.3*R_Color+0.11*B_Color.
Если Вы работаете с изображением в градациях серого, то R_
Color = G_Color =B_Color. Поэтому достаточно считать только одну
цветовую координату, яркость пикселя будет равна ее значению.
Например:
Y_pixel:=Image1.Canvas.Pixels[100,100] and $000000FF;
Для того чтобы присвоить цвет пикселю полотна, используют
следующие команды:
– для изображения в градациях серого
Image1.Canvas.Pixels[100,100]:=Y_pixel shl 16 +Y_pixel shl 8 +Y_
pixel;
– для цветного изображения
Image1.Canvas.Pixels[100,100]:=B_color shl 16 +G_color shl 8 +R_
color;
Другим способом получения значений RGB-координат пикселя канвы является использование функций GetRvalue, GetGvalue,
GetBvalue:
71
Function GetRvalue(rgb:cardinal):byte;
Function GetGvalue(rgb:cardinal):byte;
Function GetBvalue(rgb:cardinal):byte;
Для того чтобы получить значение каждой из координат, следует использовать команды
<имя переменной: byte>:=
GetRvalue(Image.Canvas.Pixels[X,Y]);
<имя переменной: byte>:=
GetGvalue(Image.Canvas.Pixels[X,Y]);
<имя переменной: byte>:=
GetBvalue(Image.Canvas.Pixels[X,Y]);
Например, для определения RGB-координат пикселя с координатами 100,100 фрагмент программы будет иметь вид
R_color:=GetRvalue(Image1.Canvas.Pixels[100,100]);
G_color:=GetGvalue(Image1.Canvas.Pixels[100,100]);
B_color:=GetBvalue(Image1.Canvas.Pixels[100,100]);
Для присвоения цвета пикселю может быть использована функция RGB-function RGB(r: byte; g: byte; b: byte): cardinal;
Команда для присвоения цвета пикселю с координатами 100 будет иметь вид
Image1.Canvas.Pixels[100,100]:=RGB(R_color, G_color, B_color);
Рассмотренные способы модификации растрового изображения
достаточно длительны по времени. Сократить временные затраты
позволяет использование свойства ScanLine [9].
2.2. Примеры простейших программ
для работы с растровыми изображениями
Пример 1.
Приложение, позволяющее загружать изображение из файла
в процессе работы и отображать его на форме.
1. Откройте новое приложение.
2. Нанесите и разместите на форме компонент Image (Image1) со
страницы Additional.
3. Перейдите в инспектор объектов. Установите свойству Auto
Size значение true. В этом случае размер компонента Image будет
автоматически изменяться в соответствии с размером помещенно72
го в него изображения. Если свойство AutoSize установить в False,
то изображение может не поместиться в компонент полностью и
отображена будет только его часть. Или, наоборот, площадь компонента может оказаться много больше площади изображения.
(Другим полезным свойством компонента Image является свойство
Stretch. Оно позволяет подгонять не изображение под размер компонента, а размер компонента под размер рисунка. Для этого необходимо свойство AutoSize установить в положение False, а свойство
Stretch – в True.)
4. Разместите на форме компонент Button (Button1) и перенесите на форму компонент диалога открытия графического файла
OpenPictureDialog (OpenPictureDialog1).
5. В обработчике событий компонента Button1 на событие
OnClick напишите следующий оператор:
If (OpenPictureDialog1.Execute) then
Image1.Picture.BitMap.LoadFromFile(OpenPictureDialog1.FileName);
Разработанное Вами приложение позволяет загружать растровое изображение из файла и отображать его на форме.
Пример 2.
Дополним приложение предыдущего примера функцией считывания RGB-координат в произвольной точке изображения. Выбор
точки осуществляется нажатием кнопки мыши.
1. Дополнительно разместите на форме три компонента Label
(Label1, Label2, Label3).
2. Выберите компонент Image1. В обработчике событий этого
компонента на событие OnMouseDown впишите следующие операторы:
procedure
TForm1.Image1MouseDown(Sender:
TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
R,G,B:byte;
begin
R:=GetRvalue(Image1.Canvas.Pixels[X,Y]);
G:=GetGvalue(Image1.Canvas.Pixels[X,Y]);
B:=GetBvalue(Image1.Canvas.Pixels[X,Y]);
label1.caption:=inttostr(R);
label2.caption:=inttostr(G);
TObject;
Button:
73
label3.caption:=inttostr(B);
end;
или
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
R,G,B:byte;
Begin
R:=Image1.Canvas.Pixels[X,Y] and $000000FF;
G:=(Image1.Canvas.Pixels[X,Y] and $0000FF00) shr 8;
B:=( Image1.Canvas.Pixels[X,Y] and $00FF0000) shr 16;
label1.caption:=inttostr(R);
label2.caption:=inttostr(G);
label3.caption:=inttostr(B);
end;
После запуска приложение позволит загрузить растровое изображение и получить RGB-координаты в любой указанной мышкой
точке.
Пример 3.
Дополним разработанное приложение следующими возможностями: формированием изображения в градациях серого на основе
исходного цветного изображения с последующим сохранением его
в файл.
1. На форму поместите второй компонент Image (Image2) для
хранения результата и второй компонент Button (Button2). В обработчике событий компонента Button2 на событие OnClick впишите
следующие операторы:
procedure TForm1.Button2Click(Sender: TObject);
var
i,j: byte;
R,G,B: byte;
Y: byte;
begin
for i:=1 to Image1.Width do
for j:=1 to Image1.Height do
begin
R:=GetRvalue(Image1.Canvas.Pixels[i,j]);
G:=GetGvalue(Image1.Canvas.Pixels[i,j]);
74
B:=GetBvalue(Image1.Canvas.Pixels[i,j]);
Y:=round(0.59*G+0.3*R+0.11*B);
Image2.Canvas.Pixels[i,j]:=RGB(Y,Y,Y);
end;
end;
2. Разместите на форме еще один компонент Button (Button3) и
перенесите на форму компонент диалога сохранения изображения
в файл SavePictureDialog.
3. В обработчике событий компонента Button3 на событие
OnClick напишите следующий оператор:
If (SavePictureDialog1.Execute) then
Image2.Picture.BitMap.SavetoFile(SavePictureDialog1.FileName);
2.3. Разработка программы
для спектрального представления сигналов
В соответствии с заданием на моделирование необходимо разработать программу, реализующую следующие функции:
1) загрузку растрового изображения в формате BMP и вывод его
на экран;
2) разбиение изображения на блоки размером 8×8 пикселей;
3) выбор блока изображения в интерактивном режиме (блок
указывают мышкой);
4) ДКП для выбранного блока изображения;
5) построение гистограммы распределения коэффициентов ДКП.
Основные шаги разработки программы моделирования.
1. Откройте новое приложение.
2. Разработайте рабочее окно программы моделирования. Для
этого разместите на форме компоненты, приведенные в табл. 2.3.1.
Компонент PaintBox расположите на компоненте Image, размеры
компонентов совпадают.
Вариант компоновки рабочего окна на основе указанных компонентов представлен на рис. 2.3.1.
3. В данной лабораторной работе необходимо построить гистограмму распределения коэффициентов ДКП. Это трехмерная гистограмма, поэтому компонент Chart (основы работы с которыми
изложены в подразд. 2.4) требует дополнительной настройки. Откройте окно настройки Editing Chart компонента Chart. Добавьте
75
в гистограмму Series1. При добавлении Series1 флаг 3D оставьте
установленным. Перейдите на панель Series, закладку Format и в
переключателе Multiple Bar выберите позицию None (рис. 2.3.2).
Таблица 2.3.1.
Название компонента
Страница
MainMenu
Image
PaintBox
Chart
OpenPictureDialog
Label
Standard
Additional
System
Additional
Dialogs
Standard
4. Вернитесь на панель Chart закладку Series и, используя кнопку Clone, продублируйте Series1 восемь раз. Результат показан на
рис. 2.3.1.
5. Далее необходимо разработать программный код приложения, реализующий функции, перечисленные в задании на моделирование. Функции загрузки и отображения исходного изображения, вывод изображения на экран, считывание RGB-координат
пикселей анализируемого изображения были рассмотрены в примерах 1–3 подразд. 2.2.
Компонент
MainMenu
Компонент Компонент
Компонент
Image
PaintBox
OpenPictureDialog
Компонент
Chart
Рис. 2.3.1 Вид рабочего окна программы
76
Рис. 2.3.2. Вид панели Series, закладка Format
6. Рассмотрим реализацию разбиения изображения на блоки
(наложения сетки на изображение), указание блока мышкой и считывание яркостных отсчетов изображения в указанном блоке.
Для наложения сетки на изображение будем использовать компонент PaintBox. Он позволяет определить область формы, на которой будет происходить рисование. В нашем случае компонент
PaintBox должен быть наложен на компонент Image. Рисование
реализуют, используя подсвойство компонента PaintBox.Canvas.
Методы Canvas, которые потребуются для создания сетки, представлены в табл. 2.3.2.
Таблица 2.3.2
Метод
Описание
procedure MoveTo(X, Y: Integer); Задает координаты начальной точки
(точки, из которой будет начато
рисование)
procedure LineTo(X, Y: Integer); Рисует линию от текущей точки до
точки с координатами X, Y
procedure Rectangle(X1, Y1, X2, Рисует прямоугольник с координатами
Y2: Integer);
левого верхнего угла X1, Y1 и с
координатами правого нижнего X2, Y2
Программный код, соответствующий прорисовке сетки с использованием описанных функций, имеет вид
procedure TForm1.N2Click(Sender: TObject);
var
i,j: byte;
77
Q_block_x,Q_block_y: integer;
Begin
// определение числа блоков по горизонтали и вертикали
Q_block_x:=paintbox1.width div 8;
Q_block_y:=paintbox1.height div 8;
// рисование сетки
with Paintbox1.Canvas do
begin
for i:=1 to Q_block_x do
begin
moveto(i+8*(i-1),1);
lineto(i+8*(i-1),paintbox1.Height)
end;
for j:=1 to Q_block_y do
begin
moveto(1,j+8*(j-1));
lineto(paintbox1.width,j+8*(j-1))
end;
end;
end;
Этот код необходимо вставить в обработчик события пункта
меню «Разбиение изображения на блоки».
7. Выбор блока с помощью мышки, для которого будет выполнено ДКП, требует разработки программного кода события
PaintBox1MouseUp. Выделите PaintBox1 на форме и перейдите в
Object Inspector на закладку Events. Найдите событие OnMouseUp.
Дважды кликируйте по нему. Автоматически будет сгенерирован
заголовок процедуры для события PaintBox1MouseUp. Теперь надо
разработать сам код.
8. В заголовке функции procedure TForm1.PaintBox1MouseUp
(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y:
Integer); присутствуют параметры X, Y. При работе программы в
них будут сохранены значения координат точки, в которой пользователь отпустил кнопку мыши. Необходимо:
• определить, какому блоку принадлежит точка с координатами
X, Y;
• запомнить координаты левого верхнего угла этого блока;
• выделить указанный блок на сформированной сетке.
Перечисленным действиям соответствует следующий программный код:
78
procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button:
TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
i,j: integer;
Q_block_x,Q_block_y: integer;
Begin
// определение числа блоков по горизонтали и вертикали
Q_block_x:=paintbox1.width div 8;
Q_block_y:=paintbox1.height div 8;
for i:=1 to Q_block_x do
for j:=1 to Q_block_y do
// проверка какому блоку принадлежит точка с координатами X, Y
if (x>i+8*(i-1)) and (x<=i+8*i) and (y>j+8*(j-1)) and (y<=j+8*j)
then
begin
// сохранение координат левого верхнего угла выделенного блока.
// Внимание переменные x_block и y_block являются глобальными и
должны быть описаны в разделе описания глобальных переменных!
x_block:=i+8*(i-1);
y_block:=j+8*(j-1);
// выделение блока на сформированной сетке.
with paintbox1.Canvas do
begin
pen.Color:=clRed;
brush.Style:=bsSolid;
Рис. 2.3.2. Сформированная сетка
79
¯ÁÃÄȾɾºÁɹ×ÒÁÂÈÁÃʾÄÁºÄÇùÈǼÇÉÁÀÇÆ˹ÄÁ
¯ÁÃÄȾɾºÁɹ×ÒÁÂÈÁÃʾÄÁºÄÇùÈÇ»¾ÉËÁùÄÁ
§Èɾ½¾Ä¾ÆÁ¾ÃÇÇɽÁƹËÔ˾ÃÌÒ¾¼ÇÈÁÃʾÄØ
99@CMPDLJs
::@CMPDLKs
§Èɾ½¾ÄÁËÕ3(#ÃÇÇɽÁƹË˾ÃÌÒ¾¼ÇÈÁÃʾÄØ
§Èɾ½¾ÄÁËÕ:ÃÇÇɽÁƹËÌ
6<JK>:
£ÇƾÏÏÁÃĹÈÇ»¾ÉËÁùÄÁ
£ÇƾÏÏÁÃĹÈǼÇÉÁÀÇÆ˹ÄÁ
§Èɾ½¾Ä¾ÆÁ¾Å¹ËÉÁÏÔËɹÆÊÍÇÉŹÆËÈÌ˾ÅÌÅÆÇ¿¾ÆÁØ
ŹËÉÁÏÔ6ƹŹËÉÁÏÔº¹ÀÁÊÆÔÎÊÁ¼Æ¹ÄÇ»
"­6­5
¨ÇÊËÉǾÆÁ¾¼ÁÊËǼɹÅÅÔ
ɹÊÈɾ½¾Ä¾ÆÁØÃÇÖÍÍÁÏÁ¾ÆËÇ»£¨
Рис. 2.3.3. Структурная схема алгоритма
Rectangle(x_block,y_block,x_block+9,y_block+9);
end;
end;
end;
Результаты работы программы по формированию сетки и выделению указанного блока приведены на рис. 2.3.2.
9. Программный код для остальных функций разработайте самостоятельно, используя структурную схему алгоритма спектрального преобразования (рис. 2.3.3).
2.4. Разработка программы
для дискретизации и квантования сигналов
В соответствии с заданием на моделирование необходимо разработать программу, реализующую следующие функции:
80
1) загрузку растрового изображения в формате BMP и вывод его
на экран;
2) квантование изображения на 2, 8, 16, 32, 64 уровня и вывод
результата квантования на экран;
3) построение гистограммы распределения уровней яркостей в
исходном и квантованном изображении;
4) определение среднеквадратического отклонения отсчетов исходного изображения от среднего значения, которое характеризует
это изображение;
5) определение среднеквадратической ошибки за счет квантования.
Основные шаги разработки программы моделирования.
1. Откройте новое приложение.
2. Разработайте рабочее окно программы моделирования. Для
этого разместите на форме компоненты, приведенные в табл. 2.4.1.
Таблица 2.4.1
Название компонента
Страница
MainMenu
Image
Radiogroup
Chart
OpenPictureDialog
Label
Standard
Additional
Standard
Additional
Dialogs
Standard
Вариант компоновки рабочего окна на основе указанных компонентов представлен на рис. 2.4.1.
Компонент Label
Компонент
MainMenu
Компонент RadioGroup
Компонент
OpenPictureDialog
Компонент Image
Компонент Chart
Рис. 2.4.1. Вид рабочего окна программы
81
Рис. 2.4.2. Вид диалогового окна Editing Chart
3. Компонент Chart после размещения на форме требует настройки. Выделите его и щелкните правой кнопкой мыши. В открывшемся меню выберите позицию Edit Chart. В диалоговом окне
настройки компонента Editing Chart перейдите на панель Chart,
выберите закладку Series и кликируйте по кнопке Add (рис. 2.4.2).
4. В открывшемся диалоговом окне TeeChartGallery выберите
тип гистограммы Bar и сбросьте флаг 3D (рис. 2.4.3). Закройте диалоговое окно TeeChartGallery.
5. На панели Chart перейдите на закладку Titles и сбросьте флаг
Visible.
Рис. 2.4.3. Вид диалогового окна TeeChartGallery
82
Рис. 2.4.4. Вид панели Series, закладка Marks
6. Перейдите на панель Series, выберите закладку Marks и
сбросьте флаг Visible (рис. 2.4.4).
7. Закройте окно Editing Chart. Вид компонента после настройки представлен на рис. 2.4.1.
8. Для реализации функции загрузки изображения дважды
кликируйте по одноименной позиции меню. В обработчик события
N1.Onclick впишите операторы загрузки изображения в компонент
Image1 с использованием компонента OpenPictureDialog1. Подробно этот материал изложен в примерах 1–3 подразд. 2.2.
9. Для построения гистограммы распределения яркости изображения необходимо:
– для каждого пикселя изображения опрелелить RGBкоординаты и рассчитать Y-компоненту;
– определить, какому уровню яркости соответствует значение
Y анализируемого пикселя, и увеличить для этого уровня яркости
значение числа соответствующих ему пикселей на единицу;
– отобразить гистограмму, используя компонент Chart и функцию AddXY.
Функция AddXY имеет следующий синтаксис: function
AddXY(Const AXValue, AYValue: Double; Const AXLabel: String;
AColor: TColor): Longint. Она позволяет отобразить на гистограмме
одно значение: его координаты по оси X и Y определяют параметры
AXValue, AYValue. Параметр AXLabel задает подпись на горизонтальной оси, параметр AColor – цвет. Последние два параметра не
являются обязательными.
83
Перечисленной последовательности действий соответствует следующий программный код:
procedure TForm1.N5Click(Sender: TObject);
const
Q_level=255; // число уровней яркости
var
i,j: integer;
R,G,B, Y: integer;
freq: array [1..Q_level] of integer;// массив для хранения числа
отсчетов с заданным уровнем
k: byte;
begin
for k:=1 to Q_level do
freq[k]:=0;
for i:=1 to Image1.Height do
for j:=1 to Image1.Width do
begin
// считывание RGB координат и расчет Y компоненты.
R:=GetRvalue(Image1.Canvas.Pixels[i,j]);
G:=GetGvalue(Image1.Canvas.Pixels[i,j]);
B:=GetBvalue(Image1.Canvas.Pixels[i,j]);
Y:=round(0.59*G+0.3*R+0.11*B);
for k:=1 to Q_level do
// реализация условия если яркость пикселя соответствует уровню
k, то увеличить на единицу значение частоты повторения отсчетов для
данного уровня.
Рис. 2.4.5. Результат работы разработанного приложения
84
if Y=k then inc(Freq[k])
end;
// вывод гистограммы на экран с помощью компонента Chart.
for k:=1 to Q_level do
series1.addXY(k,freq[k],inttostr(k), clteeColor);
end;
Для использования этой процедуры дважды кликируйте по позиции меню «Квантование> Построение гистограммы> Исходное
изображение» и вставьте приведенный выше текст в обработчик со ¹½¹ËÕÐÁÊÄÇÌÉǻƾÂû¹ÆËÇ»¹ÆÁØ2@MFWFM
§Èɾ½¾ÄÁËÕÁÆ˾ɻ¹Äž¿½ÌÌÉÇ»ÆØÅÁû¹ÆËÇ»¹ÆÁØ
JOUFS2@MFWFMs
¯ÁÃÄȾɾºÁɹ×ÒÁÂÈÁÃʾÄÁÁÀǺɹ¿¾ÆÁØÈǼÇÉÁÀÇÆ˹ÄÁ
¯ÁÃÄȾɾºÁɹ×ÒÁÂÈÁÃʾÄÁÈÇ»¾ÉËÁùÄÁ
§Èɾ½¾ÄÁËÕ3(#ÃÇÇɽÁƹËÔ˾ÃÌÒ¾¼ÇÈÁÃʾÄØ
§Èɾ½¾ÄÁËÕ:ÃÇÇɽÁƹËÌ
¯ÁÃÄȾɾºÁɹ×ÒÁÂÌÉÇ»ÆÁû¹ÆËÇ»¹ÆÁØ
Ls˾ÃÌÒÁÂÌÉÇ»¾ÆÕû¹ÆËÇ»¹ÆÁØ
¹
:JOUFSLs
BOE:JOUFSLs
JOUFS
:JOUFSLs
¹
:JOUFSLs
JOUFS
BOE:JOUFSL
:JOUFSL
£ÇƾÏÏÁÃĹÈÇÌÉÇ»ÆØÅû¹ÆËÇ»¹ÆÁØ
3(#ÃÇÇɽÁƹËÔ˾ÃÌÒ¾¼ÇÈÁÃʾÄØ
ÈÇÊľû¹ÆËÇ»¹ÆÁØ
£ÇƾÏÏÁÃĹÈÇ»¾ÉËÁùÄÁ
£ÇƾÏÏÁÃĹÈǼÇÉÁÀÇÆ˹ÄÁ
Рис. 2.4.6. Структурная схема алгоритма квантования
85
бытия N3. Результат работы разработанного приложения показан
на рис. 2.4.5.
10. Программный код для остальных функций разработайте самостоятельно, используя примеры подразд. 2.2 и структурную схему алгоритма квантования (рис. 2.4.6).
2.5. Разработка программы
цифровой фильтрации изображений
В соответствии с заданием на моделирование необходимо разработать программу, реализующую следующие функции:
1) загрузку растрового изображения в формате BMP и вывод его
на экран;
2) фильтрацию изображения, используя фильтры табл. 2.5.1;
Таблица 2.5.1
№ п/п
1
2
3
4
5
Вид фильтра
Линейный цифровой фильтр с
апертурой 5×5
Фильтр «Мозаика»
Сглаживающий фильтр
Фильтр апертурный коррекции
Медианный фильтр
Параметры, задаваемые в процессе
работы пользователем
Коэффициенты фильтра
Размер апертуры фильтра
–
Глубина резкости
–
3) препарирование изображения с помощью фильтров выделения
контуров. Вид фильтра определен номером варианта (табл. 2.5.2);
Таблица 2.5.2
86
Номер варианта
Вид фильтра
1
2
3
4
5
Оператор Собела для горизонтальных контуров
Оператор Собела для вертикальных контуров
Оператор Собела для наклонных контуров
Обобщенный оператор Собела
Оператор Превитта для горизонтальных контуров
6
7
8
9
10
Оператор Превитта для вертикальных контуров
Оператор Робертса для горизонтальных контуров
Оператор Робертса для вертикальных контуров
Оператор Лапласа
Оператор Канни
4) фильтрацию на основе спектрального представления сигнала.
(Для выполнения этого пункта следует обработать матрицы трансформант, полученные в подразд. 2.3 частотным фильтром с гауссовой характеристикой и σ = 2.)
Основные шаги разработки программы моделирования.
1. Откройте новое приложение.
2. Разработайте рабочее окно программы моделирования. Для
этого разместите на форме следующие компоненты (табл. 2.5.3)
Таблица 2.5.3
Название компонента
Страница
MainMenu
Image
Edit
Radiogroup
Trackbar
OpenPictureDialog
Label
Standard
Additional
Standard
Standard
Win32
Dialogs
Standard
Вариант компоновки рабочего окна на основе указанных компонентов представлен на рис. 2.5.1.
3. Дважды кликируйте по позиции меню «Загрузить изображение». В обработчик события N1.Onclick впишите операторы загрузКомпонент Edit
Компонент
MainMenu
Компонент RadioGroup
Компонент
OpenPictureDialog
Компонент Image
Компонент TrackBar
Рис. 2.5.1. Вид рабочего окна программы
87
ки изображения в компонент Image1 с использованием компонента
OpenPictureDialog1.
4. Дважды кликируйте по позиции меню «Вид фильтрации
>Усреднение». Для проведения фильтрации необходимо выполнить следующие действия:
– получить RGB-координаты N×N пикселeй (число определяется размером апертуры) изображения;
– рассчитать Y-компоненты для всех пикселей;
– провести операцию свертки яркостных координат с коэффициентами фильтра;
– записать полученное в результате фильтрации значение яркости в формируемое изображение.
Этой последовательности действий для фильтра усреднения
1 1 1


с апертурой 3 × 3 F = 1 1 1 /9 соответствует следующий про1 1 1


граммный код:
procedure TForm1.N4Click(Sender: TObject);
const
Norm=9; // нормирующий коэффициент
Fk: array [1..3,1..3] of real = ((1,1,1),(1,1,1),(1,1,1));// значения коэффициентов в маске фильтра.
var
i,j: integer;
ii, jj: byte;
R,G,B: byte;
Y, Rez_Y: byte;
Rez: real;
begin
for i:=1 to Image1.Height do
for j:=1 to Image1.Width do
begin
Rez:=0;
// перебор пикселей изображения под апертурой фильтра
for ii:=1 to 3 do
for jj:=1 to 3 do
begin
// считывание RGB координат
R:=GetRvalue(Image1.Canvas.Pixels[i+ii-2,j+jj-2]);
88
G:=GetGvalue(Image1.Canvas.Pixels[i+ii-2,j+jj-2]);
B:=GetBvalue(Image1.Canvas.Pixels[i+ii-2,j+jj-2]);
// расчет Y компоненты
Y:=round(0.59*G+0.3*R+0.11*B);
// операция свертки с коэффициентами фильтра
Rez:=Rez+Y*Fk[ii,jj];
end;
Rez_Y:=round(Rez/Norm);
//формирование результирующего изображения.
Image2.Canvas.Pixels[i,j]:=RGB(Rez_Y,Rez_Y,Rez_Y);
end;
end;
5. Дополните программу всеми остальными функциями, перечисленными в задании на моделирование, самостоятельно.
2.6. Разработка программы
морфологической фильтрации изображений
В соответствии с заданием на моделирование необходимо разработать программу, реализующую следующие функции:
1) загрузку растрового изображения в формате BMP и вывод его
на экран;
2) фильтрацию изображения, используя морфологические фильтры и операторы, приведенные в табл. 2.6.1.
Таблица 2.6.1
Вид изображения
Черно-белое
Полутоновое
Вид морфологического фильтра или оператора
Фильтр бинарной эрозии
Фильтр бинарной дилатации
Оператор закрытия
Оператор открытия
Фильтр полутоновой эрозии
Фильтр полутоновой дилатации
Оператор закрытия
Оператор открытия
Оператор выделения контуров
Многомасштабный морфологический градиент
Основные шаги разработки программы моделирования.
1. Откройте приложение, разработанное в подразд. 2.5. Данное
приложение реализует все необходимые вспомогательные функ89
ции: загрузку и отображение исходного изображения, вывод на
экран изображения после фильтрации, считывание RGB-координат
пикселей анализируемого изображения. Следует разработать программный код только для морфологических операций.
2. Модифицируйте рабочее окно программы моделирования, добавив новые пункты в главное меню (рис. 2.6.1).
Рассмотрим возможный вариант реализации полутоновой эрозии.
Для проведения фильтрации необходимо выполнить следующие
действия:
– определить RGB-координаты N×N пикселeй (число определяется размером апертуры) изображения;
– рассчитать Y-компоненту для всех пикселей;
– найти минимальное значение Y из полученных N×N значений;
– записать полученное в результате фильтрации значение яркости в формируемое изображение.
Этой последовательности действий соответствует следующий
программный код:
procedure TForm1.N12Click(Sender: TObject);
var
i,j: integer;
ii, jj: byte;
R,G,B: byte;
Y, Min_Y: byte;
begin
for i:=1 to Image1.Height do
for j:=1 to Image1.Width do
begin
min_Y:=255;
Рис. 2.6.1. Вид главного меню с новыми пунктами
90
// циклы, перебирающие пиксели изображения под апертурой фильтра
for ii:=1 to 3 do
for jj:=1 to 3 do
begin
// считывание RGB координат
R:=GetRvalue(Image1.Canvas.Pixels[i+ii-2,j+jj-2]);
G:=GetGvalue(Image1.Canvas.Pixels[i+ii-2,j+jj-2]);
B:=GetBvalue(Image1.Canvas.Pixels[i+ii-2,j+jj-2]);
// расчет Y компоненты
Y:=round(0.59*G+0.3*R+0.11*B);
// определение минимального значения Y
if Y<min_Y then min_Y:=Y;
end;
//формирование результирующего изображения.
Image2.Canvas.Pixels[i,j]:=RGB(min_Y,min_Y,min_Y);
end;
end;
5. Дополните программу всеми остальными функциями, перечисленными в задании на моделирование, самостоятельно.
91
Список литературы
1. Прэтт У. Цифровая обработка изображений. М.: Мир, 1982.
Т. 1. 340 с.; Т. 2. 791 с.
2. Гонсалес Р., Вудс Р. Цифровая обработка изображений: Пер.
с англ./Под ред. П. М. Чочиа. М.: Техносфера, 2005. 1072 с.
3. Методы компьютерной обработки изображений/Под ред.
В. А. Сойфера. М.: Физматлит, 2003. 784 с.
4. Быков Р. Е., Фрайер Р., Иванов К. В., Манцветов А. А. Цифровое преобразование изображений: учеб. пособие для вузов/Под ред.
проф. Р. Е. Быкова. М.: Горячая линия – Телеком, 2003. 228 с.
5. Тимофеев Б. С. Цифровое телевидение: учеб. пособие/ГУАП.
СПб., 1998. 49 с.
6. Приоров А. Л., Хрящев В. В., Апальков И. В. Цифровая обработка изображений: учеб. пособие/ ЯрГУ. Ярославль, 2007. 235 с.
7. Фисенко В. Т., Фисенко Т. Ю. Компьютерная обработка и распознавание изображений: учеб. пособие/СПбГУ ИТМО. СПб., 2008.
192 с.
8. Курячий М. И. Цифровая обработка сигналов: учеб. пособие/
Томский межвуз. центр дистанционного образования. Томск, 2002.
175 с.
9. Дарахвелидзе П. Г., Марков Е. П. Delphi 4. СПб.: БХВ-СанктПетербург, 1999. 816 с.
92
Содержание
Предисловие..................................................................... 1. Основы теории цифровой обработки изображений............... 1.1. Краткие сведения из теории сигналов.......................... 1.1.1. Организация базиса ............................................ 1.1.2. Задание на программирование ............................. 1.2. Спектральное представление сигналов ........................ 1.2.1. Разложение сигналов по базису ............................ 1.2.2. Разложение сигналов в ряд Фурье ........................ 1.2.3. Задание на моделирование .................................. 1.3. Дискретизация и квантование аналоговых изображений............................................................................... 1.3.1. Дискретизация изображений............................... 1.3.2. Квантование ТВ-сигнала...................................... 1.3.3. Задание на моделирование................................... 1.4. Цифровая фильтрация .............................................. 1.4.1. Цифровые фильтры............................................. 1.4.2. Синтез цифровых фильтров.................................. 1.4.3. Препарирование изображений.............................. 1.4.4. Медианная фильтрация....................................... 1.4.5. Задание на моделирование................................... 1.5. Морфологическая обработка изображений ................... 1.5.1. Основные операции морфологической фильтрации.. 1.5.2. Подавление импульсных шумов........................... 1.5.3. Препарирование изображений.............................. 1.5.4. Закраска областей............................................... 1.5.5. Построение остова фигуры (скелета, каркаса)......... 1.5.6. Задание на моделирование................................... 1.6. Сжатие телевизионных сообщений.............................. 1.6.1. Методы компрессии видеоданных......................... 1.6.2. Сжатие видеоданных без потери информации......... 1.6.3. Внутрикадровая компрессия видеоданных
(стандарт JPEG).......................................................... 1.6.4. Межкадровая компрессия видеоданных (стандарт
MPEG)....................................................................... 1.6.5. Задание на моделирование................................... 2. Методические указания к разработке программ в среде
Delphi............................................................................... 2.1. Описание компонентов и команд для работы с растровыми изображениями...................................................... 3
5
5
5
11
13
13
15
17
19
19
23
26
27
27
33
39
41
42
43
43
45
46
48
49
51
52
52
53
56
62
68
70
70
93
2.2. Примеры простейших программ для работы с растровыми изображениями...................................................... 2.3. Разработка программы для спектрального представления сигналов .............................................................. 2.4. Разработка программы для дискретизации и квантования сигналов .............................................................. 2.5. Разработка программы цифровой фильтрации изображений ....................................................................... 2.6. Разработка программы морфологической фильтрации
изображений ................................................................. Список литературы............................................................ 94
72
75
80
86
89
92
Документ
Категория
Без категории
Просмотров
4
Размер файла
5 086 Кб
Теги
timofeevndd
1/--страниц
Пожаловаться на содержимое документа