3 votes

MATLAB zoom automatique sur un point spécifique lors de la création d'une figure

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.

enter image description here

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. enter image description here

1voto

Ander Biguri Points 3358

Utilisez la fonction axis .

Vous pouvez définir les limites en utilisant axis([xmin xmax ymin ymax]) . Dans votre cas xmin serait quelque chose comme c-20 y xmax=c+20 .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X