II. Labview và xử lý ảnh dùng Labview
2.2.3 Cấu trúc lập trình xử lý và xuất giá trị trong Labview
Hình 2.31: Cấu trúc xử lý ảnh theo phương pháp học mẫu.
Có nhiều phương pháp xử lý hình ảnh khác nhau, trong đó phương pháp học mẫu là phương pháp đơn giản dễ thực hiện nhất. Chỉ cần tìm kiếm hình đã được ấn định, sau đó tìm kiếm hình đã lưu, tùy thuộc vào thư viện và mức độ chính xác ta có thể tìm được hình ảnh mong muốn, tiếp theo đó là xuất giá trị vị trí ảnh dựa vào số pixel treo các chiều trục tọa độ, qua quá trình tính toán và chuyển đổi, giá trị được xuất ra một cỗng com có xác định.
Đã có những thư viện ãnh có sẵn sẽ giúp cho chúng ta đi sâu vào nghiên cứu cấu trúc Labview giúp cho thuật toán được nhỏ gọ n và hiệu suất cao. Thay vào đó nếu như thay hình ảnh bằng âm thành thì sẽ đưa chúng ta đi những bước tiến xa hơn đến công nghệ xe tự động và hệ thố ng tự vận hành bằng giọng nói.
a. Khai báo
Ở mỗi một hàm thì cần phải khái báo trước thi đưa vào sử dụng tương tự lập trình trong C/C+, khi khai báo cần phải đặt các biến khác nhau và lựa chọn chất lượng hình ảnh theo kèm. Vì khai báo nên các giá trị không chạy xuyên suốt chương trình ta không c ần phải đặt trong hàm While tránh gây tổn hao bộ nhớ không cần thiết. Ở chương trình nhóm đặt khai báo trong cấu trúc chuổi ở bước (0): Bước đầu tiên.
Ảnh thu thập từ camera Xử lý và xuất giá trị Chuyển thành ảnh xám Thiết lập hình mẫu Tìm kiếm
Hình 2.32: khai báo các hàm
Khi khai báo hình ảnh ta cần phải quan tâm chất lượng hình ảnh, vì mục đích hướng tới là đưa về ảnh xám nên ta lựa chọn tất cả các giá trị là Grayscale (U8). Mỗi một hàm cần phải có tên khác nhau để tránh gây nhầm lẫn.
Khi khai báo hoàn tất để đường truyền được xuyên suốt thì phải nối dây để lệch hàm được thực thi. Sử dụng Add Sequence Local để dòng truyền được đi đi tiếp, nếu không sử dụng lệnh này chương trình sẽ bị ngắt quãng.
Hình 2.34: Kết nối trực tiêp dựa vào Add Sequence Local
Khi sử dụng lệnh Add Sequence Local có thể thấy ngay ưu điểm là rất dễ thấy được dòng truyền và đơn giản trong công tác sửa chữa, xây dựng chương trình. Nhưng khi thực thi một chương trình với hàng chục hàm thì đây là mối nguy hiểm lớn, các Add Sequence Local đan xen vào nhau, các đây rất nhiều làm rối người lập trình. Để có thể thực hiện như C/C+ khi khai báo xong có thể lấy ra sử dụng bất cứ khi nào cần phải sử dụng đến Local Variable, các biến địa phương này được thực hiện một cách đơn giản nhưng thuận tiện, không một giây nào được kết nối nhưng dữ liệu lại được truyền tải chính xác.
Hình 2.35: Sử dụng Local Variable
Không những thực hiện trong khai báo, ta cũng có thể sử dụng biến địa phương trong hình ảnh, số liệu… đều có thể thực thi dễ dàng. Để làm được điều này kích chuột phải lên đối tượng muốn làm biến create Local Variable.
Tương tự ta thực hiện khai báo các biến cho hàm màu Green, Blue, trộn màu, cắt ảnh….
- Khai báo cho chế độ màu Green.
Hình 2.36: Khai báo chế độ màu Green - Khai báo cho sự kết hợp hai chế độ màu.
Hình 2.37: Khai báo cho sự kết hợp hai chế độ màu
- Khai báo cho chế độ màu Blue.
Hình 2.38: Khai báo cho chế độ màu Blue - Khai báo cho chế độ xác nhập màu Green.
Hình 2.39: Khai báo cho chế độ xác nhập màu Green - Khai báo cho chế độ xác nhập màu Blue.
- Khai báo chế độ cắt ảnh.
Hình 2.41: Khai báo cho chế độ cắt ảnh - Khai báo chế độ mở camera.
Hình 2.42: Khai báo cho chế độ mở camera - Khai báo thiết lập cổng camera.
Hình 2.43: Khai báo thiết lập cổng camera.
Ta sự dụng thêm hàm chỉnh lại độ nhiểu của hình ảnh đi kèm vì có nhiều sự phản sạ trong hình ảnh, hàm này giúp ảnh hiện thị rỏ nét và tốc độ nhanh hơn.
b. Xử lý tín hiệu hình
Hình ảnh thu thập từ camera bị phụ thuộc rất nhiều ánh sáng mặt trời, thời tiết, phản xạ ánh sáng của mặt đường vì thế thiết kể một bức hình phủ hợp cho việc tiềm kiếm là việc đầu tiên cần phải thực hiện. Có nhiều cách lựa chọ n để xử lý một hình ảnh cho phù hợp với các đề tài khác nhau, ở đây nhóm chọn phương án đảo ngược ảnh xám để xây dựng một hình ảnh có thể thực thi được.
Hình 2.44: Kết quả xử lý ảnh
Để thực hiện được xử lý ảnh này c ần phải qua nhiều bước thực nghiệm và tính toán chính xác giá trị màu của từng ảnh, nếu không nhiễ sẽ gây ra rất nhiều khó khăn. Hình trên được thực hiện khi ta ghép 2 màu trong 3 mày cơ bản đó là màu xanh lá và màu xanh da trời, tùy thuộc vào mức độ của từng màu mà kết quả thu được sẽ khác nhau và sẽ có thêm các hình ảnh nhiễu đi kèm.
Để thực hiện được các yêu cầu gắt gao trên nhóm thực hiện và xây dựng một cấu trúc xử lý như hình 2.11
Hình 2.45: Quá trình tiền xử lý ảnh
Hình thu thập từ camera
Lấy màu Green từ camera
Lấy màu Blue từ camera
Tính toán hệ số phụ thuộc màu Blue Tính toán hệ số phụ
thuộc màu Green
Hình đã được lọc và phân lớp
Tiếp tục sử dụng các biến địa phương làm lợi thế cho xử lý tín hiện hình ảnh vốn đã nặng nếu như hình ảnh liên tục, để sử dụng ưu điểm của Labview có thể thay đổi giá trị trong quá trình chạy chương trình, ta thay các giá trị tính toán bằng các thanh trượt, giúp tăng nhanh khả năng đáp ứng trong nhiều môi trường có lượng bức xạ mặt trời khác nhau.
Hình 2.46: Tiền xử lý tín hiệu.
Cách lấy màu của Labview được tích hợp sẵn trong một hàm IMAQ ExtractSingleColorPlane, hàm này được tích hợp rất nhiều màu mà từ các ứng dụng khác nhau có thể lấy các màu khác nhau. Chính lúc này hình ảnh từ 32-bit chuyển thành 8-bit như các biến đã định ở trước, giúp cho chương trình giảm tải được chất lượng hình, đồng thời làm cho chương trình thực hiện không gian xa hơn do tải thấp hơn.
Hình 2.47: Các màu và giá trị trong hàm IMAQ ExtractSingleColorPlane. - Labview nhận tín hiệu liên tục từ camera chưa xử lý.
Hình 2.48: Labview nhận tín hiệu liên tục từ camera.
Hình ảnh là vạch đường dùng để nhận dạng trong quá trình xử lý, có thể thấy đâu là hình 32bit, nếu đưa và xử lý thì khối lượng bộ nhớ rất nặng và độ chình xác không được cao vì mức độ trùng màu rất lớn và những màu tương tự rất nhiều. Hình ảnh một phần cũng phụ thuộc vào chất lượng camera, và tốc độ tryền của camera, màn hình xử lý. Khi các yêu cầu trên được cải thiện thì độ nhiễu sẽ giảm rỏ rệt và khả năng nhận dạng làn đường càng lớn.
- Sau khi nhận tín hiệu từ camera dòng truyền sẽ đi thành hai đường qua hệ thống sử lý mày Green và Blue và dòng truyền tiếp tục được qua hệ số nhân với tỉ lệ nhân được xác định , xuất ra camera với Hình 2.49 .
Mỗi một môi trường và điều kiện khác nhau ta lại lìm được một hệ số khác nhau, ở đây là 6.56522. Số này nói lên trong thanh 10 thì mức độ hình là 6.56522. Tương đương tỉ lệ phần trăm hình Green trong hình nhận được.
- Dòng truyền thứ hai qua xử lý màu Blue được thông qua hệ số nhân, thu được kết quả như hình 2.50.
Hình 2.50: Camera được xử lý với hệ số nhân màu Green
Kết quả thu được là màu trắng sữa. Nhưng ở đây là màu trắng lấy từ camera, là mức độ ánh sáng Green được trích ra. Hệ số được xác định cho màu Green là 1.0084. Ở bước này là quan trọng nhất, vì chất lượng đầu ra sẽ ảnh hưởng đến cả hệ thống, nếu như hiệu chỉnh không đúng thì nhiễu là vấn đề sẽ gặp phải, các hình ảnh không đồng bộ, bị cắt và mất bì bức xạ của mặt đường,
Để thực hiện tốt khâu tiền xử lý đòi hỏi người lập trình cần phải thay đổi nhiều lần cấu trúc c ủa các hàm, thay thế nhiều hàm khác nhau, đọc và tìm kiếm trong phần Example để tìm ra hướng giải quyết thích hợp. Tất cả đều nằm trong thư viện tiện ích màu được Labview tính toán và đưa ra sẵn.
- Khi đã phân chia được màu Green và Blue ta kếp hợp hai phân ảnh lại để được kết quả như mong muốn.
Hình 2.51: Màu ảnh qua hệ thống tiền xử lý.
Đây là một kết quả mong muốn với hình 8-bit. Mức độ tương phản của 2 màu lớn tạo điều kiện cho quá trình tìm kiếm mức độ chính xác cao. Hình ảnh qua bước tiền xử lý hầu như nhiễu không còn. Thay vào đó là sự đối lập màu cao giữa trắng và đen là màu điển hình để có thể nhận dạng đường.
c. Thiết lập thư viện tìm kiếm
ROI là chức năng thiết lập khung hình trên hình ảnh đang chọn, một ưu điển của ROI là có thể thực thi ngay khi chương trình đang chạy, giúp cho dòng truyền được liên tục. ROI được định nghĩa là hình chử nhật
Thư viện tìm kiếm trên nếu như được xây dựng lâu dài với các hình ảnh là các biển báo tín hiệu, các biển cấm, làng đường ưu tiên, biển báo rẽ… sẽ góp phần không nhỏ cho người lái xe tránh các lỗi đơn giản. Như được biết trên thế giới có rất nhiều cơ sở nghiên cứu đã xây dựng một thư viện hình ảnh lớn góp phần nâng cao chất lượng của xử lý ảnh hiện nay và tương lai.
Sau khi thiết lập được thư viện hình ảnh, ảnh sẽ được lưu. Ở bước này mỗi một cấu điều khiển sẽ được người lập trình tính toàn khác nhau, ở đây nhóm chọ n phương án sử dụng biến địa phương để thực thi vì lý do thư viện không chứa nhiều hình nên có thể lấy làm ảnh chuẩn mak không c ần phải gọi hình và để tiết kiệm bộ nhớ cho các hàm chuyên sâu khác.
- Để chọn được thư viện tìm kiếm sử dụng ROI có chức năng xác định vùng chọn. Chọn hình ảnh cần tương tác Create Property Node ROI, được thục hiện như hình.
Hình 2.53: Thi ết lập ROI
Để thực hiện được ROI ta phải thiết lập vùng chọn trên ảnh muốn thực thi, nếu như không thiết lập hệ thống sẽ quy định toàn bộ khung hình sẽ được lấy . Nếu như thiết lập vùng chọn thì hình chọn phải có diện tích xác định. Cấu trúc này là điều cần
thiết nhất cho chọn thư viện, khi giá trị ROI được thiết lập sẽ trả về giá trị kích thước hình chử nhật.
Sau khi có vùng chọn ROI sẽ cung cấp đầy đủ thông tìn về vùng chúng ta chon, như chiều dài, chiều rộng, vị trí tương ứng với tọa độ hiện có của khung chọn. Giá trị này sẽ được giữ cho đến khi nút nhấn được thiết lập và giá trị True được trả về cho vòng lập, các thông số này sẽ được trả về cho hàm IMAQ Extract VI, hàm trên sẽ cắt một hình tương ứng với giá trị thiết lập đồng thời sẽ lưu trong vùng chúng ta xác định trên máy tính.
Hình 2.54: Thiết lập khung ROI
- Khi nút nhấn được bấm vòng lập có giá trị “True” sẽ thực thi lệnh lưu hình ảnh
Hình 2.55: Giá trị “True” được thiết lập cho vòng l ập
Trong vòng lập có hai bước thực hiện bước thứ nhất là lưu hình và bước tiếp theo là tắt chế độ lưu hình, nếu không có bước này, hệ thống sẽ bắt lưu hình mãi tiếp
tục, không thể ngừng kết quả là máy bị treo. Có thể thay thế bằng vòng lập For cho cấu trúc này , tùy thuộc và khả năng sử dụng các vòng lập để thiết lập các yêu câu cần thiết cho chương trình.
Hình 2.56: Bước xác định giá trị “False” cho vòng lập
Hình 2.57: Hình sau khi được cắt từ camera d. Tìm kiếm theo hình đã lập
Lệnh tìm kiếm là lệnh đòi hỏi nhiều thiết lập như vị trí điểm ảnh, mức độ chính xác tìm kiếm, hình quay và góc quay, số ảnh tìm kiếm…. Tùy thuộc vào từng yêu cầu mà ta có thể chọn những thiết lập cần thết. Có một số giá trị cần phải được định nghĩa trước như : tọa độ, hiện kết quả, góc quay. Chỉ khi các giá trị này được thiết lập thì mới có gái trị trả về để thực hiện điều khiển xe tự động.
Khi nút nhất được bấm thì lệnh tìm kiếm được thực thi với các giá trị cái đặt xác định và có thể thay đổi trong quá trình vận hành.
- Hình được cắt ra từ camera. Hình này được lưu tạm thời vì thế sau mỗi lần dừng chương trình thì hình sẽ bị xóa và yêu c ấu chúng ta thiết lập lại hình ảnh mới.
- Camera đi vào lệnh tìm kiếm. Hình ảnh liên tục này phải phù hợp với ảnh tìm kiếm, như trong chương trình này hình phải là hình 8-bit với hình đã được tiền xử lý ảnh. Một lần nữa Local Variable lại phát huy tác dụng khi được lấy để tiếp tục dòng truyền của dữ liệu.
- Lệnh Settings cho phép thay đổi độ chính xác và các hình có thể tìm kiếm.
Hình 2.59: Mức độ chính xác và số ảnh tìm kiếm
Cho dù số lượng ảnh tìm kiêm có thể bị thay đổi nhưng khi đưa ra dự liệu cho quá trình xử lý tiếp theo thì chương trình sẽ chọn ra hình ảnh có mức độ chính xác nhất.
Hình 2.60: Khi yêu cầu số ảnh tìm là 2
e. Xuất các giá trị mong muố n
Hình 2.62: Hệ thống xử lý hình sau khi tìm ki ếm.
- Matches là một biến địa phương được lấy từ hàm IMAQ Find Pattern 3 VI chứa tất cả các giá trị tích lũy mà ta đã thiết lập trong lệnh tìm kiếm, từ hàm này sẽ trích xuất ra các giá trị mong muốn, lấy đó làm trọng tâm cho trình xử lý tiếp theo.
Để có thể tách một giá trị trong mãng tai phải sử dụng đến Index Array Function để lấy giá trị mong muốn, tiếp theo từ đó sử dụng làm Unbundle By Name Function để lấy giá trị từng hàm một. Ở đây là lấy vị trí theo trục tọa độ là các Pixel tương ứng tìm được, giá trị này là giá trị tâm của hình ảnh.
- Tại vị trí chính xác nhất chương trình sẽ xuất ra giá trị điểm ảnh có tọa độ (x,y).
Hình 2.63: Xác định tạo độ tìm kiếm.
Tọ a độ tìm kiếm được xử lý theo phương x, tùy thuộc vào mỗi thiết bị thu thập hình ảnh khác nhau sẽ có số điểm ảnh khác nhau. Như trong giới hạn của đề án giá trị cực đại của phương x là 800. Vì vậy với mức 8 bít giá trị của truyền trong UART thì không khả thi nên nhóm thực hiện tính theo phần trâm và giá trị cực đại là 100 có thể truyền được tín hiệu.
- Khi thực hiện ta cần phải xác định tọa độ cao nhất có thể có để thiết lập trước thi thực thi lệnh tím phầm trăm: ở đây là 800.
Hình 2.64: Đổi phầm trăm chiều dài.
- Xác định vị trí hình ảnh cho ta giá trị tọa độ của điểm ảnh trung tâm nhưng giá trị không chẵn, tiếp tục sử lý đưa về dang U16 để lấy làm tròn số. Nhân với phầm