Фильтр Prewitt в Matlab - PullRequest
       1

Фильтр Prewitt в Matlab

0 голосов
/ 28 марта 2012

Я пытаюсь получить градиент изображения, используя фильтр Prewitt. Можете ли вы сказать мне, если этот подход является правильным?

I = imread ('image.jpg') Gx = [-1 0 1; -1 0 1; -1 0 1]; Гр = [1 1 1; 0 0 0; 1 1 1]; D = conv2 (conv2 (I, Gx), Гр) imshow (D)

Это правильно? Есть ли более чистый способ сделать это (не нужно вызывать conv2 дважды)? Является ли conv2 (I, Gx) таким же, как conv2 (Gx, I)? (т.е. коммутативно?)

Спасибо.

1 Ответ

0 голосов
/ 28 марта 2012

Судя по моей википедии, похоже, что вы должны сделать следующее:

I = imread('image.jpg')
Gx = [-1 0 1; -1 0 1; -1 0 1];
Gy = [1 1 1; 0 0 0; -1 -1 -1];

A = sqrt( conv2(I,Gx).^2 + conv2(I,Gy).^2 );
imshow(A);

Ссылка на статью в Википедии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...