Hadi Ranji
Hadi Ranji

Reputation: 213

how to find edge of an image with most distance from center?

i writing a sample program in c# who drawing some point in page
i set center point with calculate distance of point
but how can found most distance point from center point ?
sample code :

void draw(string label,float x,float y)
{
    Graphics g = panel1.CreateGraphics();
    Pen p = new Pen(Color.YellowGreen, 5);
    Random randomGen = new Random(Convert.ToInt32(label));
    KnownColor[] names = (KnownColor[])Enum.GetValues(typeof(KnownColor));
    KnownColor randomColorName = names[randomGen.Next(names.Length)];
    Color randomColor = Color.FromKnownColor(randomColorName);
    SolidBrush s = new SolidBrush(randomColor);
    g.FillEllipse(s, x * 1, y * 1, 10, 10);
}

enter image description here

Upvotes: 0

Views: 236

Answers (2)

David Clifte
David Clifte

Reputation: 374

You can define the furthest point of an angle. This can solve the problem of convex hull, but this technique fits well only in a circle space, very like yours.

for each angle you have to find the furthest point and then assign it the red color. You can Use as much angle as you want.

PSEUDO...

npoints = 10;

furthestPts    = zeros(npoints );//Initialize vectors with 0
distances      = zeros(npoints );
for each pt in points
   angle = atan((pt.y - c.y)/pt.x - c.x) * 360 / ( 2 * pi); //degres
   angle = (int) (angle/npoints); //we will have only 10 points separated by 36 degrees
   d = distance(pt,center);

   if(distances[angle] < d){
      distances[angle] = d;      //Updating furthest point
      furthestPts.[angle] = (pt); //Updating furthest point
    }

You will see that this algoritm has a few problems if the point are to far from center or if the points are to far from each other.

Upvotes: 0

kid.abr
kid.abr

Reputation: 330

The best and simplest approach for this problem what I can think of is:

1) scan the image/coordinate system horizontally and vertically

2) For each row/column store the lowest and the highest coordinates with non-zero intensity

that will be your boundary points

Upvotes: 1

Related Questions