Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Crear herramienta de medición de ángulo utilizando objetos de ROI

En este ejemplo se muestra cómo crear una herramienta de medición de ángulo mediante herramientas modulares y objetos de ROI. En el ejemplo se muestra una imagen en una ventana de figura y se superpone una sencilla herramienta de medición de ángulo sobre la imagen. Al mover las líneas en la herramienta de medición de ángulo, la función calcula el ángulo formado por las dos líneas y muestra el ángulo en un título.

Cree una función que acepte una imagen como argumento y muestre una herramienta de medición de ángulo sobre la imagen en una ventana de figura. Este código incluye una segunda función utilizada como función de devolución de llamada que calcula el ángulo y muestra el ángulo en la figura.

function my_angle_measurement_tool(im) % Create figure, setting up properties figure('Name','My Angle Measurement Tool',...       'NumberTitle','off',...       'IntegerHandle','off');  % Display image in the axes % Display image imshow(im)  % Get size of image. m = size(im,1); n = size(im,2);  % Get center point of image for initial positioning. midy = ceil(m/2); midx = ceil(n/2);  % Position first point vertically above the middle. firstx = midx; firsty = midy - ceil(m/4); lastx = midx + ceil(n/4); lasty = midy;  % Create a two-segment right-angle polyline centered in the image. h = impoly(gca,[firstx,firsty;midx,midy;lastx,lasty],'Closed',false); api = iptgetapi(h); initial_position = api.getPosition()  % Display initial position updateAngle(initial_position)  % set up callback to update angle in title. api.addNewPositionCallback(@updateAngle); fcn = makeConstrainToRectFcn('impoly',get(gca,'XLim'),get(gca,'YLim')); api.setPositionConstraintFcn(fcn); %  % Callback function that calculates the angle and updates the title. % Function receives an array containing the current x,y position of % the three vertices. function updateAngle(p) % Create two vectors from the vertices. % v1 = [x1 - x2, y1 - y2] % v2 = [x3 - x2, Y3 - y2] v1 = [p(1,1)-p(2,1), p(1,2)-p(2,2)]; v2 = [p(3,1)-p(2,1), p(3,2)-p(2,2)]; % Find the angle. theta = acos(dot(v1,v2)/(norm(v1)*norm(v2))); % Convert it to degrees. angle_degrees = (theta * (180/pi)); % Display the angle in the title of the figure. title(sprintf('(%1.0f) degrees',angle_degrees))

Lea la imagen en el espacio de trabajo.

I = imread('gantrycrane.png'); 

Abra la herramienta de medición de ángulo, especificando la imagen como argumento. La herramienta abre una ventana de figura, que muestra la imagen con la herramienta de medida de ángulo centrada sobre la imagen en ángulo recto. Mueva el puntero sobre cualquiera de los vértices de la herramienta para medir cualquier ángulo de la imagen. En la figura siguiente, la herramienta mide un ángulo de la imagen. Observe el tamaño del ángulo que se muestra en el título de la figura.

my_angle_measurement_tool(I);

Temas relacionados