Giải thuật xử lí ảnh.

Một phần của tài liệu LUẬN VĂN ĐH BÁCH KHOÁ: THIẾT KẾ BÀN MÁY 2D (Trang 33)

Phần giải thuật xử lí ảnh là một phần rất quan trọng trong luận văn nó quyết định quỹ đạo đường đi của bộ phận công tác, các chi tiết vẽ của bức ảnh… Ở phần xử lí ảnh, luận văn xây dựng hai chương trình giải thuật đó là giải thuật lấy tọa độ cho việc vẽ biên (hay đường bao của đối tượng trong ảnh) và giải thuật vẽ đầy bức ảnh (tô đầy ảnh). Và giải thuật chung cho toàn chương trình xử lí ảnh được thể hiện qua sơ đồ hình 4.2. Đầu tiên ảnh sẽ được đưa vào chương trình xử lí ảnh rồi chuyển ảnh sang ảnh xám. Đến đây, chương trình sẽ có hai sự lựa chọn là lấy tọa độ theo chế độ vẽ biên (đường bao) hay vẽ đầy ảnh (tô ảnh). Nếu chọn theo chế độ vẽ biên thì ảnh được tách biên theo Phương pháp Canny và lấy tọa độ. Nếu chọn theo chế độ vẽ đầy ảnh thì ảnh sẽ không được tách biên mà chuyển ảnh xám lúc đầu thành ảnh nhị phân (ảnh chỉ có hai màu đen và trắng) và từ ảnh này sẽ tọa độ cho chế độ vẽ đầy ảnh.

Chương 4: Chương trình giải thuật

Hình 4.2: Sơ đồ giải thuật chung cho xử lí ảnh 4.2.1 Khái quát về xử lí ảnh trên C#

Ảnh: là một tập hữu hạn các điểm ảnh nằm liền kề nhau. Ảnh thường được biểu diễn bằng một ma trận hai chiều. Mỗi phần tử của ma trận là một điểm ảnh.

Ảnh số (Digital image): đây là đối tượng mà máy tính xử lý. Ảnh số chỉ là một ma trận 2 chiều, và việc xử lý chúng chỉ là những thao tác trên ma trận này sao cho ra kết quả hợp lý. Ví dụ một bức ảnh số có độ phân giải 640x480 nghĩa là chiều ngang có

Hình 4.3: Ảnh số

Ảnh màu: thông thường, ảnh màu thường được tạo nên từ 3 ảnh xám của 3 màu cơ bản đỏ ( R ), xanh lá ( G ), xanh dương ( B ). Tất cả các màu trong tự nhiên đều được kết hợp từ 3 màu cơ bản này.

Hình 4.4: Ảnh màu

Ảnh xám: giá trị mỗi điểm ảnh nằm trong giải giá trị từ 0 đến 255, nghĩa là cần 8 bit hay 1 byte để biểu diễn mỗi điểm ảnh này.

Chương 4: Chương trình giải thuật

Ảnh nhị phân (ảnh trắng đen): là ảnh có giá trị mức xám của các điểm ảnh được biểu diễn bằng 1 bit ( giá trị 0 hoặc 1).

Hình 4.6: Ảnh nhị phân 4.2.2 Lấy tọa độ vẽ biên ảnh

a) Tách biên

Điểm biên: một điểm được xem là điểm biên nếu có sự thay đổi nhanh về mức xám (hoặc màu). Ví dụ trong ảnh nhị phân, điểm đen được gọi là điểm biên nếu lân cận nó có ít nhất một điểm trắng.

Đường biên (hay đường bao): tập hợp các điểm biên liên tiếp tạo thành một đường biên.

Ý nghĩa của đường biên trong xử lý: đường biên là một loại đặc trưng tiêu biểu trong phân tích, nhận dạng ảnh, người ta sử dụng biên để phân tách các vùng màu riêng biệt.

Để thực hiện việc tách biên trên thực tế có rất nhiều phương pháp tách biên khác nhau đã được nghiên cứu và tìm ra như: thuật toán Sobel, thuật toán Prewitt, thuật toán Robert, thuật toán Laplacian of Gaussian, thuật toán Canny… Trong đó, thuật toán Canny là thuật toán tách biên tốt và hiệu quả nhất phù hợp với yêu cầu của luận văn. Bởi vì thuật toán Canny đã đưa ra ba tiêu chí cho thuật toán rất phù hợp với yêu cầu luận văn.

− Mức lỗi: phải tìm ra tất cả các biên và không có biên nào bị lỗi.

Canny

− Hiệu suất: làm sao cho khi tách biên không được nhận ra nhiều biên trong khi chỉ có một biên tồn tại.

Canny đã giả thuyết rằng nhiễu trong ảnh tuân theo phân bố Gauss và đồng thời Canny cũng cho rằng phương pháp phát hiện biên thực chất là bộ lọc nhân chập có khả năng làm mịn nhiễu và định vị được cạnh. Thuật toán tìm cạnh Canny có thể tóm tắt như sau:

− Bước 1: làm trơn ảnh bằng cách nhân chập với bộ lọc Gauss.

− Bước 2: lấy đạo hàm bặc nhất của kết quả ở bước 1.

− Bước 3: loại bỏ một số điểm dư thừa.

− Bước 4: áp dụng ngưỡng.

Kết quả của phương pháp tách biên Canny:

Hình 4.7: Tách biên bằng phương pháp Canny

Ta nhận thấy rằng phương pháp Canny này tách biên ảnh rất hiệu quả và đầy đủ các đường biên trong hình và phù hợp với yêu cầu luận văn.

b) Dò biên lấy tọa độ

Sau khi có được một bức ảnh tách biên theo phương pháp Canny ta cần xác định các tọa độ của biên theo một trình tự nhất định. Nghĩa là các tọa độ của cùng một đường biên phải liên tiếp nhau như vậy khi vẽ bức ảnh sẽ được liên tục.

Quá trình dò biên có thể tóm tắt qua các bước sau:

Chương 4: Chương trình giải thuật

Hình 4.8: Tìm điểm biên đầu tiên trên đường biên

− Bước 2: Thành lập một ma trân có kích thước 3x3 có tâm là điểm biên được phát hiện ở trên.

Hình 4.9: Lập ma trận 3x3

− Bước 3: Thực hiện việc tìm các điểm biên lân cận và xóa điểm biên cũ trên đường biên đó cho đến hết đường biên.

Hình 4.10: Dò biên đến điểm cuối đường biên

Ở bước này, nếu như các điểm trong mặt nạ 3x3 không có điểm nào có giá trị 255 thì sẽ tiếp tục hình thành tiếp một mặt nạ 5x5 để xét vì khi tách biên bằng phương pháp Canny thường sẽ bị mất đi 1 pixel ở những vị trí gấp khúc của đường cong.

Hình 4.11: Quá trình dò biên đến một biên mới

Trên thực tế, ảnh được máy tính xử lí là ảnh số, mỗi điểm ảnh là một pixel có kích thước vào khoảng 0,26mm x 0,26mm. kích thước này tương đối lớn để khiến cá đường của bức ảnh được vẽ không liên tục. Vì khi tách biên thì các đường thẳng và cong trong bức ảnh được tạo nên từ rất nhiều pixel ảnh vuông. Để khắc phục, luận văn chọn cách lưu những tọa độ liên tiếp để vẽ cách nhau những khoảng cách bằng một số pixel do người dùng chọn.

Bên cạnh đó, khi thực hiện tách biên bằng phương pháp Canny sẽ xuất hiện những đường biên ngắn không mong muốn hoặc những điểm nhiễu. Như vậy, ta cần loại bỏ các thành phần này. Luận văn loại bỏ những yếu tố này bằng cách sẽ loại bỏ đi những chuỗi tọa độ của một biên có số lượng điểm ít hơn số lượng điểm do người dùng quy định tùy thuộc vào mức độ nhiễu của mỗi bức ảnh khác nhau.

Ảnh gốc:

Hình 4.13: Ảnh gốc. Ảnh qua quá trình dò biên:

Hình 4.14: Ảnh tách từ phương pháp Canny

Đối với ảnh màu thì có một số ảnh sau khi đi qua giải thuật tách biên Canny sẽ xuất hiện nhiễu là những điểm, những đường biên không mong muốn.

Ảnh qua quá trình lọc và loại bỏ những điểm và những đường biên không cần thiết.

Hình 4.15: Ảnh lọc và khoảng cách giữa các điểm cần vẽ là 1pixel

Chương 4: Chương trình giải thuật

Ta thấy, khi đi qua chương trình dò biên và tách lọc những điểm những đường không mong muốn thì ảnh bây giờ là tập hợp những tọa độ điểm đã được xác định. 4.2.3 Lấy tọa độ vẽ đầy ảnh

a) Chuyển sang ảnh nhị phân

Việc lấy tọa độ phải được thực hiện trên ảnh nhị phân chỉ có hai giá trị là 0 và 1. Ảnh xám cũng có hai màu đen trắng nhưng về mặt giá trị thì nó có đến 255 giá trị thay vì chỉ có hai giá trị như ảnh nhị phân. Như vậy, muốn chuyển từ ảnh xám sang ảnh nhị phân ta cần có một ngưỡng để so sánh các giá trị mức xám để đưa chúng về giá trị 0 hoặc 1 của ảnh nhị phân. Đối với những bức ảnh khác nhau sẽ có các ngưỡng khác nhau. Do đó, khi thực hiện chuyển từ ảnh xám sang ảnh nhị phân phải thử nhiều ngưỡng khác nhau đến khi được bức ảnh nhị phân tốt nhất trong các ngưỡng.

Hình 4.17: Ảnh xám được chuyển qua ảnh nhị phân b) Lấy tọa độ

Việc lấy tọa độ ở chế độ vẽ đầy ảnh khác hẳn với việc lấy tọa độ của chế độ vẽ biên. Việc lấy tọa độ sẽ được thực hiện theo hàng ngang lần lượt từ trái qua phải và sau đó đi ngược lại như hình 4.18.

Hình 4.18: Cách lấy tọa độ vẽ đầy ảnh Việc lấy tọa độ được thực hiện qua các bước sau:

− Bước 1: Dò tìm điểm có giá trị 255 đầu tiên trong chuỗi.

Hình 4.19: Bước 1 lấy tọa tô ảnh

− Bước 2: Lấy tọa điểm bên phải điểm vừa tìm được sau đó xóa luôn điểm đó. Cứ tiếp tục cho đến khi điểm bên phải không còn giá trị 255 nữa.

Hình 4.20: Bước 2 lấy tọa tô ảnh

Chương 4: Chương trình giải thuật

Hình 4.21: Bước 3 lấy tọa tô ảnh

− Bước 4: Lấy tọa độ điểm bên trái điểm vừa tìm được và thực hiện cho đến khi điểm bên trái không còn giá trị 255.

Hình 4.22: Bước 6 lấy tọa tô ảnh

− Bước 5: Xét các điểm theo thứ tự như hình 4.23 xem có điểm nào có giá trị 255.

Hình 4.23: Bước 5 lấy tọa tô ảnh

Chương 4: Chương trình giải thuật

Đề tài luận văn gồm có hai phần giải thuật. Đó là xử lí ảnh lấy tọa độ đối tượng trên máy tính và giải thuật điều khiển động cơ của vi điều khiển. Do đó, để đơn giản cho quá trình xử lí và hạn chế thời gian tính toán ở vi điều khiển thì luận văn chọn phương án sẽ tính toán tọa độ và chuyển sang số xung cần hoạt động ở mỗi động cơ và chuyển thành một chuỗi để có thể truyền xuống vi điều khiển.

Đề tài luận văn điều khiển đồng thời cả hai động cơ bước và chúng hoạt động cùng một lúc. Do đó, luận văn chọn phương án sẽ truyền số xung cho cả hai động cơ cùng một lúc thay vì sẽ truyền hai lần mỗi lần cho một động cơ.

Phạm vi hoạt động tối đa của bàn máy là S(mm). Kích thước của pulley : đường kính D (mm). Mỗi vòng động cơ bước hoạt động cần 3200 xung.

Như vây, số xung P tối đa của động cơ bước cần để đi hết hành trình dài nhất của bàn máy là: .3200 . S P D π =

Với các kích thước của bàn máy lần lượt là: Phạm vi hoạt động tối đa là: 550 (mm). Đường kính pulley: 29,2 mm. Ta có: 550 .3200 19318( ) .29 P xung π = =

Như vậy, số xung tối đa cần để đi hết hành trình là một số gồm 5 chữ số. như vậy, để truyền dữ liệu cho cả hai động cơ ta cần ít nhất một chuỗi gồm 10 chữ số. Bên cạnh đó, vì động cơ hoạt động ở cả hai chế độ là chạy thuận và chạy nghịch nên ta cần thêm 2 chữ số để quy định dữ liệu điều khiển là gì. Như vậy, dữ liệu được truyền từ máy tính xuống vi điều khiển có đến 12 chữ số. Chữ số đầu tiên quy ước chiều quay

số tiếp theo là số xung mà vi điều khiển cần cấp cho động cơ thứ nhất hoạt động, chữ số thứ 7 tương ứng với chữ số thứ nhất nhưng nó quy định cho động cơ thứ hai và 5 chữ số còn lại là số xung cần thiết để vi điều khiển cấp cho động cơ thứ hai.

Sau quá trình lấy tọa độ, thì tọa độ sẽ được lưu vào hai mảng X và Y. Để chuyển thành chuỗi dữ liệu truyền đi cần thực hiện các bước sau:

− Bước 1: Lấy tọa độ sau trừ tọa độ trước cho hai mảng tọa độ X và Y, ta được hiệu tọa độ giữa hai điểm cần vẽ liên tiếp nhau.

− Bước 2: So sánh các hiệu tọa độ thu được là âm hay dương để quy định chiều quay động cơ bằng hai biến Dir_1 và Dir_2 như sơ đồ hình 4.25. Từ khoảng cách giữa các tọa độ liên tiếp chuyển sang tọa độ thực tế và quy đổi chúng sang số xung cần thiết cần cấp cho mỗi động cơ theo công thức sau:

.p .0,226 .N .3200 8 91 d d n d C = = ≈ (xung) Với: n: là số xung cần cấp (xung).

d: là hiệu tọa độ giữa hai điểm.

p: kích thước của 1 pixel (trên máy tính là 0,226mm). C: quãng đường khi pulley quay 1 vòng (mm).

N: số xung của động cơ khi quay 1 vòng (xung).

− Bước 3: Biến đổi thành chuỗi dữ liệu truyền đi.

ir _1.1000000000000 .1000000 ir _ 2*100000

A D= + nX + D + nY

Hình 4.25: Sơ đồ giải thuật chuyển từ chuỗi tọa độ sang chuỗi dữ liệu truyền đi

Đối với A1 và A7 thì được quy ước sau:

− A1 và A7 bằng 1: cả hai động cơ chạy lùi về phía góc tọa độ

− A1 và A7 bằng 2: cả hai động cơ chạy ra xa góc tọa độ.

− A1 và A7 bằng 3: dữ kiệu yêu cầu nhấc bút.

− A1 và A7 bằng 4: dữ liệu yêu cầu đặt bút xuống.

Còn từ A2 đến A6 và từ A7 đến A12 là số xung mà vi điều khiển cấp cho động cơ.

Chương 4: Chương trình giải thuật

Một phần của tài liệu LUẬN VĂN ĐH BÁCH KHOÁ: THIẾT KẾ BÀN MÁY 2D (Trang 33)