imgradientxy

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

Описание

пример

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

пример

[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')

Figure contains an axes. The axes with title Directional Gradients: x-direction, Gx (left), y-direction, Gy (right), using Prewitt method contains an object of type image.

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

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')

Figure contains an axes. The axes with title Directional Gradients Gx and Gy, Using Sobel Method contains an object of type image.

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

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

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

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

Figure contains an axes. The axes with title Gradient Magnitude (Left) and Gradient Direction (Right) contains an object of type image.

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

свернуть все

Введите изображение в виде 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