2025/12/07 2

[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