0

J'utilise le code suivant pour masquer l'image en utilisant le masque de sobel.trouver le gradient en utilisant l'opérateur de masque de sobel dans matlab

for i=1:size(C,1)-2 
    for j=1:size(C,2)-2 
     %Sobel mask for x-direction: 
     Gx=((2*C(i+2,j+1)+C(i+2,j)+C(i+2,j+2))-(2*C(i,j+1)+C(i,j)+C(i,j+2))); 
     %Sobel mask for y-direction: 
     Gy=((2*C(i+1,j+2)+C(i,j+2)+C(i+2,j+2))-(2*C(i+1,j)+C(i,j)+C(i+2,j))); 

     %The gradient of the image 
     %B(i,j)=abs(Gx)+abs(Gy); 
     B(i,j)=sqrt(Gx.^2+Gy.^2); 
     direction = atan(Gy./Gx) 

    end 
end 

Ma question est que, parfois, la valeur de direction gradient donne comme "NaN", comment l'éviter?

Deuxièmement, comment quantifier la direction du gradient dans huit zones et trouver le vecteur de caractéristiques pour l'image? S'il vous plaît, quelqu'un m'aide.

+0

Pourquoi utilisez-vous pas BW = bord (I, 'Sobel') ?? C'est si simple. Deuxièmement, vous voulez implémenter l'algorithme HOG? –

+0

en utilisant la technique sobel je vais obtenir la direction. en utilisant ce que je veux enfin vecteur de fonctionnalité, puis comment puis-je obtenir –

Répondre

0

Voici la mise en œuvre:

clc;clear;close; 

% Read the Image 
image=imread('girl.png'); 
f=rgb2gray(image); 

% Initializations 
Gx=zeros(size(f,1),size(f,2)); 
Gy=zeros(size(f,1),size(f,2)); 
Theta=zeros(size(f,1),size(f,2)); 
Edges=zeros(size(f,1),size(f,2)); 

% Sobel Filtering 
for x=2:size(f,1)-2 
    for y=2:size(f,2)-2 

    Gy(x,y)= (f(x-1,y+1) + 2*f(x,y+1) + f(x+1,y+1))... 
     -(f(x-1,y-1) + 2*f(x,y-1) + f(x+1,y-1)); 

    Gx(x,y)= (f(x+1,y-1) + 2*f(x+1,y) + f(x+1,y+1))... 
     -(f(x-1,y-1) + 2*f(x-1,y) + f(x-1,y+1)); 

    Theta(x,y)= atan(Gx(x,y)/Gy(x,y)); % Direction 

    Edges(x,y)=sqrt(Gx(x,y)^2 + Gy(x,y)^2); 

    end 
end 

Résultats:

enter image description here

+0

C'est OK merci pour cela.Mais je veux vecteur de fonctionnalité en utilisant la direction et la magnitude de sorte que je peux l'utiliser pour l'apprentissage supervisé.S'il vous plaît me dire comment obtenir le vecteur de fonctionnalité? –

+0

Ce dont vous avez besoin est un descripteur HOG, vous devez créer un histogramme des orientations pour chaque cellule et le transmettre à un réseau neuronal multicouche pour l'entraînement. Lisez ceci http://users.utcluj.ro/~raluca/prs/prs_lab_05e.pdf pour comprendre les étapes !! –