Tóm tắt ứng dụng của bảng mã hóa chuỗi và bảng phân đoạn dòng trong phát hiện vị trí lỗ PCB: Bài viết này nghiên cứu vị trí của các lỗ bảng mạch in trong ngành, đạt được mục đích của máy đục lỗ bảng PCB. Tiền xử lý hiệu quả của hình ảnh thu thập CCD, sử dụng sự kết hợp của đồng hồ chuỗi và bảng phân đoạn để xác định chính xác và nhanh chóng vị trí trung tâm khối lượng của lỗ PCB. Phương pháp của bài viết này có thể phát hiện chính xác khối lượng tâm đến mức 0,001 pixel. Tìm diện tích, chu vi, hình dạng và tâm của lỗ. Phương pháp này hoạt động thành công trên nền tảng VC++6.0, lập trình nhanh, có thể đạt được thời gian thực, chính xác, thông minh, phát hiện hàng loạt, cải thiện đáng kể chất lượng và tốc độ phát hiện bảng mạch PCB.
Giới thiệu
AOI (Automated Optical Inspection) là một phương pháp phát hiện thị giác đã xuất hiện trong những năm gần đây. Nó lấy hình ảnh thông qua CCD và đánh giá các khiếm khuyết và lỗi bằng cách xử lý và phân tích máy tính. Ứng dụng AOI trên dây chuyền sản xuất PCB có những ưu điểm như tốc độ phát hiện nhanh, thời gian lập trình ngắn và kiểm soát phát hiện thông minh số lượng lớn hình ảnh. Với sự phát triển của công nghệ công nghiệp, yêu cầu về kích thước khẩu độ của tấm PCB ngày càng cao hơn và yêu cầu về sản xuất hàng loạt của máy. Bài viết này xuất phát từ một dự án từ một công ty sản xuất máy đếm lỗ. Yêu cầu kỹ thuật là bán kính tối thiểu 0,2mm cho vị trí lỗ PCB, lên đến 2000 lỗ tròn trên mỗi PCB. Tổng thời gian xử lý không quá 10 giây. Kết quả thu được sau khi xử lý. Trung tâm chính xác đến mức 0,01 pixel và độ lệch của mỗi trung tâm không được vượt quá 25um so với trung tâm của mẫu. Nếu độ lệch trung tâm 80% vượt quá chỉ số này, nó được coi là không phù hợp và cần điều chỉnh điểm chuẩn thiết bị.
"Edge" đề cập đến một tập hợp các pixel có sự thay đổi bước hoặc thay đổi giống như mái nhà trong mức độ xám của pixel trong ảnh. Nó tồn tại giữa mục tiêu và bối cảnh, mục tiêu và mục tiêu, khu vực và khu vực, phần tử gốc và phần tử gốc. Nó rất hữu ích cho việc nhận dạng và phân tích hình ảnh. Các cạnh có thể phác thảo các đường viền của đối tượng mục tiêu, cho phép người quan sát nhìn thấy trong nháy mắt và chứa nhiều thông tin [1]. Do đó, để có được thông tin vị trí của lỗ, trước tiên phải thực hiện phát hiện cạnh và theo dõi đường viền. Sử dụng mã chuỗi tự do để theo dõi các đường viền của các cạnh và sử dụng bảng mã chuỗi và bảng phân đoạn để lưu trữ và xử lý dữ liệu.
1 Thu thập hình ảnh và tiền xử lý
(1) Bài viết này sử dụng đèn nền và máy ảnh có độ phân giải cao để có được hình ảnh có độ tương phản cao và chất lượng cao. Độ phân giải hình ảnh là 409 * 096. Chất lượng của nguồn hình ảnh là rất quan trọng và nó sẽ ảnh hưởng trực tiếp đến quá trình xử lý hình ảnh tiếp theo.
(2) Sử dụng bộ lọc trung bình để làm mịn hình ảnh với mục đích giảm thiểu hoặc loại bỏ ảnh hưởng của nhiễu và cải thiện chất lượng hình ảnh. Bộ lọc trung bình có thể khắc phục sự mờ chi tiết hình ảnh gây ra bởi bộ lọc tuyến tính như bộ lọc bình phương nhỏ nhất, bộ lọc trung bình trong các điều kiện nhất định, hiệu quả nhất để lọc nhiễu xung và nhiễu quét hình ảnh. Đối với hình ảnh được đề cập trong bài viết này, chi tiết của lỗ bảng PCB bị lỗi, vì vậy bộ lọc trung bình phù hợp hơn. Ưu điểm của nó là nó có thể loại bỏ nhiễu mà không làm hỏng các cạnh của hình ảnh.
(3) Phân chia ngưỡng bằng cách sử dụng OSTU (Phương pháp phương sai tối đa giữa các lớp). Phương pháp này đơn giản, ổn định, hiệu quả. Nó là một phương pháp nhị phân để tự động chọn ngưỡng dựa trên việc đánh giá nguyên tắc phương pháp hòa bình của hàm tối thiểu. Ý tưởng là chia hình ảnh. Biểu đồ tần xuất được chia thành hai nhóm theo một mức độ xám nhất định. Mức độ xám được đặt ở ngưỡng tối ưu [2] khi phương sai của hai nhóm được chia là lớn nhất.
2 Sử dụng bảng mã chuỗi và bảng phân đoạn dòng [3] để mô tả kết quả dữ liệu của hình ảnh
(1) Theo dõi mã chuỗi Freeman [4] bằng cách sử dụng phác thảo mã chuỗi Freeman được chia thành mã chuỗi tám và bốn liên kết. Mã octetron được xác định theo hướng mà pixel trung tâm hướng tới 8 hàng xóm của nó, và chuỗi tứ kết sử dụng pixel trung tâm. Chỉ theo hướng của 4 hàng xóm của nó với giá trị 0 ½ 3. Bài viết này sử dụng một mã octetron, như thể hiện trong hình 2 dưới đây, mã octetron được xoay theo chiều kim đồng hồ và khi xoay 45 độ theo chiều kim đồng hồ, giá trị của mã giảm 1; Nếu giá trị của chuỗi tăng 4, hướng sẽ đảo ngược và thêm 8. Sau đó quay lại hướng ban đầu. Khi giá trị mã chuỗi vượt quá 8 hoặc nhỏ hơn 0, phép toán modulo 8 được sử dụng để loại bỏ hoặc thêm 8.
(2) Ứng dụng bảng mã chuỗi
Để theo dõi một lỗ duy nhất trên bảng mạch PCB, bài viết này sử dụng phương pháp mã chuỗi Freeman để có được mã chuỗi ranh giới của đối tượng mục tiêu. Khi mức độ xám của cơ thể mục tiêu được tìm kiếm tại một điểm nhất định, điểm đó là điểm ranh giới của cơ thể mục tiêu. Nếu điểm đó chưa được mã hóa, điểm đó là điểm bắt đầu của một vị trí lỗ. Từ thời điểm này, việc theo dõi đường viền được thực hiện thông qua mã chuỗi Freeman cho phép theo dõi các giá trị mã chuỗi cho mỗi điểm trên ranh giới và được thể hiện trong Bảng 1 dựa trên các giá trị độ lệch tọa độ cho các điểm trung tâm và liền kề. Tọa độ của mỗi điểm ranh giới có thể được lấy từ tọa độ của điểm xuất phát, có thể được biểu diễn dưới dạng mảng hai chiều inc[8][2].
Quy trình mã hóa cụ thể là: Đặt mức xám của đối tượng mục tiêu thành G1 và mức xám nền thành G2. Tìm kiếm hình ảnh của toàn bộ bảng PCB. Khi một điểm a thỏa mãn mức độ xám của G1, nó được coi là điểm biên. Bắt đầu từ A, tìm kiếm theo chiều kim đồng hồ cho ranh giới của vị trí lỗ, với giá trị ban đầu được định nghĩa là giá trị mã chuỗi bằng 4. Tìm kiếm theo hướng cho điểm tiếp theo. Nếu giá trị thang xám của điểm tiếp theo bằng G1, thì đó là điểm ranh giới tiếp theo. Nếu không, xoay hướng tìm kiếm 45 độ theo chiều kim đồng hồ, với giá trị mã chuỗi là 3 để tiếp tục tìm kiếm điểm, do đó luôn tìm thấy điểm đầu tiên A điểm B, thỏa mãn giá trị thang xám bằng G1. Sau đó đặt B làm điểm giới hạn mới và đặt cờ kết thúc theo dõi thành 0. Nếu bạn không thể tìm thấy một điểm ranh giới trong một điểm liền kề, hãy đặt cờ kết thúc theo dõi thành 1 để chỉ ra rằng đó là một điểm cô lập.
Sử dụng điểm B làm điểm biên giới mới. Lấy giá trị mã chuỗi của nó làm hướng cho mã chuỗi bắt đầu. Lặp lại dấu vết trên theo chiều kim đồng hồ cho đến khi điểm ranh giới cuối cùng là điểm A. Theo dõi bitmap lỗ đơn và đánh dấu khu vực bằng màu sắc, có nghĩa là nó đã được tìm kiếm và giá trị chuỗi được theo dõi được lưu trữ trong bảng mã chuỗi. Bài viết này lưu trữ bảng mã chuỗi trong mã mảng số nguyên một chiều [], nội dung lưu trữ của 0 và 1 lần lượt là tọa độ X và Y của điểm ranh giới bắt đầu, và tổng số mã chuỗi được lưu trữ trong các đơn vị có chỉ số 2. Số N bắt đầu với các đơn vị có chỉ số 3, lưu trữ giá trị mã chuỗi của điểm ranh giới đầu tiên, Giá trị mã chuỗi của điểm giới hạn thứ hai... Giá trị mã chuỗi cho đến điểm giới hạn thứ N cuối cùng.
Bảng phân đoạn 3 dòng
(1) Định nghĩa bảng phân đoạn
Vì đồng hồ chuỗi chỉ có thể đại diện cho ranh giới của cơ thể mục tiêu, không phải bên trong và bên ngoài của ranh giới, đồng hồ chuỗi không thể đại diện cho các pixel bên trong cơ thể mục tiêu, nhưng trên thực tế, nó có được các thông số khác ngoài các điểm ranh giới và chu vi của hình ảnh, chẳng hạn như dữ liệu trung tâm lỗ và diện tích thu được trong bài viết này, Để xử lý và tính toán các pixel bên trong, cần có một cấu trúc khác - bảng phân đoạn dòng.
Khu vực này cũng có thể được coi là bao gồm các đoạn thẳng nằm ngang. Mỗi đoạn thẳng có thể được đại diện bởi hai điểm cuối của nó. Bảng điểm cuối của tất cả các đoạn thẳng nằm ngang trong khu vực được sắp xếp một cách trơn tru được gọi là bảng đoạn thẳng. Mỗi điểm của bảng phân đoạn tuyến bao gồm hai phần. Các điểm chẵn đại diện cho tọa độ của điểm cuối bên trái và các điểm lẻ đại diện cho tọa độ của điểm cuối bên phải. Nếu bạn xác định một cấu trúc DOT để đại diện cho bảng phân đoạn tuyến, hãy sử dụng mảng một chiều DOT[] để cho i đại diện cho phân đoạn tuyến. Đầu trái của phân đoạn tuyến này có thể được biểu diễn là DOT [2 * i] và đầu phải là DOT [2 * i+1].
(2) Ứng dụng của bảng phân đoạn dòng
Bảng phân đoạn nhận được giá trị điểm cuối của mỗi phân đoạn và phân đoạn, vì vậy bạn có thể dễ dàng có được pixel bên trong của khu vực bằng cách tính toán và cũng có được các tham số quan trọng khác của hình ảnh, chẳng hạn như các tham số cần thiết trong bài viết này: tính toán diện tích của khu vực, trọng tâm của khu vực; Nhanh chóng lấp đầy một khu vực nhất định (tránh tìm kiếm lặp đi lặp lại và tăng hiệu quả); Đối số hình dạng của diện tích, công thức được biểu thị là: F=L * L/4ßS
Mục đích của dự án là phát hiện trung tâm của lỗ tròn, vì vậy việc phát hiện hình dạng của khu vực là đặc biệt quan trọng. Trong công thức trên, L là chu vi và S là diện tích. Tham số hình dạng F thu được bằng tỷ lệ này là tham số hình dạng của vòng tròn. 1. Sự khác biệt với 1 càng lớn, sự khác biệt với hình dạng của vòng tròn càng lớn. Để tính toán số lỗ của lỗ PCB và tâm tròn, bạn có thể sử dụng tham số hình dạng này để đánh giá. Nếu nó tiếp cận 1, nó có thể được xấp xỉ như lỗ tròn đã được xử lý, nếu không nó sẽ được điền trực tiếp vào các dấu màu không tròn và sẽ không được ghi lại trong kết quả.
B5-05=giá trị thông số Kd, (cài 2)
Sử dụng bảng phân đoạn dòng để biểu thị các tham số quan trọng khác mà hình ảnh có thể thu được và việc chuyển đổi từ bảng mã chuỗi sang bảng phân đoạn dòng có thể được thực hiện theo Bảng 2.
Các bước cụ thể như sau:
Sau khi chuyển đổi bảng, mã chuỗi nhận được ba loại [6]: trung điểm và loại 0; Điểm cuối bên trái, loại số 1; Điểm cuối bên phải, loại số 2; Điểm kỳ dị, loại 3. Dựa trên dữ liệu trong bảng mã chuỗi, giá trị mã chuỗi đến và giá trị mã chuỗi đi có thể được biết và loại hướng của hai điểm này có thể được xác định. Trong thiết kế chương trình, các loại điểm có thể được đánh giá dựa trên Bảng 3. Nếu là các điểm cuối trái và phải, các tọa độ được lưu trữ trong mảng tạm thời. Điểm kỳ dị có thể được coi là sự trùng hợp của cùng một điểm bên trái và bên phải, có nghĩa là nó phải được lưu trữ hai lần, không phải ở giữa. Các điểm cuối trong bảng phân đoạn được sắp xếp theo kích thước của tọa độ Y, trong khi các điểm cuối trong cùng một hàng được sắp xếp theo kích thước của tọa độ X.
4 Kết quả thí nghiệm
Thí nghiệm này chụp ảnh màn hình PCB của dự án này, xử lý, chụp ảnh và xử lý hình ảnh sau khi điền.
Sử dụng các thuật toán và chương trình trong bài viết này để làm việc với ảnh chụp màn hình và sử dụng bảng mã chuỗi và bảng phân đoạn dòng để lưu trữ dữ liệu, bạn có thể nhận được một số thông tin tham số về vị trí lỗ PCB.
5 Kết luận
Bài viết này sử dụng nguồn backlit để có được hình ảnh PCB chất lượng cao, sử dụng phương pháp phân chia ngưỡng OSTU để có được hình ảnh nhị phân ổn định và đơn giản của hình ảnh nguồn, quét và theo dõi đường viền và sử dụng nguyên tắc theo dõi điểm tiếp theo bên phải. Nó được chuẩn bị tốt hơn và tiết kiệm thời gian hơn. Bảng mã hóa chuỗi và bảng phân đoạn dòng lưu trữ dữ liệu và xử lý dữ liệu, rất thuận tiện và chính xác để có được chu vi, diện tích và trung tâm lỗ của bảng PCB, giải quyết thành công vấn đề định vị khi bảng PCB đục lỗ. Thử nghiệm đã được chạy và xác minh trên nền tảng phần mềm Visual C++. Nó có thể phát hiện và xử lý 216 lỗ tròn trong 31 us và đạt được tốc độ và độ chính xác cần thiết cho dự án. Phương pháp này đã được chứng minh là khả thi.