J'ai écrit un code qui va suivre le bord noir montré dans l'image ci-jointe. Chaque fois que le point suivant est choisi, la figure est redessinée pour montrer la mise à jour. Ceci est fait pour que je puisse démontrer le code d'une manière animée.
Je veux faire un zoom automatique sur un point spécifique (le point central cyan entouré de carrés rouges). J'espère que la zone zoomée automatiquement suivra le point lorsqu'il trace le bord noir.
Le code suivant est écrit comme une fonction et je l'appelle sur mon script principal chaque fois que le prochain pixel de bord est détecté.
J'ai essayé de définir la plage de l'axe pour qu'elle soit une plage entourant le POI, mais je n'ai pas réussi à la faire fonctionner.
function draw_point2(BinaryImage, P, P_r, P_c)
%P is a 1x2 array for the position of the current black pixel.
%P_r is nx1 list of all the row values for the detected pixels.
%P_c is nx1 list of all the column values for the detected pixels.
cla
r = P(1,1);
c = P(1,2);
figure (100)
imshow(BinaryImage) , title('Binary image')
hold on;
plot(P_c, P_r, 'c.', 'LineWidth', 2); hold on
%Current Black Pixel
plot(c, r, 'c.', 'LineWidth', 2); hold on;
% Possible Black Pixel - Next
plot(c, r+1, 'rs', 'LineWidth', 2); hold on
plot(c, r-1, 'rs', 'LineWidth', 2); hold on
plot(c-1, r, 'rs', 'LineWidth', 2); hold on
plot(c+1, r, 'rs', 'LineWidth', 2); hold on
plot(c-1, r+1, 'rs', 'LineWidth', 2); hold on
plot(c-1, r-1, 'rs', 'LineWidth', 2); hold on
plot(c+1, r+1, 'rs', 'LineWidth', 2); hold on
plot(c+1, r-1, 'rs', 'LineWidth', 2); hold on
axis equal
truesize;
end
Gracias
EDIT1
L'image suivante montre la sortie souhaitée à côté de la sortie actuelle. (elle montre comment je voudrais que la figure se présente lorsqu'elle est dessinée. Elle montre le zoom (et le centrage) du POI. Dans un cas idéal, le POI serait également toujours centré dans la figure.