Фильтр Собеля: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Nikkou (обсуждение | вклад) |
Nikkou (обсуждение | вклад) |
||
Строка 6: | Строка 6: | ||
=== Математическое описание алгоритма === | === Математическое описание алгоритма === | ||
+ | Исходные данные: | ||
+ | |||
+ | * изображение <math>A^{N\cdot M}</math> | ||
+ | |||
+ | Вычисляемые данные: | ||
+ | |||
+ | * матрица аппроксимации модуля градиента <math>G^{N\cdot M}</math> | ||
+ | |||
+ | * матрица аппроксимации направления градиента <math>\Theta^{N\cdot M}</math> | ||
+ | |||
+ | Это матрицы такого же размера, как исходное изображение, так как параметры градиента вычисляются для каждого пикселя изображения. | ||
+ | |||
+ | Промежуточные горизонтальные и вертикальные производные вычисляются с помощью следующих двумерных сверток: | ||
+ | |||
+ | <math> | ||
+ | \mathbf{G}_x = \begin{bmatrix} | ||
+ | +1 & 0 & -1 \\ | ||
+ | +2 & 0 & -2 \\ | ||
+ | +1 & 0 & -1 | ||
+ | \end{bmatrix} * \mathbf{A} | ||
+ | ,\ | ||
+ | \mathbf{G}_y = \begin{bmatrix} | ||
+ | +1 & +2 & +1\\ | ||
+ | 0 & 0 & 0 \\ | ||
+ | -1 & -2 & -1 | ||
+ | \end{bmatrix} * \mathbf{A} | ||
+ | </math> | ||
+ | |||
+ | Аппроксимации для модуля и направления градиента можно получить, скомбинировав эти производные: | ||
+ | |||
+ | <math>\mathbf{G} = \sqrt{ {\mathbf{G}_x}^2 + {\mathbf{G}_y}^2 }</math> | ||
+ | |||
+ | <math>\mathbf{\Theta} = \operatorname{atan}\left({ \mathbf{G}_y \over \mathbf{G}_x }\right)</math> | ||
+ | |||
=== Вычислительное ядро алгоритма === | === Вычислительное ядро алгоритма === | ||
=== Макроструктура алгоритма === | === Макроструктура алгоритма === |
Версия 20:40, 17 октября 2017
Содержание
- 1 Свойства и структура алгоритма
- 1.1 Общее описание алгоритма
- 1.2 Математическое описание алгоритма
- 1.3 Вычислительное ядро алгоритма
- 1.4 Макроструктура алгоритма
- 1.5 Схема реализации последовательного алгоритма
- 1.6 Последовательная сложность алгоритма
- 1.7 Информационный граф
- 1.8 Ресурс параллелизма алгоритма
- 1.9 Входные и выходные данные алгоритма
- 1.10 Свойства алгоритма
- 2 Программная реализация алгоритма
- 2.1 Особенности реализации последовательного алгоритма
- 2.2 Локальность данных и вычислений
- 2.3 Возможные способы и особенности параллельной реализации алгоритма
- 2.4 Масштабируемость алгоритма и его реализации
- 2.5 Динамические характеристики и эффективность реализации алгоритма
- 2.6 Выводы для классов архитектур
- 2.7 Существующие реализации алгоритма
- 3 Литература
1 Свойства и структура алгоритма
1.1 Общее описание алгоритма
Фильтр Собеля - дискретный дифференциальный оператор, который используется для приближения градиента яркости изображения. Он часто используется в алгоритмах выделения границ при обработке изображений. Фильтр Собеля был предложен Ирвином Собелем и Гэри Фелдманом в лаборатории искусственного интеллекта Стэнфорда в 1968.
Фильтр Собеля легко вычислять, так как он основан на свертках изображения с небольшими ядрами. Из-за этого он аппроксимирует градиент со значительной погрешностью, но качество аппроксимации оказывается достаточным для многих практических приложений.
1.2 Математическое описание алгоритма
Исходные данные:
- изображение [math]A^{N\cdot M}[/math]
Вычисляемые данные:
- матрица аппроксимации модуля градиента [math]G^{N\cdot M}[/math]
- матрица аппроксимации направления градиента [math]\Theta^{N\cdot M}[/math]
Это матрицы такого же размера, как исходное изображение, так как параметры градиента вычисляются для каждого пикселя изображения.
Промежуточные горизонтальные и вертикальные производные вычисляются с помощью следующих двумерных сверток:
[math] \mathbf{G}_x = \begin{bmatrix} +1 & 0 & -1 \\ +2 & 0 & -2 \\ +1 & 0 & -1 \end{bmatrix} * \mathbf{A} ,\ \mathbf{G}_y = \begin{bmatrix} +1 & +2 & +1\\ 0 & 0 & 0 \\ -1 & -2 & -1 \end{bmatrix} * \mathbf{A} [/math]
Аппроксимации для модуля и направления градиента можно получить, скомбинировав эти производные:
[math]\mathbf{G} = \sqrt{ {\mathbf{G}_x}^2 + {\mathbf{G}_y}^2 }[/math]
[math]\mathbf{\Theta} = \operatorname{atan}\left({ \mathbf{G}_y \over \mathbf{G}_x }\right)[/math]