SlideShare una empresa de Scribd logo
1 de 20
Обработка изображений
Определение угла поворота изображения страницы текста
При сканировании, то есть, при получении оцифрованного графического
изображения текста не всегда удается расположить лист бумаги, с которого
считывается изображение, строго горизонтально. Определив этот угол
отклонения можно исправить графическое изображение текста, довернув его на
необходимый угол, что исправит погрешности сканирования. Горизонтальное
расположение текста существенно упрощает и ускоряет работу алгоритма по
разбиению изображения на отдельные строки, а также подготавливает
изображение текста к распознаванию символов..
Обработка изображений
Идея алгоритма
Если смотреть на страничку с текстом издали, то строчки видятся темными
параллельными полосками, а промежутки между ними - светлыми. Направление
этих полосок ищется так.
На изображение текста накладывается сеть параллельных прямых и вычисляется
средняя величина яркости вдоль каждой прямой. Если направления прямых не
совпадают с направлением строчек, то средние значения яркостей вдоль прямых
не очень сильно разнятся, поскольку каждая прямая пересекает примерно
одинаковое число строчек и междустрочий,
.
Обработка изображений
Если же направление прямых совпадает с направлением строчек, как на рис. 3, то
средние яркости вдоль прямых, идущих по строке, будут значительно ниже
средних яркостей прямых, идущих по междустрочью
Перебрав различные значения углов наклона прямых от -90 градусов до +90
градусов с шагом, например, в один градус, и выбрав такой угол, при котором
разброс средних яркостей вдоль прямых окажется наибольшим, можно найти
направление строчек текста с точностью до одного градуса.
Более подробное описание алгоритма
Предполагается, что черно-белое изображение текста представляет собой двумерный
массив пикселей размером , где каждый пиксель имеет
определенную яркость . Яркость пикселя может изменяться в пределах от 0
до 255, то есть от черного до белого. Промежуточные значения соответствуют
различным оттенкам серого. Среднее значение яркости для всего изображения
будет
I n
m
j
i
v ,

 

m
i
n
j
j
i
s v
mn
I
v
1 1
,
1
)
(
Обработка изображений
Массив разбивается построчно на одномерных массивов длиной
Для каждого одномерного массива можно посчитать среднее значение яркости
С другой стороны, массив разбивается по столбцам на одномерных массивов ,
длиной
Точно также можно получить средние значения яркости по столбцам
Если строчки текста расположены строго горизонтально, то очевидно среди будут
попадаться такие, которые приходятся на междустрочные промежутки, и среднее
значение яркости которых существенно превышает среднее значение всего массива.
Наоборот, средние значения яркости вертикальных столбцов ,будут отличаться
значительно меньше от среднего значения , поскольку каждый столбец
пересекает как строчки, заполненные буквами, так и междустрочные промежутки
I m i
L n



n
j
j
i
i
si v
n
L
v
1
,
1
)
(
I n j
V
m



m
i
j
i
j
sj v
m
V
v
1
,
1
)
(
i
L
j
V
)
(I
vs
Обработка изображений
Исключения составляют столбцы, которые проходят по вертикальным полям
страницы справа и слева. Такие столбцы полезно было бы исключить из
рассмотрения для повышения надежности алгоритма. Например можно
исключать крайние столбцы (а также и строки), начиная от краев и продвигаясь к
середине страницы до тех пор, пока яркость столбца или строки
не достигнет уровня средней яркости . И хотя таким образом можно
потерять часть полезной информации на краях страницы, точность работы
алгоритма по определению угла наклона горизонтали только увеличится,
поскольку поля страницы будут надежно исключены из рассмотрения. Впрочем,
даже если оставить поля в рассмотрении, влияние их на конечный результат не
должно быть существенным.
Найдем среднее квадратичное отклонение (дисперсию) средней яркости каждой
строчки и столбца от среднего значения всего массива
)
( j
sj V
v )
( i
si L
v
)
(I
vs
)
(I
vs




m
i
s
i
si
L I
v
L
v
m
d
1
2
))
(
)
(
(
1




n
j
s
j
sj
V I
v
V
v
n
d
1
2
))
(
)
(
(
1
Обработка изображений
При строго горизонтальном расположении строк, очевидно,
Теперь допустим, что строчки текста расположены под некоторым углом к
горизонтали. В этом случае, если ввести в рассмотрение величину
то вовсе не обязательно эта величина окажется существенно больше нуля. Если же
угол наклона строк текста к горизонтали таков, что горизонтальные прямые
пересекают более двух строк, то эта величина может принимать даже небольшие
отрицательные значения.
Обозначим угол наклона строк текста к горизонтали за и будем искать этот угол
следующим образом. Пусть высота и ширина пикселя равна . Проведем
параллельные прямые , отстоящие друг от друга на расстояние , и
наклоненные к горизонтали на некоторый небольшой угол . А
перпендикулярно этим прямым проведем другие прямые . Значение угла
не должно быть большим, например его можно сделать таким, чтобы каждая
прямая пересекала не более трех рядов пикселей, то есть
.
v
L d
d 
v
L d
d
d 


x
)
( 0

i
l x
0

)
( 0

i
lv
0

)
( 0

i
l
n
x
tg /
2
0 

Обработка изображений
Теперь составим одномерные массивы из пикселей, пересекаемых каждой
соответствующей прямой линией , а массивы из пикселей,
пересекаемых прямыми . Очевидно, что каждый из таких массивов
будет иметь размер, отличный от и . Обозначим размеры массивов
и за и соответственно
Как только такое найдено, считаем, что прямая вышла из первого ряда пикселей
на пикселе номер .
.
i
L
)
( 0

i
l j
V
)
( 0

i
lv
n m i
L
j
V i
n j
m
На рис. показаны две прямые: одна - с
небольшим углом наклона, другая - с углом
приближающимся к вертикали.. Поиск
пересекаемых пикселей для прямой, близкой к
горизонтали (то есть той, у которой тангенс угла
наклона меньше единицы) происходит так. От
начального пиксела происходит пересчет
пикселов вправо от 1 до , где такое, что
k k
k
x
tg
k
x



0
1

k
k
Обработка изображений
После этого перебираем пиксели во втором ряду от до , где удовлетворяет
условию
На пикселе номер прямая выходит из второго ряда. И так далее, пока не дойдем
до правого края изображения .
Таким же способом определяются пересекаемые пиксели и для прямой, близкой к
вертикали, с той лишь разницей, что перебор пикселей идет не по горизонтали, а
по вертикали.
Вычислим средние значения яркостей и средние квадратичные отклонения для
пикселей, пересекаемых наклонными прямыми, как это делалось для
горизонтальных и вертикальных рядов пикселей.
k 1
k
1
k
1
0
1
2
1
2
k
x
tg
k
x




1
k



i
n
j
j
i
i
i
si v
n
L
v
1
,
1
)
( 


i
m
i
j
i
i
j
sj v
m
V
v
1
,
1
)
(




m
i
s
i
si
L I
v
L
v
m
d
1
2
0 ))
(
)
(
(
1
)
( 



n
j
s
j
sj
V I
v
V
v
n
d
1
2
0 ))
(
)
(
(
1
)
(
Обработка изображений
Вычислим также разность дисперсий в этом случае
Далее будем последовательно вычислять разность дисперсий для различных
углов наклона прямых , где .
Рассчитав эти разности для всех углов, найдем соответствующее максимальному
значению . Очевидно, что искомый угол имеет значение, близкое к
значению угла . То есть
Чтобы уточнить значение угла a можно повторить этот алгоритм на отрезке
от до с меньшим шагом.
Таким образом можно приблизиться к значению угла сколь угодно близко. На
деле допустимой погрешностью, вероятно, будет погрешность, не превышающая
угол, тангенс которого равен .
)
(
)
(
)
( 0
0
0 

 v
L d
d
d 

)
( l
d 
0

 l
l  0
90

l

l
)
( l
d  
l

1
1 
 
 l
l 


1

l
 1

l


)
,
max(
/
1 n
m
Обработка изображений
Описанный алгоритм решает поставленную задачу с точностю до направления верх-
низ. Например, если страница с текстом при сканировании была расположена
"вверх ногами" (развернута на 180 градусов), то данный алгоритм не сможет это
распознать.
Нахождение графических примитивов
Довольно часто на изображении необходимо выявлять элементы известной формы,
такие как прямые линии, окружности, эллипсы, прямоугольники, треугольники и
т.д. Для этих целей используют преобразование Хафа (Hough transform).
Преобразование Хафа позволяет находить на монохромном изображении плоские
кривые, заданные параметрически, Монохромным изображением считается
изображение, состоящее из точек двух типов: фоновых точек и точек интереса .
Задача преобразования Хафа состоит в выделении кривых, образованных
точками интереса. К монохромным изображениям можно отнести бинарные
изображения. Еще одним примером монохромных изображений, являются
градиентные изображения, полученные с помощью различных операторов
выделения краёв (края – точки резкого изменения яркости соседних пикселей)
Обработка изображений
Основная идея преобразования Хафа
Идея преобразования Хафа состоит в поиске кривых, которые проходят через
достаточное количество точек интереса. Рассмотрим семейство кривых на
плоскости, заданное параметрическим уравнением:
где – некоторая функция, – параметры семейства кривых, –
координаты на плоскости. Параметры семейства кривых образуют фазовое
пространство, каждая точка которого (конкретные значения параметров
) соответствует некоторой кривой. Из-за дискретности машинного
представления и входных данных (изображения), требуется перевести
непрерывное фазовое пространство в дискретное. Для этого в фазовом
пространстве вводится сетка, разбивающая его на ячейки, каждая из которых
соответствует набору кривых с близкими значениями параметров. Каждой ячейке
фазового пространства можно поставить в соответствие число (счетчик),
указывающее количество точек интереса на изображении, принадлежащих хотя
бы одной из кривых, соответствующих данной ячейке. Анализ счетчиков ячеек
позволяет найти на изображении кривые, на которых лежит наибольшее
количество точек интереса.
0
)
,
,
,
,
( 2
1 
y
x
a
a
a
F n

F n
a
a
a 
,
, 2
1 y
x,
n
a
a
a 
,
, 2
1
Обработка изображений
Пример: выделение прямых на изображении
Прямую на плоскости можно задать следующим образом:
где – длина перпендикуляра опущенного на прямую из начала координат, -
угол между перпендикуляром к прямой и осью . Угол изменяется в
пределах от 0 до , а - ограничено размерами входного изображения.
Таким образом функция, задающая семейство прямых, имеет вид:
Через каждую точку изображения можно
провести несколько прямых с разными и , то есть каждой точке
изображения соответствует набор точек в фазовом пространстве ,
образующий синусоиду. В свою очередь каждой точке пространства
соответствует набор точек на изображении, образующий прямую.
R
y
x 
 
 sin
cos
R 
X
0 

2 R
.
sin
cos
)
,
,
,
( R
y
x
y
x
R
F 

 


)
,
( y
x
R  )
,
( y
x
)
,
( 
R
)
,
( y
x
)
,
( 
R
Обработка изображений
Каждой точке пространства можно поставить в соответствие
счетчик, соответствующий количеству точек , лежащих на прямой.
Через одну точку можно провести
несколько прямых. Учитывая
дискретность и введенную сетку, их
будет конечное число.
Каждой прямой пространства (x, y)
соответствует точка фазового пространства
(R, θ). Прямые образуют синусоиду.
)
,
( 
R
)
,
( 0
0 
R
)
,
( y
x
0
0
0 sin
cos R
y
x 
 

Обработка изображений
Ввиду дискретности машинного представления и входных данных, требуется перевести
непрерывное фазовое пространство в дискретное. Введем сетку на пространстве
, одной ячейке которой соответствует набор прямых с близкими значениями и .
Теперь счетчик ставится в соответствие каждой ячейке сетки: ячейке
соответствует число точек, удовлетворяющих уравнению:
Размер ячеек стоит выбирать, учитывая следующие соображения. Если ячейки будут очень
большими, то за "прямую" может приниматься разрозненный набор точек. Если же
наоборот, ячейки будут слишком малы, есть вероятность, что ни одной прямой не
найдется – все счетчики будут иметь небольшое значение.
В общем случае алгоритм поиска прямой на изображении при помощи преобразования Хафа
выглядит так:
1. обнулить счетчики всех ячеек;
2. для каждой точки интереса:
3. для каждой прямой, проходящей через данную точку:
4. увеличить соответствующий счетчик;
5. выбрать ячейку с максимальным значением счетчика;
6. параметры прямой, проходящей через максимальное число точек принять равным
координатам центра выбранной ячейки в фазовом пространстве;
)
,
( 0
0 
R
]
,
[
]
,
[ 1 
  i
i
i
i R
R 

1
1,
,
sin
cos 
 




 i
i
i
i R
R
R
R
y
x 





R
Обработка изображений
Если прямых нужно найти несколько, можно отсортировать счетчики по убыванию
или рассматривать точки локальных максимумов фазового пространства..
Обработка изображений
• Выделение окружностей на изображении
•
Геометрическое место точек окружности можно представить в виде формулы:
(x - a)2 + (y - b)2 = R2,
где (a, b) – координаты центра окружности, а R – ее радиус.
т.е. формула, задающая семейство окружностей, имеет вид:
F (a, b, R, x, y) = (x - a)2 + (y - b)2 - R2 ,
Если ставится задача найти окружность заранее известного радиуса, фазовым
пространством будет плоскость параметров центра окружности (a, b). В таком
случае, алгоритм выделения окружностей полностью аналогичен алгоритму
нахождения прямых.
Если радиус окружности заранее неизвестен, то пространство параметров будет
трехмерным - (a, b, R), что существенно увеличивает вычислительную сложность
решения задачи.
Обработка изображений
Модификации преобразования Хафа
Следует помнить, что эффективность использования преобразования Хафа резко
падает при увеличении размерности фазового пространства, поэтому перед его
применением желательно минимизировать каким-либо образом количество
параметров кривой. Вообще, преобразование Хафа можно применить не только
для выделения плоской параметрической кривой, но и любой фигуры, форма
которой полностью определяется некоторым набором параметров, например
прямоугольника, треугольника, и т.д.
Вероятностное преобразование Хафа (Probabilistic Hough Transform)
заключается в том, что для нахождения объекта достаточно провести
преобразование Хафа только для части (α) точек исходного изображения, 0% ≤ α ≤
100%. То есть сначала провести выделение "контрольных" точек с изображения, и
для него провести преобразование Хафа. С большой вероятностью прямые,
найденные на уменьшенном изображении, будут соответствовать прямым на
оригинальной картинке. При этом количество контрольных точек α обладает
пороговым эффектом. Существует величина αthreshold, зависящая от каждого
конкретного случая и меняющаяся в пределах от 5 до 15%, для которой количество
вычислений значительно уменьшается. При больших α добавляется шум, при
меньших – количество шума увеличивается.
Обработка изображений
• Случайноепреобразование Хафа (Randomised Hough Transform)
заключается в следующем. Берется пара случайным образом выбранных
точек интереса исходной картинки, через них проводится прямая (через
любую пару точек можно провести одну и только одну прямую) – и
счетчик, соответствующий этой прямой, увеличивается. Выбор
производится в несколько итераций. Чем больше число итераций – тем
точнее определится нужная прямая. При этом если нужно найти не одну,
а несколько прямых, эффективен следующий подход. Сначала находим
одну прямую (по максимальному счетчику), после чего убираем точки
найденной прямой со входного изображения и проводим преобразование
с самого начала – максимальному счетчику будет соответствовать вторая
прямая, и так далее. Для поиска окружностей производится выбор не
пары, а тройки точек (через каждую тройку точек можно провести одну, и
только одну окружность).
Обработка изображений
• Иерархическоепреобразование Хафа (Hierarchical Hough Transform)
состоит в том, что исходное изображение делится на квадраты
небольшого размера, и для каждого из квадратов производится свое
преобразование как для входной картинки. Получаются детали прямых.
Далее каждые 4 соседних квадрата объединяются в один, и для него
проводится преобразование Хафа. Если детали не соединились в одну
прямую – они считаются случайным шумом, в противном случае они
снова считаются деталями и иерархическое преобразование переходит на
уровень выше.
"Размытие" фазового пространства. Ввиду возможной неточности
входных данных (изображения) часто результаты оказываются не такими,
как мы ожидаем: на исходной картинке окружность немного вытянута, а
преобразование Хафа уже не считает ее окружностью. Для этого
применяют "размытие": увеличивается не только счетчик,
соответствующий проведенной через точку кривой, но и счетчики
кривых, проведенных рядом с точкой. Другой способ размытия – сначала
точно посчитать значения всех счетчиков, а потом размыть эти значения
так, как если бы счетчик был функцией от переменных – параметров.
Обработка изображений
Использование градиента яркости изображения. Часто преобразование
Хафа применяется к изображениям полученными операторами
выделения краев (края – точки резкого изменения яркости соседних
пикселей). В таких случаях, обычно известно направление градиента
яркости изображения для каждой точки края. Можно существенно
снизить количество кривых, потенциально проходящих через данную
точку изображения, если рассматривать только кривые, касательная
которой перпендикулярна градиенту яркости изображения в
рассматриваемой точке. Таким образом, можно, например, свести задачу
выделения окружностей с неизвестным радиусом к двумерному фазовому
пространству

Más contenido relacionado

Más de MisterTom1

صيانة الاجهزه الطبية.pdf
صيانة الاجهزه الطبية.pdfصيانة الاجهزه الطبية.pdf
صيانة الاجهزه الطبية.pdfMisterTom1
 
23-24. Обработка изображений.ppt
23-24. Обработка изображений.ppt23-24. Обработка изображений.ppt
23-24. Обработка изображений.pptMisterTom1
 
Основы термодинамики живых организмов.pptx
Основы термодинамики живых организмов.pptxОсновы термодинамики живых организмов.pptx
Основы термодинамики живых организмов.pptxMisterTom1
 
основы термодинамики.pptx
основы термодинамики.pptxосновы термодинамики.pptx
основы термодинамики.pptxMisterTom1
 
probabilities1.ppt
probabilities1.pptprobabilities1.ppt
probabilities1.pptMisterTom1
 
29. Сжатие изображений.ppt
29. Сжатие изображений.ppt29. Сжатие изображений.ppt
29. Сжатие изображений.pptMisterTom1
 
19. Цветовые пространства.ppt
19. Цветовые пространства.ppt19. Цветовые пространства.ppt
19. Цветовые пространства.pptMisterTom1
 

Más de MisterTom1 (8)

صيانة الاجهزه الطبية.pdf
صيانة الاجهزه الطبية.pdfصيانة الاجهزه الطبية.pdf
صيانة الاجهزه الطبية.pdf
 
23-24. Обработка изображений.ppt
23-24. Обработка изображений.ppt23-24. Обработка изображений.ppt
23-24. Обработка изображений.ppt
 
109130.ppt
109130.ppt109130.ppt
109130.ppt
 
Основы термодинамики живых организмов.pptx
Основы термодинамики живых организмов.pptxОсновы термодинамики живых организмов.pptx
Основы термодинамики живых организмов.pptx
 
основы термодинамики.pptx
основы термодинамики.pptxосновы термодинамики.pptx
основы термодинамики.pptx
 
probabilities1.ppt
probabilities1.pptprobabilities1.ppt
probabilities1.ppt
 
29. Сжатие изображений.ppt
29. Сжатие изображений.ppt29. Сжатие изображений.ppt
29. Сжатие изображений.ppt
 
19. Цветовые пространства.ppt
19. Цветовые пространства.ppt19. Цветовые пространства.ppt
19. Цветовые пространства.ppt
 

23-24. Обработка изображений.ppt

  • 1. Обработка изображений Определение угла поворота изображения страницы текста При сканировании, то есть, при получении оцифрованного графического изображения текста не всегда удается расположить лист бумаги, с которого считывается изображение, строго горизонтально. Определив этот угол отклонения можно исправить графическое изображение текста, довернув его на необходимый угол, что исправит погрешности сканирования. Горизонтальное расположение текста существенно упрощает и ускоряет работу алгоритма по разбиению изображения на отдельные строки, а также подготавливает изображение текста к распознаванию символов..
  • 2. Обработка изображений Идея алгоритма Если смотреть на страничку с текстом издали, то строчки видятся темными параллельными полосками, а промежутки между ними - светлыми. Направление этих полосок ищется так. На изображение текста накладывается сеть параллельных прямых и вычисляется средняя величина яркости вдоль каждой прямой. Если направления прямых не совпадают с направлением строчек, то средние значения яркостей вдоль прямых не очень сильно разнятся, поскольку каждая прямая пересекает примерно одинаковое число строчек и междустрочий, .
  • 3. Обработка изображений Если же направление прямых совпадает с направлением строчек, как на рис. 3, то средние яркости вдоль прямых, идущих по строке, будут значительно ниже средних яркостей прямых, идущих по междустрочью Перебрав различные значения углов наклона прямых от -90 градусов до +90 градусов с шагом, например, в один градус, и выбрав такой угол, при котором разброс средних яркостей вдоль прямых окажется наибольшим, можно найти направление строчек текста с точностью до одного градуса. Более подробное описание алгоритма Предполагается, что черно-белое изображение текста представляет собой двумерный массив пикселей размером , где каждый пиксель имеет определенную яркость . Яркость пикселя может изменяться в пределах от 0 до 255, то есть от черного до белого. Промежуточные значения соответствуют различным оттенкам серого. Среднее значение яркости для всего изображения будет I n m j i v ,     m i n j j i s v mn I v 1 1 , 1 ) (
  • 4. Обработка изображений Массив разбивается построчно на одномерных массивов длиной Для каждого одномерного массива можно посчитать среднее значение яркости С другой стороны, массив разбивается по столбцам на одномерных массивов , длиной Точно также можно получить средние значения яркости по столбцам Если строчки текста расположены строго горизонтально, то очевидно среди будут попадаться такие, которые приходятся на междустрочные промежутки, и среднее значение яркости которых существенно превышает среднее значение всего массива. Наоборот, средние значения яркости вертикальных столбцов ,будут отличаться значительно меньше от среднего значения , поскольку каждый столбец пересекает как строчки, заполненные буквами, так и междустрочные промежутки I m i L n    n j j i i si v n L v 1 , 1 ) ( I n j V m    m i j i j sj v m V v 1 , 1 ) ( i L j V ) (I vs
  • 5. Обработка изображений Исключения составляют столбцы, которые проходят по вертикальным полям страницы справа и слева. Такие столбцы полезно было бы исключить из рассмотрения для повышения надежности алгоритма. Например можно исключать крайние столбцы (а также и строки), начиная от краев и продвигаясь к середине страницы до тех пор, пока яркость столбца или строки не достигнет уровня средней яркости . И хотя таким образом можно потерять часть полезной информации на краях страницы, точность работы алгоритма по определению угла наклона горизонтали только увеличится, поскольку поля страницы будут надежно исключены из рассмотрения. Впрочем, даже если оставить поля в рассмотрении, влияние их на конечный результат не должно быть существенным. Найдем среднее квадратичное отклонение (дисперсию) средней яркости каждой строчки и столбца от среднего значения всего массива ) ( j sj V v ) ( i si L v ) (I vs ) (I vs     m i s i si L I v L v m d 1 2 )) ( ) ( ( 1     n j s j sj V I v V v n d 1 2 )) ( ) ( ( 1
  • 6. Обработка изображений При строго горизонтальном расположении строк, очевидно, Теперь допустим, что строчки текста расположены под некоторым углом к горизонтали. В этом случае, если ввести в рассмотрение величину то вовсе не обязательно эта величина окажется существенно больше нуля. Если же угол наклона строк текста к горизонтали таков, что горизонтальные прямые пересекают более двух строк, то эта величина может принимать даже небольшие отрицательные значения. Обозначим угол наклона строк текста к горизонтали за и будем искать этот угол следующим образом. Пусть высота и ширина пикселя равна . Проведем параллельные прямые , отстоящие друг от друга на расстояние , и наклоненные к горизонтали на некоторый небольшой угол . А перпендикулярно этим прямым проведем другие прямые . Значение угла не должно быть большим, например его можно сделать таким, чтобы каждая прямая пересекала не более трех рядов пикселей, то есть . v L d d  v L d d d    x ) ( 0  i l x 0  ) ( 0  i lv 0  ) ( 0  i l n x tg / 2 0  
  • 7. Обработка изображений Теперь составим одномерные массивы из пикселей, пересекаемых каждой соответствующей прямой линией , а массивы из пикселей, пересекаемых прямыми . Очевидно, что каждый из таких массивов будет иметь размер, отличный от и . Обозначим размеры массивов и за и соответственно Как только такое найдено, считаем, что прямая вышла из первого ряда пикселей на пикселе номер . . i L ) ( 0  i l j V ) ( 0  i lv n m i L j V i n j m На рис. показаны две прямые: одна - с небольшим углом наклона, другая - с углом приближающимся к вертикали.. Поиск пересекаемых пикселей для прямой, близкой к горизонтали (то есть той, у которой тангенс угла наклона меньше единицы) происходит так. От начального пиксела происходит пересчет пикселов вправо от 1 до , где такое, что k k k x tg k x    0 1  k k
  • 8. Обработка изображений После этого перебираем пиксели во втором ряду от до , где удовлетворяет условию На пикселе номер прямая выходит из второго ряда. И так далее, пока не дойдем до правого края изображения . Таким же способом определяются пересекаемые пиксели и для прямой, близкой к вертикали, с той лишь разницей, что перебор пикселей идет не по горизонтали, а по вертикали. Вычислим средние значения яркостей и средние квадратичные отклонения для пикселей, пересекаемых наклонными прямыми, как это делалось для горизонтальных и вертикальных рядов пикселей. k 1 k 1 k 1 0 1 2 1 2 k x tg k x     1 k    i n j j i i i si v n L v 1 , 1 ) (    i m i j i i j sj v m V v 1 , 1 ) (     m i s i si L I v L v m d 1 2 0 )) ( ) ( ( 1 ) (     n j s j sj V I v V v n d 1 2 0 )) ( ) ( ( 1 ) (
  • 9. Обработка изображений Вычислим также разность дисперсий в этом случае Далее будем последовательно вычислять разность дисперсий для различных углов наклона прямых , где . Рассчитав эти разности для всех углов, найдем соответствующее максимальному значению . Очевидно, что искомый угол имеет значение, близкое к значению угла . То есть Чтобы уточнить значение угла a можно повторить этот алгоритм на отрезке от до с меньшим шагом. Таким образом можно приблизиться к значению угла сколь угодно близко. На деле допустимой погрешностью, вероятно, будет погрешность, не превышающая угол, тангенс которого равен . ) ( ) ( ) ( 0 0 0    v L d d d   ) ( l d  0   l l  0 90  l  l ) ( l d   l  1 1     l l    1  l  1  l   ) , max( / 1 n m
  • 10. Обработка изображений Описанный алгоритм решает поставленную задачу с точностю до направления верх- низ. Например, если страница с текстом при сканировании была расположена "вверх ногами" (развернута на 180 градусов), то данный алгоритм не сможет это распознать. Нахождение графических примитивов Довольно часто на изображении необходимо выявлять элементы известной формы, такие как прямые линии, окружности, эллипсы, прямоугольники, треугольники и т.д. Для этих целей используют преобразование Хафа (Hough transform). Преобразование Хафа позволяет находить на монохромном изображении плоские кривые, заданные параметрически, Монохромным изображением считается изображение, состоящее из точек двух типов: фоновых точек и точек интереса . Задача преобразования Хафа состоит в выделении кривых, образованных точками интереса. К монохромным изображениям можно отнести бинарные изображения. Еще одним примером монохромных изображений, являются градиентные изображения, полученные с помощью различных операторов выделения краёв (края – точки резкого изменения яркости соседних пикселей)
  • 11. Обработка изображений Основная идея преобразования Хафа Идея преобразования Хафа состоит в поиске кривых, которые проходят через достаточное количество точек интереса. Рассмотрим семейство кривых на плоскости, заданное параметрическим уравнением: где – некоторая функция, – параметры семейства кривых, – координаты на плоскости. Параметры семейства кривых образуют фазовое пространство, каждая точка которого (конкретные значения параметров ) соответствует некоторой кривой. Из-за дискретности машинного представления и входных данных (изображения), требуется перевести непрерывное фазовое пространство в дискретное. Для этого в фазовом пространстве вводится сетка, разбивающая его на ячейки, каждая из которых соответствует набору кривых с близкими значениями параметров. Каждой ячейке фазового пространства можно поставить в соответствие число (счетчик), указывающее количество точек интереса на изображении, принадлежащих хотя бы одной из кривых, соответствующих данной ячейке. Анализ счетчиков ячеек позволяет найти на изображении кривые, на которых лежит наибольшее количество точек интереса. 0 ) , , , , ( 2 1  y x a a a F n  F n a a a  , , 2 1 y x, n a a a  , , 2 1
  • 12. Обработка изображений Пример: выделение прямых на изображении Прямую на плоскости можно задать следующим образом: где – длина перпендикуляра опущенного на прямую из начала координат, - угол между перпендикуляром к прямой и осью . Угол изменяется в пределах от 0 до , а - ограничено размерами входного изображения. Таким образом функция, задающая семейство прямых, имеет вид: Через каждую точку изображения можно провести несколько прямых с разными и , то есть каждой точке изображения соответствует набор точек в фазовом пространстве , образующий синусоиду. В свою очередь каждой точке пространства соответствует набор точек на изображении, образующий прямую. R y x     sin cos R  X 0   2 R . sin cos ) , , , ( R y x y x R F       ) , ( y x R  ) , ( y x ) , (  R ) , ( y x ) , (  R
  • 13. Обработка изображений Каждой точке пространства можно поставить в соответствие счетчик, соответствующий количеству точек , лежащих на прямой. Через одну точку можно провести несколько прямых. Учитывая дискретность и введенную сетку, их будет конечное число. Каждой прямой пространства (x, y) соответствует точка фазового пространства (R, θ). Прямые образуют синусоиду. ) , (  R ) , ( 0 0  R ) , ( y x 0 0 0 sin cos R y x    
  • 14. Обработка изображений Ввиду дискретности машинного представления и входных данных, требуется перевести непрерывное фазовое пространство в дискретное. Введем сетку на пространстве , одной ячейке которой соответствует набор прямых с близкими значениями и . Теперь счетчик ставится в соответствие каждой ячейке сетки: ячейке соответствует число точек, удовлетворяющих уравнению: Размер ячеек стоит выбирать, учитывая следующие соображения. Если ячейки будут очень большими, то за "прямую" может приниматься разрозненный набор точек. Если же наоборот, ячейки будут слишком малы, есть вероятность, что ни одной прямой не найдется – все счетчики будут иметь небольшое значение. В общем случае алгоритм поиска прямой на изображении при помощи преобразования Хафа выглядит так: 1. обнулить счетчики всех ячеек; 2. для каждой точки интереса: 3. для каждой прямой, проходящей через данную точку: 4. увеличить соответствующий счетчик; 5. выбрать ячейку с максимальным значением счетчика; 6. параметры прямой, проходящей через максимальное число точек принять равным координатам центра выбранной ячейки в фазовом пространстве; ) , ( 0 0  R ] , [ ] , [ 1    i i i i R R   1 1, , sin cos         i i i i R R R R y x       R
  • 15. Обработка изображений Если прямых нужно найти несколько, можно отсортировать счетчики по убыванию или рассматривать точки локальных максимумов фазового пространства..
  • 16. Обработка изображений • Выделение окружностей на изображении • Геометрическое место точек окружности можно представить в виде формулы: (x - a)2 + (y - b)2 = R2, где (a, b) – координаты центра окружности, а R – ее радиус. т.е. формула, задающая семейство окружностей, имеет вид: F (a, b, R, x, y) = (x - a)2 + (y - b)2 - R2 , Если ставится задача найти окружность заранее известного радиуса, фазовым пространством будет плоскость параметров центра окружности (a, b). В таком случае, алгоритм выделения окружностей полностью аналогичен алгоритму нахождения прямых. Если радиус окружности заранее неизвестен, то пространство параметров будет трехмерным - (a, b, R), что существенно увеличивает вычислительную сложность решения задачи.
  • 17. Обработка изображений Модификации преобразования Хафа Следует помнить, что эффективность использования преобразования Хафа резко падает при увеличении размерности фазового пространства, поэтому перед его применением желательно минимизировать каким-либо образом количество параметров кривой. Вообще, преобразование Хафа можно применить не только для выделения плоской параметрической кривой, но и любой фигуры, форма которой полностью определяется некоторым набором параметров, например прямоугольника, треугольника, и т.д. Вероятностное преобразование Хафа (Probabilistic Hough Transform) заключается в том, что для нахождения объекта достаточно провести преобразование Хафа только для части (α) точек исходного изображения, 0% ≤ α ≤ 100%. То есть сначала провести выделение "контрольных" точек с изображения, и для него провести преобразование Хафа. С большой вероятностью прямые, найденные на уменьшенном изображении, будут соответствовать прямым на оригинальной картинке. При этом количество контрольных точек α обладает пороговым эффектом. Существует величина αthreshold, зависящая от каждого конкретного случая и меняющаяся в пределах от 5 до 15%, для которой количество вычислений значительно уменьшается. При больших α добавляется шум, при меньших – количество шума увеличивается.
  • 18. Обработка изображений • Случайноепреобразование Хафа (Randomised Hough Transform) заключается в следующем. Берется пара случайным образом выбранных точек интереса исходной картинки, через них проводится прямая (через любую пару точек можно провести одну и только одну прямую) – и счетчик, соответствующий этой прямой, увеличивается. Выбор производится в несколько итераций. Чем больше число итераций – тем точнее определится нужная прямая. При этом если нужно найти не одну, а несколько прямых, эффективен следующий подход. Сначала находим одну прямую (по максимальному счетчику), после чего убираем точки найденной прямой со входного изображения и проводим преобразование с самого начала – максимальному счетчику будет соответствовать вторая прямая, и так далее. Для поиска окружностей производится выбор не пары, а тройки точек (через каждую тройку точек можно провести одну, и только одну окружность).
  • 19. Обработка изображений • Иерархическоепреобразование Хафа (Hierarchical Hough Transform) состоит в том, что исходное изображение делится на квадраты небольшого размера, и для каждого из квадратов производится свое преобразование как для входной картинки. Получаются детали прямых. Далее каждые 4 соседних квадрата объединяются в один, и для него проводится преобразование Хафа. Если детали не соединились в одну прямую – они считаются случайным шумом, в противном случае они снова считаются деталями и иерархическое преобразование переходит на уровень выше. "Размытие" фазового пространства. Ввиду возможной неточности входных данных (изображения) часто результаты оказываются не такими, как мы ожидаем: на исходной картинке окружность немного вытянута, а преобразование Хафа уже не считает ее окружностью. Для этого применяют "размытие": увеличивается не только счетчик, соответствующий проведенной через точку кривой, но и счетчики кривых, проведенных рядом с точкой. Другой способ размытия – сначала точно посчитать значения всех счетчиков, а потом размыть эти значения так, как если бы счетчик был функцией от переменных – параметров.
  • 20. Обработка изображений Использование градиента яркости изображения. Часто преобразование Хафа применяется к изображениям полученными операторами выделения краев (края – точки резкого изменения яркости соседних пикселей). В таких случаях, обычно известно направление градиента яркости изображения для каждой точки края. Можно существенно снизить количество кривых, потенциально проходящих через данную точку изображения, если рассматривать только кривые, касательная которой перпендикулярна градиенту яркости изображения в рассматриваемой точке. Таким образом, можно, например, свести задачу выделения окружностей с неизвестным радиусом к двумерному фазовому пространству