You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中精准识别极坐标图中最陡的4个局部最大值?

如何优化极坐标拼图的最陡局部最大值识别?

我需要在拼图生成的极坐标图中找到4个最陡的局部最大值(即拼图的四个角),示例图如下:
Example Polar Coordinate Plot

我当前的实现基于某Stack Overflow回答的思路,本身运行正常,但结合“最陡峰值”函数后效果不佳,问题显然出在峰值陡度的测量方式上。

现有陡度判定函数

GetMagnitude函数(返回值越小代表陡度越好)

public double GetMagnitude(List<Point> pointList, int centerIndex)
{
    Point crrt = pointList[centerIndex];
    Point prev = pointList[centerIndex - 1];
    Point next = pointList[centerIndex + 1];

    Point rhs = new Point((next - crrt).x, (next - crrt).y);
    Point lhs = new Point((prev - crrt).x, (prev - crrt).y);

    // Calculate the gradient of the lhs against the rhs
    return Math.Abs((lhs.y - rhs.y) / (lhs.x - rhs.x));
}

GetAverageMagnitude函数(调用方式,averageRange取值为20)

public double GetAverageMagnitude(List<Point> pointList, int centerIndex)
{
    double mag = 0;
    int halfAverageRange = averageRange / 2;
    for (int j = -halfAverageRange; j < halfAverageRange; j++)
    {
        mag += GetMagnitude(pointList, centerIndex + j);
    }

    return mag / averageRange;
}

我怀疑GetMagnitude()函数末尾的计算逻辑完全错误,还尝试过以下方法,但均未奏效,当前方法是目前效果最好的,但仍达不到要求:

  • lhs与rhs的叉积
  • 分别计算lhs和rhs的梯度并取绝对值后平均

识别效果示例

  • 错误识别:
    Incorrect Identification
  • 正确识别:
    Correct Identification

注:连续点的X值遵循X=i规则,即X₀=0,X₁=1

请问如何优化这些结果?

内容的提问来源于stack exchange,提问作者Jordan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 22:42:52