几何尺寸与公差论坛

 找回密码
 注册
查看: 917|回复: 2

晶圆检测中,如何校准wafer的中心?

  [复制链接]
发表于 2023-2-19 19:11:47 | 显示全部楼层 |阅读模式
在晶圆检测中,校准wafer的中心是非常重要的,它直接影响到后续的各种工艺流程的准确性和效率。以下是一些常用的校准wafer中心的方法:

利用机械手臂定位。利用机械手臂将wafer固定在检测平台上,并通过机械手臂的定位信息确定wafer的中心。

利用圆心检测算法。通过在wafer表面找到一些固定的几何形状,如圆、方形等,利用圆心检测算法计算出这些几何形状的中心,从而得到wafer的中心。

利用显微镜图像进行边缘检测。将wafer放置在显微镜下,通过显微镜图像进行边缘检测,找到wafer的边缘并计算其中心。

利用激光干涉仪进行测量。利用激光干涉仪测量wafer表面高程的变化,计算出wafer的中心。

以上方法各有优缺点,可以根据具体的检测需求选择合适的方法进行wafer中心的校准。
 楼主| 发表于 2023-2-19 19:12:19 | 显示全部楼层
继续,圆心检测算法,请用c#和visionpro编写
 楼主| 发表于 2023-2-19 19:12:49 | 显示全部楼层
using System;
using Cognex.VisionPro;
using Cognex.VisionPro.ImageProcessing;
using Cognex.VisionPro.PMAlign;

public class CircleDetector
{
    public static CogCircle DetectCircle(CogImage8Grey image)
    {
        // Convert the image to grayscale if needed
        if (image.PixelDepth != CogImageDepthConstants.EightBit)
        {
            image = image.To8Grey();
        }

        // Apply Gaussian smoothing to reduce noise
        var gaussian = new CogTransformGaussian();
        gaussian.Sigma = 2.0;
        image = gaussian.Execute(image);

        // Detect edges using Canny algorithm
        var canny = new CogToolBlock();
        canny.RunParams.SetOne(CogParamNameConstants.EdgeDetectionAlgorithm, CogEdgeDetectionAlgorithmConstants.Canny);
        canny.InputImage = image;
        canny.Run();

        // Apply Hough transform to detect circles
        var hough = new CogPMAlign();
        hough.InputImage = image;
        hough.RunParams.SetOne(CogPMAlignRunParamsConstants.NumberToFind, 1);
        hough.RunParams.SetOne(CogPMAlignRunParamsConstants.ApproximateNumberToFind, true);
        hough.RunParams.SetOne(CogPMAlignRunParamsConstants.PMAlignAlgorithm, CogPMAlignAlgorithmConstants.CircularEdgeFinder);
        hough.RunParams.SetOne(CogPMAlignRunParamsConstants.PMAlignGraphicDOFEnable, 0);
        hough.RunParams.SetOne(CogPMAlignRunParamsConstants.SearchRegion, new CogRectangle(0, 0, image.Width, image.Height));
        hough.RunParams.SetOne(CogPMAlignRunParamsConstants.AcceptThreshold, 0.6);
        hough.RunParams.SetOne(CogPMAlignRunParamsConstants.MaxPositioningError, 10.0);
        hough.RunParams.SetOne(CogPMAlignRunParamsConstants.MaxTranslationX, 0.0);
        hough.RunParams.SetOne(CogPMAlignRunParamsConstants.MaxTranslationY, 0.0);
        hough.RunParams.SetOne(CogPMAlignRunParamsConstants.AngleWeight, 0.0);
        hough.RunParams.SetOne(CogPMAlignRunParamsConstants.ScaleWeight, 0.0);
        hough.RunParams.SetOne(CogPMAlignRunParamsConstants.TranslationXWeight, 1.0);
        hough.RunParams.SetOne(CogPMAlignRunParamsConstants.TranslationYWeight, 1.0);
        hough.Run();

        // Extract the circle from the result
        var result = hough.Results[0];
        var center = new CogCircle(result.CenterX, result.CenterY, result.Radius);

        return center;
    }
}
该代码使用了高斯平滑、Canny算子和Hough变换来检测圆心。需要注意的是,这只是一个简单的示例代码,具体的参数设置和算法选择可能需要根据具体情况进行调整。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-5-5 04:19 , Processed in 0.031735 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表