Drawing shape context logpolar bins in MATLAB

后端 未结 2 685
夕颜
夕颜 2020-12-31 23:25

I am using shape context histograms as a feature descriptor to encode silhouette images. To assist with debugging, I would like to view the shape context logpolar bins overl

相关标签:
2条回答
  • 2020-12-31 23:43

    Doing this:

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

    produces this:

    enter image description here

    0 讨论(0)
  • 2020-12-31 23:55

    You can use this function:

    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
    

    See the result here:

    figure screenshot

    0 讨论(0)
提交回复
热议问题