imgradientxy

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

Синтаксис

[Gx,Gy] = imgradientxy(I)
[Gx,Gy] = imgradientxy(I,method)

Описание

пример

[Gx,Gy] = imgradientxy(I) возвращает направленные градиенты, Gx и Gy полутонового или двухуровневого изображения I.

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

пример

[Gx,Gy] = imgradientxy(I,method) возвращает направленные градиенты с помощью заданного method.

Примеры

свернуть все

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

I = imread('coins.png');

Вычислите x-и y-directional градиенты с помощью оператора градиента Prewitt.

[Gx, Gy] = imgradientxy(I,'prewitt');

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

figure
imshowpair(Gx, Gy, 'montage');
title('Directional Gradients: x-direction, Gx (left), y-direction, Gy (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).

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

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

свернуть все

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

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

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

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

Советы

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

Алгоритмы

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

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

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

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

| | | |

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