반응형
250x250
Notice
Recent Posts
Recent Comments
Link
«   2026/01   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

폴크(FOLC)

치수 계산하기 - edge score 본문

카테고리 없음

치수 계산하기 - edge score

folcjin 2025. 6. 19. 14:46
728x90
반응형

Gradient 기반 신뢰도 스코어링(gradient-based edge confidence scoring)**은 검출된 edge가 진짜 edge인지 아닌지를 판단하거나 subpixel edge의 신뢰도를 정량화할 때 매우 유용한 기법으로, CD 측정, 자동 edge 선택, 노이즈 필터링 등에 적용된다.

Gradient magnitude : edge의 "강도(strength)" 또는 "확신도(confidence)"로 해석 가능
강한 edge : 큰 gradient → 확실한 밝기 변화 → 진짜 edge일 가능성 높음
약한 edge : 작은 gradient → noise, blur, 혹은 경계 아님

Confidence = |I(x+1) - I(x-1)| / 2 = |Gradient|

 

스코어링 기준값 예시

≥ 20.0 매우 강한 edge CD 측정에 사용 가능
10 ~ 20 보통 수준 조건부 사용 가능
< 10.0 약한 edge 필터링 필요 가능성 높음
※ 실제 값은 이미지 명암 대비에 따라 달라지므로 **이미지별로 동적으로 정규화(normalization)**하거나 상대 비교 방식 사용 가능

 

예제

struct EdgePoint {
    float position;              // subpixel 위치
    float confidence;            // gradient magnitude
    EdgeDirection direction;     // 양/음 gradient
};

vector<EdgePoint> detectEdgesWithConfidence(const vector<float>& profile) {
    vector<EdgePoint> edges;

    for (int i = 1; i < profile.size() - 1; ++i) {
        float g_prev = profile[i - 1];
        float g_curr = profile[i];
        float g_next = profile[i + 1];

        // gradient magnitude = edge confidence
        float gradMag = fabs(g_next - g_prev) * 0.5f;

        // edge candidate (local max/min in gradient)
        if ((g_curr > g_prev && g_curr > g_next) || (g_curr < g_prev && g_curr < g_next)) {
            float offset = parabolaSubpixelOffset(g_prev, g_curr, g_next);
            EdgeDirection dir = (g_next - g_prev > 0) ? EdgeDirection::POSITIVE : EdgeDirection::NEGATIVE;

            edges.push_back({i + offset, gradMag, dir});
        }
    }

    return edges;
}

728x90
반응형
사업자 정보 표시
사업자 등록번호 : -- | TEL : --