how to plot histogram of hue value in polar ?

8 views (last 30 days)
SAM on 11 Nov 2013
Edited: Abdoo on 18 Jun 2015
i wants to plot a histogram of hue values in polar . in my 1st image i have plotted histogram of hue values . and now i would like to plot it on polar as shown in figure 2.
please help me .

Accepted Answer

Image Analyst
Image Analyst on 12 Nov 2013
I just adapted Doug's code to use a sample image and I got this:
See code attached below in blue text.
Image Analyst
Image Analyst on 12 Nov 2013
And Doug - he did most of the work.

Sign in to comment.

More Answers (2)

Doug Hull
Doug Hull on 11 Nov 2013
Edited: Doug Hull on 11 Nov 2013
z = peaks(300);
r = z(:,150);
r = r-min(r);
r = r/max(r);
n = numel(r)
cmap = jet(n)
Save this file first though:
function drawWheel(r, cmap)
if (any(r > 1) | any(r < 0))
error('R must be a vector of values between 0 and 1')
if numel(r) ~= size(cmap,1)
error('Length of r and cmap must be the same')
n = numel(r);
innerRadius = 80;
outerRadius = 100;
angles = linspace(0,2*pi,n+1);
newR = innerRadius*(1-r);
for i = 1:n;
drawSpoke(innerRadius, outerRadius, angles(i), angles(i+1), cmap(i,:))
drawSpoke(newR(i) , innerRadius, angles(i), angles(i+1), cmap(i,:))
line(cos(angles)*outerRadius, sin(angles)*outerRadius, 'LineWidth', 3, 'Color', 'k')
line(cos(angles)*innerRadius, sin(angles)*innerRadius, 'LineWidth', 3, 'Color', 'k')
axis equal
function h = drawSpoke(ri,ro,thetaStart,thetaEnd,c)
xInnerLeft = cos(thetaStart) * ri;
xInnerRight = cos(thetaEnd) * ri;
xOuterLeft = cos(thetaStart) * ro;
xOuterRight = cos(thetaEnd) * ro;
yInnerLeft = sin(thetaStart) * ri;
yInnerRight = sin(thetaEnd) * ri;
yOuterLeft = sin(thetaStart) * ro;
yOuterRight = sin(thetaEnd) * ro;
X = [xInnerLeft, xInnerRight, xOuterRight xOuterLeft];
Y = [yInnerLeft, yInnerRight, yOuterRight yOuterLeft];
h = patch(X,Y,c);
set(h,'edgeColor', 'none')
  1 Comment
SAM on 12 Nov 2013
Dear Doug Hull
thanks for your answer but i want my histogram should come in the circle.
close all
clear all
ima = imread('image.jpg');
but it not giving me the desired output. i am not bother about that hsv wheel but i want my polar should show the hue value of histogram as show in inside of the wheel.
please help me.......

Sign in to comment.

Abdoo on 18 Jun 2015
Edited: Abdoo on 18 Jun 2015
This small example to compere between three plots Hue from images and save the data in excel file.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!