Berechnen Sie das Gradientenvektorfeld eines Bildes
Ich möchte ein Bild einlesen - ein Bild eines Kreises, und das Gradientenvektorfeld dieses Bildes berechnen (dh Vektoren, die gleichmäßig und normal zum Kreis zeigen). Meine Logik versagt mir ein bisschen, aber ich habe:
<code>clear all; im = im2double(imread('littlecircle.png')); im = double(im); [nr,nc]=size(im); [dx,dy] = gradient(im); [x y] = meshgrid(1:nc,1:nr); u = x; v = y; quiver(x,y,u,v) </code>
Wenn ich einfach das obige mache, erhalte ich ein Vektorfeld, aber es ist einfach der Gradient eines leeren Netzes (dh nur ein Vektorfeld des Gradienten y = x). Was ich eigentlich möchte, ist zu verwenden
<code>[dx,dy] = gradient(im); </code>
um die Ränder des Kreises im Bild zu erkennen und dann das Gradientenvektorfeld aufgrund des Kreises im Bild zu berechnen. Wenn Sie u = x und v = y zuweisen, erhalte ich natürlich nur das Vektorfeld einer geraden Linie. Im Grunde möchte ich den Gradienten des Bildes in die Vektoren u und v einbetten. Wie mache ich das?