6

Estoy utilizando histogramas de contexto de forma como un descriptor de características para codificar imágenes de silueta. Para ayudar con la depuración, me gustaría ver los contenedores logpolar de contexto de forma superpuestos en una imagen de silueta (los puntos de muestra tomados de la imagen de borde).Contenedores logpolares de contexto de forma de dibujo en MATLAB

Un ejemplo de lo que debe ser similar a uno de los puntos es la siguiente: Overlaid shape context logpolar bins

sé cómo mostrar los círculos (bins radiales), pero estoy teniendo dificultades en la producción de los contenedores angulares (líneas)

Dado un conjunto de ángulos, ¿cómo puedo dibujar segmentos de línea similares a los que se muestran en la imagen de ejemplo?

Respuesta

3

Hacer esto:

 
>> figure 
>> axes 
>> hold on 
>> radius = 1; 
>> theta = 0:30:360; 
>> for angle = theta 
line([0 radius * cosd(angle)], [0 radius * sind(angle)]); 
end 

produce esto:

enter image description here

+0

Gracias por la respuesta rápida! Eso es exactamente lo que buscaba :-) – Josh

4

Se puede utilizar esta función:

function scDrawPolar(samp,point,r_min,r_max,nbins_theta,nbins_r) 
%SCDRAWPOLAR draw a polar on the center point 
% point   - the center point 
% r_min   - min radius 
% r_max   - max radius 
% nbins_theta  - theta divide 
% nbins_r   - r divide 
% fig_handle  - draw the diagram on which figure 
gca; 
hold on; 

plot(samp(1,:)',samp(2,:)','r.'); 
plot(point(1),point(2),'ko'); 

r_bin_edges=logspace(log10(r_min),log10(r_max),nbins_r); 

% draw circles 
th = 0 : pi/50 : 2 * pi; 
xunit = cos(th); 
yunit = sin(th); 
for i=1:length(r_bin_edges) 
    line(xunit * r_bin_edges(i) + point(1), ... 
        yunit * r_bin_edges(i) + point(2), ... 
     'LineStyle', ':', 'Color', 'k', 'LineWidth', 1); 
end 

% draw spokes 
th = (1:nbins_theta) * 2*pi/nbins_theta; 
cs = [cos(th);zeros(1,size(th,2))]; 
sn = [sin(th);zeros(1,size(th,2))]; 
line(r_max*cs + point(1), r_max*sn + point(2),'LineStyle', ':', ... 
    'Color', 'k', 'LineWidth', 1); 

axis equal; 
axis off; 
hold off; 
end 

Ver el resultado here:

figure screenshot

Cuestiones relacionadas