체인 코드 테이블과 라인 테이블의 PCB 구멍 위치 감지에서의 응용 요약: 본고는 산업에서 인쇄 회로 기판 (printed circuit Board) 구멍의 위치를 연구하여 표준 PCB 보드 펀치의 목적을 달성했습니다.CCD에서 수집한 이미지를 효과적으로 사전 처리하고 체인 코드 테이블과 세그먼트 테이블을 결합하여 PCB 구멍의 질량 중심 위치를 정확하고 빠르게 결정합니다.이 문서의 방법은 질량 중심에서 0.001 픽셀 레벨까지 정확하게 측정할 수 있습니다.구멍의 면적, 둘레, 모양과 질량을 찾아내다.이 방법은 VC + + 6.0 플랫폼에서 성공적으로 실행되었으며 프로그래밍 속도가 빠르고 실시간, 정확성, 지능, 대량 검측을 실현할 수 있어 PCB 보드 검측의 품질과 속도를 크게 향상시켰다.
소개
자동 광학 검사(AOI, Automated Optical Inspection)는 최근 몇 년 동안 나타난 시각 검사 방법입니다.그것은 CCD를 통해 이미지를 얻고 컴퓨터 처리 및 분석을 통해 결함과 고장을 판단합니다.AOI의 PCB 생산라인에서의 응용은 검측속도가 빠르고 프로그래밍시간이 짧으며 영상대량량 지능검측제어 등 장점이 있다.공업 기술의 발전에 따라 PCB 판의 공경 크기에 대한 요구가 점점 높아지고 기계 대량 생산에 대한 요구도 점점 높아지고 있다.이 문서는 구멍 카운터를 생산하는 회사의 프로젝트에서 파생되었습니다.기술적 요구 사항은 PCB 구멍 위치의 최소 반지름이 0.2mm이고 각 PCB에 최대 2000개의 둥근 구멍이 있다는 것입니다.총 처리 시간은 10s를 초과하지 않습니다.처리 후 얻은 결과.중심은 0.01픽셀 수준까지 정확하며 각 중심과 템플릿 중심의 편차는 25um을 초과할 수 없습니다.80% 의 중심 편차가 이 지표를 초과하면 불합격으로 간주되며 설비 기준을 조정해야 한다.
[가장자리] 는 이미지의 픽셀 그레이스케일 레벨 또는 지붕 모양 변화를 나타내는 픽셀 집합입니다.이것은 목표와 배경, 목표와 목표, 지역과 지역, 기원과 기원 사이에 존재한다.그는 이미지 식별과 분석에 매우 유용하다.가장자리는 목표 물체의 윤곽을 그려 관찰자가 한눈에 볼 수 있고 풍부한 정보를 포함할 수 있다[1].따라서 구멍의 위치 정보를 얻으려면 먼저 모서리 체크 및 프로파일 추적을 수행해야 합니다.freeman 체인 코드를 사용하여 가장자리의 윤곽선을 추적하고 체인 코드 테이블과 세그먼트 테이블을 사용하여 데이터를 저장하고 처리합니다.
1 이미지 수집 및 사전 처리
(1) 백라이트 및 고해상도 카메라를 사용하여 높은 명암비와 고품질의 이미지를 얻을 수 있습니다.이미지 해상도는 409 * 096입니다.이미지 소스의 품질은 매우 중요하며 후속 이미지 처리에 직접적인 영향을 미칩니다.
(2) 중간값 필터를 사용하여 이미지를 부드럽게 처리하는데, 그 목적은 소음의 영향을 최소화하거나 제거하여 이미지의 질을 높이는 것이다.중간값 필터는 일정한 조건에서 최소 2 곱하기 필터, 균일치 필터 등 선형 필터로 인한 이미지 디테일의 모호함을 극복할 수 있으며 펄스 간섭과 이미지 스캔 잡음을 필터하는 데 가장 효과적이다.이 문서에서 다루는 이미지의 경우 PCB 보드 구멍의 세부 사항에 결함이 있으므로 중간 값 필터가 더 적합합니다.이미지 가장자리를 손상시키지 않고 노이즈를 제거할 수 있다는 장점이 있습니다.
(3) OSTU(클래스 간 최대 분산)를 사용하여 임계값 분할이 방법은 간편하고 안정적이며 효과가 있다.이것은 최소 함수 평화 방법의 원리를 판단하는 기초 위에서 자동으로 임계값을 선택하는 이치화 방법이다.이미지를 분할하는 것이 사상입니다. 히스토그램은 두 그룹으로 나뉘며 일정한 그레이스케일을 가지고 있습니다.회색조 레벨은 구분된 두 그룹의 방차가 가장 클 때 최적 임계값으로 설정됩니다 [2].
2 체인 코드 테이블과 세그먼트 테이블[3]을 사용하여 이미지의 데이터 결과를 설명합니다.
(1) 프리먼 체인 코드 프로파일을 사용하여 프리먼 체인 코드를 추적한다[4]는 8개의 연결과 4개의 연결 체인 코드로 나뉜다.8연속 체인 코드는 중심 픽셀이 8개의 이웃을 가리키는 방향으로 정의되며 4연속 체인은 중심 픽셀을 사용합니다.네 이웃의 방향을 가리키며 값은 0ï½3입니다.이 문서에서는 다음 그림 2와 같이 8-체인 코드를 시계 방향으로 회전하고 시계 방향으로 45도 회전하면 체인 코드의 값이 1 감소합니다.체인 코드 값이 4 증가하면 방향이 반전되고 8이 추가됩니다.그리고 원래 방향으로 돌아간다.체인 코드 값이 8을 초과하거나 0보다 작으면 강도 8 연산을 사용하여 8을 제거하거나 추가합니다.
(2) 체인 코드 테이블의 응용
PCB 보드의 단일 구멍 추적의 경우 이 문서에서는 Freeman 체인 코드 방법을 사용하여 대상 개체의 경계 체인 코드를 얻습니다.특정 점에서 대상 물체의 그레이스케일 레벨을 검색할 때 이 점은 대상 물체의 경계점입니다.점이 인코딩되지 않은 경우 점이 구멍 위치의 시작점입니다.이 시점에서 프리먼 체인 코드를 통해 프로파일 추적을 수행하면 경계에 있는 각 점의 체인 코드 값을 추적할 수 있으며 중심점과 인접점의 좌표 편차 값에 따라 표 1과 같습니다.각 경계점의 좌표는 시작점의 좌표에서 얻을 수 있으며 시작점의 좌표는 2D 배열 inc[8][2]로 표현될 수 있습니다.
구체적인 인코딩 과정은 대상 물체의 그레이스케일을 G1, 배경 그레이스케일을 G2로 설정하는 것이다.전체 PCB 보드의 이미지를 검색합니다.점 a가 G1의 그레이스케일 레벨을 충족하면 경계점으로 간주됩니다.A부터 시계 방향으로 구멍 위치의 경계를 검색합니다. 초기 값은 4와 같은 체인 코드 값으로 정의됩니다. 검색 방향의 다음 점입니다.다음 점의 그레이스케일 값이 G1과 같으면 다음 경계점입니다.그렇지 않으면 검색 방향이 시계 방향으로 45도 회전되고 체인 코드 값이 3이 되므로 G1과 같은 그레이스케일 값을 충족하는 첫 번째 점 A 점 B가 항상 표시됩니다.그런 다음 B를 새 경계점으로 설정하고 추적 종료 플래그를 0으로 설정합니다.인접 점에서 경계 점을 찾을 수 없는 경우 추적 종료 플래그를 1로 설정하여 고립 점임을 나타냅니다.
점 B를 새 경계점으로 사용합니다.체인 코드 값을 시작 체인 코드의 방향으로 사용합니다.마지막 경계점이 A 점일 때까지 위 추적을 시계 방향으로 반복합니다. 단일 구멍 비트맵을 추적하고 영역을 색상으로 채우면 검색되고 추적된 체인 코드 값이 체인 코드 테이블에 저장됩니다.이 문서에서는 체인 코드 테이블을 1차원 정수 배열 코드 []에 저장합니다. 아래 첨자 0과 1의 저장 내용은 각각 시작 경계점의 좌표 X와 Y이며, 체인 코드 총수는 아래 첨자 2의 단원에 저장됩니다. 숫자 N은 아래 첨자 3의 단원부터 시작하여 첫 번째 경계점의 체인 코드 값을 저장합니다.두 번째 경계점의 체인 코드 값...마지막 N번째 경계점까지의 체인 코드 값
3 세그먼트 테이블
(1) 세그먼트 테이블 정의
체인 코드 테이블은 대상 물체의 경계만 표시할 수 있고 경계의 내외를 표시할 수 없기 때문에 체인 코드 테이블은 대상 물체 내부의 픽셀을 표시할 수 없지만 실제로는 이미지의 경계점과 둘레 외에 이 문서에서 얻은 구멍 중심 데이터와 면적과 같은 다른 매개변수도 얻을 수 있습니다.내부 픽셀의 처리 및 계산을 위해서는 세그먼트 테이블이라는 또 다른 구조가 필요합니다.
또한 영역은 수평 선 세그먼트로 구성된 것으로 볼 수 있습니다.각 선 세그먼트는 두 끝점으로 표현할 수 있습니다.스윕에 따라 매끄럽게 정렬된 영역의 모든 수평 세그먼트의 끝 테이블을 세그먼트 테이블이라고 합니다.세그먼트 테이블의 각 점은 두 부분으로 구성됩니다.짝수 점은 왼쪽 끝의 좌표를 나타내고 홀수 점은 오른쪽 끝의 좌표를 나타냅니다.세그먼트 테이블을 나타내는 구조 DOT가 정의된 경우 i가 세그먼트를 나타내는 1차원 배열 DOT[]를 사용합니다. 이 세그먼트의 왼쪽 끝은 DOT[2*i], 오른쪽 끝은 DOT[2*i+1]로 표시됩니다.
(2) 세그먼트 테이블의 적용
세그먼트 테이블은 각 세그먼트와 세그먼트의 끝점 값을 얻기 때문에 계산을 통해 영역의 내부 픽셀을 쉽게 얻을 수 있으며, 이 문서에 필요한 영역의 면적, 무게 중심 계산과 같은 이미지의 다른 중요한 매개변수도 얻을 수 있습니다.영역을 빠르게 채우기 (중복 검색 방지, 효율성 향상)영역의 형태 매개변수, 공식 표현: F = L*L/4ÍS
이 프로젝트의 목적은 둥근 구멍의 중심을 감지하는 것이므로 이 영역의 형태 감지에 특히 중요합니다.위의 공식에서 L은 둘레이고 S는 면적입니다.이 비율을 통해 얻은 형태 매개변수 F는 원의 형태 매개변수입니다.1. 1과 차이가 클수록 원의 모양과 차이가 크다.이 모양 매개변수는 PCB 구멍의 구멍 수와 중심을 계산하기 위해 사용할 수 있습니다.1에 가까우면 처리된 구멍과 비슷할 수 있습니다. 그렇지 않으면 결과에 기록되지 않고 비원형 구멍 색상 태그를 직접 채울 수 있습니다.
(3) 체인 코드 테이블과 세그먼트 테이블의 변환 [5]
세그먼트 테이블 표시를 사용하면 이미지의 다른 중요한 매개 변수를 얻을 수 있으며 체인 코드 테이블에서 세그먼트 테이블로 변환할 수 있습니다.
구체적인 단계는 다음과 같습니다.
표의 변환을 거쳐 체인 코드는 세 가지 유형을 얻는다[6]: 중점, 유형 번호 0;왼쪽 끝, 유형 번호 1,오른쪽 끝, 유형 번호 2,특이점, 유형 번호 3.체인 코드 테이블의 데이터에 따라 들어오는 체인 코드 값과 나가는 체인 코드 값을 알 수 있으며 이 두 점의 방향 유형을 결정할 수 있습니다.프로그램 설계에서 표 3을 기준으로 점 유형을 판단할 수 있습니다.왼쪽 및 오른쪽 끝인 경우 좌표는 임시 배열에 저장됩니다.기이한 점은 좌우 같은 점의 중합으로 볼 수 있다. 즉, 그것은 두 번 저장해야 하고, 중간에 점을 저장하지 말아야 한다.세그먼트 테이블의 끝은 Y 좌표 크기로, 같은 행의 끝은 X 좌표 크기로 정렬됩니다.
4 실험 결과
이 실험에서는 이 프로젝트의 PCB 이미지를 캡처하여 채워진 이미지를 처리, 캡처 및 처리합니다.
이 문서의 알고리즘과 프로그램을 사용하여 스크린샷을 처리하고 체인 코드 테이블과 세그먼트 테이블을 사용하여 데이터를 저장하면 PCB 구멍 위치의 일부 매개변수 정보를 얻을 수 있습니다.
5 결론
이 글은 백라이트를 이용하여 고품질의 PCB 이미지를 얻고, OSTU 임계값 분할 방법을 이용하여 안정적이고 간단하게 원본 이미지의 2치 이미지를 얻고, 스캔하여 윤곽 추적을 진행하며, 다음 오른쪽 점을 추적하는 원리를 이용한다.더 준비되고 시간도 절약됩니다.체인 코드 테이블과 세그먼트 테이블은 데이터와 데이터 처리를 저장하여 PCB 보드의 둘레, 면적 및 구멍 질량을 정확하고 쉽게 얻을 수 있으며 PCB 보드가 구멍을 뚫을 때의 위치 문제를 성공적으로 해결합니다.이 실험은 Visual C++ 소프트웨어 플랫폼에서 실행되고 검증되었습니다.31 us 내에서 216 개의 구멍을 감지하고 처리하여 프로젝트에 필요한 속도와 정밀도를 얻을 수 있습니다.결과는 이 방법이 실행 가능하다는 것을 증명했다.