Sobel-Kantenerkennung – matlab
Hallo, als Teil meiner Hausaufgaben. muss ich das berechnen und anzeigen der edge-Größe Bild und die
edge-Richtung, Bild von Bild balls1.tif mit Sobel Edge detection.
Nicht die Verwendung von matlab ' s edge-Funktion. Sie dürfen conv2.
Die Anzeige eines binären edge-Bild (1-Rand-pixel, 0 keine Kante) der starke Rand Pixel (oberhalb eines Schwellenwertes).
Bestimmen Sie einen Schwellenwert, entfällt die Kugel Schatten.
hier ist mein 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
hier ist mein 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
meine Fragen sind:
1. i: was ist die Richtung ? und wie kann ich ihn anzeigen?
2. gibt es einen besseren Weg, um einen Schwellenwert zu beseitigen, den ball Schatten. ich verwendet, trial-and-error....
diese sind mein Ergebnis so weit wie die die Größenordnung:
InformationsquelleAutor Gilad | 2013-01-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gemäß dem zweiten Teil Ihrer Hausaufgaben haben Sie es gelöst, d.h., Sie eliminiert den Schatten.
Zur ersten Frage: die Richtung kann auf viele verschiedene Arten verwendet. Hier ist der einfachste Weg: stellen Sie schöne Bilder mit. Ein nützlicher Grund zu betrachten ist es, wenn Sie tun nicht-maximum-Unterdrückung, aber da Sie nicht mehr manuell, es zu tun, dann gibt es nicht viel unmittelbaren Verwendung für Sie. Zur Visualisierung der Ergebnisse der Gradienten-Richtung-es ist einfach die Frage der Festlegung von Farben für jede Richtung, die Sie betrachten. Zur weiteren Vereinfachung der Visualisierung auch annehmen, reduzieren Sie die Richtungen in Schritten von 30 Grad bis zu 180, beginnend von 0. So, wenn Sie haben eine Richtung, die 35 Grad, zum Beispiel, betrachten Sie es als 30 Grad (da ist der nächste in Ihre reduzierte Liste). Als Nächstes sehen wir ein Bild und eine Visualisierung seiner Steigung Richtung unter Berücksichtigung Sobel-und die Diskretisierung Schritten von 30 Grad (schwarz wird, die 0-Grad-Richtung).
Automatisch bestimmt gut Schwellenwerte ist in der Regel nicht eine einfache Aufgabe. Zum Beispiel könnten Sie beginnen mit dem von der Otsu-Methode, und verringern oder erhöhen Sie den Wert basierend auf einem anderen Histogramm-Analyse nach das problem, das Sie lösen möchten.
Ich habe es nicht eine Skalierung, nur das, was beschrieben wurde, ist die Antwort. Alles von 0 Grad bis 29 zugewiesen wurde, um die Intensität von 0 (schwarz), von 30 bis 59 einer anderen Farbe, und so weiter. Dann zeigen Sie das.
InformationsquelleAutor mmgp
Hier die Antwort zu deiner ersten Frage :
In Sobel Edge Detection Algo. die Richtung erhalten wird, ist im Grunde die Steigung.
Gradient in der Bildverarbeitung ist definiert als die Richtung, in der Veränderung für die Intensität maximal ist. Änderung kann Erhöhung der Intensität oder Abnahme in der Intensität. Auch diese änderung ist berechnet für jedes pixel,das bedeutet, dass für jeden pixel die maximale änderung in der Intensität gemessen wird. resX (die in Ihrer Frage ist beispielsweise,SobelEdgeDetection.m) bedeutet änderungen in X-Richtung und resY definiert, Veränderung in Y-Richtung.
Sehen, finden Sie es praktisch nur Feuer dieser Befehl im Befehlsfenster von Matlab:
imshow(resX);
Versuchen Sie auch, imshow(resY)
InformationsquelleAutor Mayank Jain