imgradient

Величина градиента и направление изображения

Синтаксис

[Gmag,Gdir] = imgradient(I)
[Gmag,Gdir] = imgradient(I,method)
[Gmag,Gdir] = imgradient(Gx,Gy)

Описание

[Gmag,Gdir] = imgradient(I) возвращает величину градиента, Gmag, и направление градиента, Gdir, 2D полутонового или двухуровневого изображения I.

Опционально можно вычислить величину градиента, и направление с помощью графического процессора (требует Parallel Computing Toolbox™). Для получения дополнительной информации смотрите Обработку изображений на графическом процессоре.

пример

[Gmag,Gdir] = imgradient(I,method) возвращает величину градиента и направление с помощью заданного method.

пример

[Gmag,Gdir] = imgradient(Gx,Gy) возвращает величину градиента и направление от направленных градиентов Gx и Gy в x и направлениях y, соответственно.

Примеры

свернуть все

Считайте изображение в рабочую область.

I = imread('coins.png');

Вычислите величину градиента и направление, задав оператора градиента Prewitt.

[Gmag, Gdir] = imgradient(I,'prewitt');

Отобразите величину градиента и направление.

figure
imshowpair(Gmag, Gdir, 'montage');
title('Gradient Magnitude, Gmag (left), and Gradient Direction, Gdir (right), using Prewitt method')

Считайте изображение в рабочую область.

I = imread('coins.png');

Вычислите x-и y-directional градиенты. По умолчанию imgradientxy использует оператора градиента Sobel.

[Gx,Gy] = imgradientxy(I);

Отобразите направленные градиенты.

imshowpair(Gx,Gy,'montage')
title('Directional Gradients Gx and Gy, Using Sobel Method')

Вычислите величину градиента и направление с помощью направленных градиентов.

[Gmag,Gdir] = imgradient(Gx,Gy);

Отобразите величину градиента и направление.

imshowpair(Gmag,Gdir,'montage')
title('Gradient Magnitude (Left) and Gradient Direction (Right)')

Входные параметры

свернуть все

Введите изображение, заданное как 2D полутоновое или 2D двухуровневое изображение.

Типы данных: single | double | int8 | int32 | uint8 | uint16 | uint32 | logical

Оператор градиента, заданный как одно из следующих значений.

МетодОписание
'sobel'

Оператор градиента Sobel. Градиент пикселя является взвешенной суммой пикселей в 3х3 окружении. Для градиентов в вертикали (y) направление веса:

[ 1  2  1 
  0  0  0 
 -1 -2 -1 ]
В направлении x транспонированы веса.

'prewitt'

Оператор градиента Prewitt. Градиент пикселя является взвешенной суммой пикселей в 3х3 окружении. Для градиентов в вертикали (y) направление веса:

[ 1  1  1 
  0  0  0 
 -1 -1 -1 ]
В направлении x транспонированы веса.

'central'

Центральный градиент различия. Градиент пикселя является взвешенным различием соседних пикселей. В направлении y, dI/dy = (I(y+1) - I(y-1))/2.

'intermediate'

Промежуточный градиент различия. Градиент пикселя является различием между смежным пикселем и текущим пикселем. В направлении y, dI/dy = I(y+1) - I(y).

'roberts'

Оператор градиента Робертса. Градиент пикселя является различием между по диагонали смежными пикселями. Для градиентов в одном направлении веса:

[ 1  0 
  0 -1 ]
В ортогональном направлении веса инвертируются вдоль вертикальной оси.

Типы данных: char | string

Горизонтальный градиент, заданный как числовая матрица. Горизонталь (x) ось указывает в направлении увеличивающихся индексов столбца. Можно использовать функцию imgradientxy, чтобы вычислить Gx.

Типы данных: single | double | int8 | int32 | uint8 | uint16 | uint32

Вертикальный градиент, заданный как числовая матрица, одного размера как Gx. Вертикаль (y) ось указывает в направлении увеличивающихся индексов строки. Можно использовать функцию imgradientxy, чтобы вычислить Gy.

Типы данных: single | double | int8 | int32 | uint8 | uint16 | uint32

Выходные аргументы

свернуть все

Величина градиента, возвращенная как числовая матрица, одного размера как изображение I или направленные градиенты Gx и Gy. Gmag имеет класс double, если входное изображение или направленные градиенты не имеют класса single, в этом случае это имеет класс single.

Типы данных: double | single

Направление градиента, возвращенное как числовая матрица, одного размера как величина градиента Gmag. Gdir содержит углы в градусах в области значений [-180, 180] измеренный против часовой стрелки от положительного x - ось. (x - ось указывает в направлении увеличивающихся индексов столбца.) Gdir имеет класс double, если входное изображение, I или направленные градиенты имеют класс single, в этом случае это имеет класс single.

Типы данных: double | single

Советы

  • При применении оператора градиента на контурах изображения значения вне границ изображения приняты, чтобы равняться самому близкому значению цвета границы изображения. Это подобно опции контура 'replicate' в imfilter.

Алгоритмы

Алгоритмический подход, проявленный в imgradient для каждого из перечисленных градиентных методов, должен сначала вычислить направленные градиенты, Gx и Gy, в x и направлениях y, соответственно. Горизонталь (x) ось указывает в направлении увеличивающихся индексов столбца. Вертикаль (y) ось указывает в направлении увеличивающихся индексов строки. Величина градиента и направление затем вычисляются из их ортогональных компонентов Gx и Gy.

imgradient не нормирует вывод градиента. Если область значений выходного изображения градиента должна совпадать с областью значений входного изображения, считайте нормализацию изображения градиента, в зависимости от аргумента method используемой. Например, с ядром Sobel, коэффициентом нормализации является 1/8 для Prewitt, это - 1/6, и для Робертса это - 1/2.

Расширенные возможности

Смотрите также

| | | |

Представленный в R2012b

Для просмотра документации необходимо авторизоваться на сайте