2025/12 3

[Vision/C++] 반복 패턴 이미지에서의 Grid Center 검출 알고리즘 구현

웨이퍼나 PCB 검사 프로젝트를 진행하다 보면 동일한 패턴이 반복되는 이미지를 자주 다루게 된다. 이러한 이미지에서 미세 결함(Defect)을 검출하기 위해서는, 강한 에지 성분을 가진 반복 패턴을 먼저 제거(Pattern Removal)해야 한다. 패턴 제거를 위해 FFT 필터링이나 마스터 이미지와의 Subtraction 방식을 고려하고 있는데, 이를 위해서는 선행적으로 각 디펙트의 인덱싱정보를 위해 각 패턴의 정확한 중심 좌표(Center Position)를 확보해야 한다. 본 포스팅에서는 2D 이미지 프로세싱 부하를 줄이기 위해 투영(Projection) 기법을 활용하여 Grid Pattern의 중심을 검출하는 로직(GridPatternMatching) 구현 과정을 정리한다.1. 검증 환경 구성실제..

Vision & Inspection 2025.12.21

[C++/CUDA] 90GB 대용량 버퍼풀에서 4,000개 ROI만 쏙 뽑아 초고속 어파인 변환하기 (Zero-Copy & Batch Assembly)

최근 uled 검사 장비 개발 프로젝트를 진행하면서 극한의 성능 요구사항에 부딪혔습니다. 시스템에는 90GB에 달하는 초대형 Raw 이미지가 메모리에 로드되어 있습니다. 제 미션은 이 거대한 이미지 전체를 건드리는 것이 아니라, 검사가 필요한 4,000개 이상의 특정 영역(ROI)만 빠르게 잘라내어 어파인 변환(Affine Transform)을 수행하는 것이었습니다. 처음에는 "GPU가 빠르니까 금방 하겠지"라고 생각했지만, 현실은 달랐습니다. 90GB라는 거대한 바다에서 작은 조각 4,000개를 건져 올리는 과정에서 PCIe 통신 병목(Latency)이 발목을 잡았기 때문입니다. 오늘은 이 문제를 해결하기 위해 적용한 대용량 메모리 핀(Pin) 등록과 필요한 부분만 처리하는 GPU 배치 조립(Batch..

Vision & Inspection 2025.12.07

[Insight] 이미지를 돌릴까, 마스크를 돌릴까? (Image vs Mask Rotation)

웨이퍼 패턴 검사 알고리즘을 최적화하다 보면 필연적으로 마주치는 고민이 있습니다.Cognex PatMax, CopenCV Templet Matching 등을 이용해 패턴의 틀어진 각도를 알아냈을 때,이미지 회전: 들어온 영상을 '기본 이미지'와 똑같이 0도로 펴서 검사할 것인가?마스크 회전: 영상은 그대로 두고, 검사 영역(ROI/Mask)을 theta 만큼 돌려서 검사할 것인가?현재 저희는 전자인 '이미지 회전' 방식을 사용 중입니다. 하지만 "굳이 무거운 영상 변환을 해야 하나? 좌표만 돌리면 더 빠르지 않을까?"라는 의문은 개발자라면 누구나 가질 수 있는 합리적인 의심입니다.이 글에서는 두 방식의 메커니즘을 비교하고, 왜 웨이퍼 검사(비교 검사)에서는 '이미지 회전'이 정답에 가까운지 기술적으로 분..

Vision & Inspection 2025.12.07