Sobel détection de contours – matlab
bonjour dans le cadre de mes Devoirs. j'ai besoin de calculer et d'afficher le bord de l'ampleur de l'image et de la
de bord de la direction de l'image de l'image balls1.tif, à l'aide de Sobel détection de Bord.
Ne pas utiliser matlab de bord de la fonction. Vous pouvez utiliser conv2.
Affichage binaire bord de l'image (1 bord de pixel, 0 pas de bord) de forte pixels de contour (au-dessus du seuil).
Déterminer un seuil qui élimine le bal des ombres.
voici ma main.m
addpath(fullfile(pwd,'TOOLBOX'));
addpath(fullfile(pwd,'images'));
%Sobel Edge Detection
Image = readImage('balls1.tif');
showImage(Image);
message = sprintf('Sobel Edge Detection');
sobelEdgeDetection(Image);
uiwait(msgbox(message,'Done', 'help'));
close all
voici mon SobeEdgeDetection.m
function [ output_args ] = SobelEdgeDetection( Image )
maskX = [-1 0 1 ; -2 0 2; -1 0 1];
maskY = [-1 -2 -1 ; 0 0 0 ; 1 2 1] ;
resX = conv2(Image, maskX);
resY = conv2(Image, maskY);
magnitude = sqrt(resX.^2 + resY.^2);
direction = atan(resY/resX);
thresh = magnitude < 101;
magnitude(thresh) = 0;
showImage(magnitude);
end
mes questions sont les suivantes:
1. i qu'est-ce que le sens ? et comment puis-je l'afficher?
2. est-il une meilleure façon d'obtenir un seuil afin d'éliminer le bal des ombres. j'ai utilisé de l'essai et de l'erreur....
ce sont mes entraîner, dans la mesure montrant l'ampleur:
OriginalL'auteur Gilad | 2013-01-16
Vous devez vous connecter pour publier un commentaire.
Selon la deuxième partie de votre travail que vous l'avez résolu, c'est à dire, vous avez éliminé les ombres.
Pour la première question: la direction peut être utilisé de nombreuses façons différentes. Ici est la façon la plus simple: faire de jolies photos avec elle. Un plus utile de raison de considérer que c'est quand que vous faites de la non-suppression maximale, mais puisque vous n'êtes pas manuellement le faire, il n'y a pas beaucoup d'utilisation immédiate. Pour visualiser les résultats de la direction du gradient, il est tout simplement question de l'établissement de couleurs pour chaque orientation que l'on considère. Afin de simplifier la visualisation également supposons que vous réduire les directions à des incréments de 30 degrés jusqu'à 180, en partant de 0. De cette façon, si vous avez un sens de 35 degrés, par exemple, vous considérez que c'est que de 30 degrés (puisqu'il est le plus proche dans votre liste réduite). Ensuite, nous voyons une image et une visualisation de sa direction de gradient considérant Sobel et la discrétisation de étapes de 30 degrés (noir indique 0 degrés).
Déterminer automatiquement la bonne seuils n'est généralement pas une tâche facile. Par exemple, vous pourriez commencer avec celui fourni par la méthode d'Otsu, et de la diminution ou de l'augmentation de sa valeur basée sur une autre analyse de l'histogramme en fonction du problème que vous essayez de résoudre.
Je ne fais pas de mise à l'échelle, seulement ce qui a été décrit dans la réponse. Quelque chose de 0 ° à 29 ans a été attribué à l'intensité de 0 (noir), de 30 à 59 à certaines autres couleurs, et ainsi de suite. Alors vous montrer que.
OriginalL'auteur mmgp
Voici la réponse à votre première question :
Dans Sobel Détection De Bord Algo. la direction obtenue est fondamentalement le dégradé.
Dégradé dans le traitement de l'image est défini comme la direction dans laquelle le changement de l'intensité est maximale. Le changement peut être une augmentation de l'intensité ou de la diminution de l'intensité. Aussi, ce changement est calculée pour chaque pixel,ce qui signifie que pour chaque pixel maximum le changement dans l'intensité est mesurée. resX (dans votre question, l'exemple de SobelEdgeDetection.m) signifie des changements dans la direction X et resY définit changement dans la direction Y.
Voir pratiquement, il suffit de le lancer cette commande dans la fenêtre de commande de Matlab:
imshow(resX);
Aussi essayer, imshow(resY)
OriginalL'auteur Mayank Jain