Xử lý ảnh (XLA) là đối tượng nghiên cứu của lĩnh vực thị giác máy, là quá trình biến đổi từ một ảnh ban đầu sang một ảnh mới với các đặc tính và tuân theo ý muốn của người sử dụng. Xử lý ảnh có thểể̉ gồm quá trình phân tích, phân lớp các đối tƣợng, làm tăng chấấ́t lượng, phân đoạn và tách cạnh, gán nhãn cho vùng hay quá trình biên dịch các thông tin hình ảnh của ảnh.
Cũng như xử lý dữ liệu bằng đồ hoạ, xử lý ảnh số là một lĩnh vực của tin học ứng dụng. Xử lý dữ liệu bằng đồ họa đề cập đến những ảnh nhân tạo, các ảnh này được xem xét như là một cấấ́u trúc dữ liệu và được tạo bởi các chương trình. Xử lý ảnh số bao gồm các phương pháp và kỹ thuật biến đổi, đểể̉ truyền tải hoặc mã hoá các ảnh tự nhiên. Mục đích của xử lý ảnh gồm:
Biến đổi ảnh làm tăng chấấ́t lượng ảnh.
Tự động nhận dạng ảnh, đoán nhận ảnh, đánh giá các nội dung của ảnh.
Nhận biết và đánh giá các nội dung của ảnh là sự phân tích một hình ảnh thành những phần có ý nghĩa đểể̉ phân biệt đối tượng này với đối tƣợng khác, dựa vào đó ta có thểể̉ mô tả cấấ́u trúc của hình ảnh ban đầu. Có thểể̉ liệt kê một số phương pháp nhận dạng cơ bản như nhận dạng ảnh của các đối tượng trên ảnh, tách cạnh, phân đoạn hình ảnh,… Kỹ thuật này đƣợc dùng nhiều trong y học (xử lý tế bào, nhiễm sắc thểể̉), nhận dạng chữ trong văn bản
5.2.1 Quy trình xử lý ảnh
Hình 5.1 : Các bước xử lý ảnh
Thu nhận ảnh: Đây là công đoạn đầu tiên mang tính quyết định đối với quá trình XLA. Ảnh đầu vào sẽ được thu nhận qua các thiết bị như camera, sensor, máy scanner,v.v… và sau đó các tín hiệu này sẽ được số hóa. Việc lựa chọn các thiết bị thu nhận ảnh sẽ phụ thuộc vào đặc tính của các đối tượng cần xử lý. Các thông số quan trọng ở bước này là độ phân giải, chấấ́t lượng màu, dung lượng bộ nhớ và tốc độ thu nhận ảnh của thiết bị
Tiền xử lý: Ở bước này, ảnh sẽ được cải thiện về độ tương phản, khử nhiễu, khử bóng, khử độ lệch,v.v… với mục đích làm cho chấấ́t lượng ảnh trở lên tốt hơn nữa, chuẩn bị cho các bước xử lý phức tạp hơn về sau trong quá trình XLA. Quá trình này thường được thực hiện bởi các bộ lọc.
biên hay các vùng liên thông. Tiêu chuẩn đểể̉ xác định các vùng liên thông có thểể̉ là cùng màu, cùng mức xám v.v… Mục đích của phân đoạn ảnh là đểể̉ có một miêu tả tổng hợp về nhiều phần tử khác nhau cấấ́u tạo lên ảnh thô.
Tách các đặc tính: Kết quả của bước phân đoạn ảnh thường được cho dưới dạng dữ liệu điểể̉m ảnh thô, trong đó hàm chứa biên của một vùng ảnh, hoặc tập hợp tấấ́t cả các điểể̉m ảnh thuộc về chính vùng ảnh đó. Trong cả hai trường hợp, sự chuyểể̉n đổi dữ liệu thô này thành một dạng thích hợp hơn cho việc xử lý trong máy tính là rấấ́t cần thiết. Đểể̉ chuyểể̉n đổi chúng, câu hỏi đầu tiên cần phải trả lời là nên biểể̉u diễn một vùng ảnh dƣới dạng biên hay dƣới dạng một vùng hoàn chỉnh gồm tấấ́t cả những điểể̉m ảnh thuộc về nó. Biểể̉u diễn dạng biên cho một vùng phù hợp với những ứng dụng chỉ quan tâm chủ yếu đến các đặc trong hình dạng bên ngoài của đối tượng. Chúng ta còn phải đưa ra một phương pháp mô tả dữ liệu đã được chuyểể̉n đổi đó sao cho những tính chấấ́t cần quan tâm đến sẽ được làm nổi bật lên, thuận tiện cho việc xử lý chúng.
Nhận dạng và giải thích: Đây là bước cuối cùng trong quá trình XLA. Nhận dạng ảnh có thểể̉ đƣợc nhìn nhận một cách đơn giản là việc gán nhãn cho các đối tƣợng trong ảnh. Ví dụ đối với nhận dạng chữ viết, các đối tƣợng trong ảnh cần nhận dạng là các mẫu chữ, ta cần tách riêng các mẫu chữ đó ra và tìm cách gán đúng các ký tự của bảng chữ cái tương ứng cho các mẫu chữ thu được trong ảnh. Giải thích là công đoạn gán nghĩa cho một tập các đối tượng đã được nhận biết.
Chúng ta cũng có thểể̉ thấấ́y rằng, không phải bấấ́t kỳ một ứng dụng XLA nào cũng bắt buộc phải tuân theo tấấ́t cả các bước xử lý đã nêu ở trên, ví dụ như các ứng dụng chỉnh sửa ảnh nghệ thuật chỉ dừng lại ở bước tiền xử lý. Một cách tổng quát thì những chức năng xử lý bao gồm cả nhận dạng và giải thích thường chỉ có mặt trong hệ thống phân tích ảnh tự động hoặc bán tự động, được dùng đểể̉ rút trích ra những thông tin quan trọng từ ảnh, ví dụ như các ứng dụng nhận dạng ký tự quang học, nhận dạng chữ viết tay v.v…
5.2.2 Những vấn đề cơ bản trong xử lý ảnh
a) Nắn chỉnh biến dạng
Ảnh thu nhận thường bị biến dạng do các thiết bị quang học và điện tử
Đểể̉ khắc phục người ta sử dụng các phép chiếu, các phép chiếu thường b) Khử nhiễu
Có 2 loại nhiễu cơ bản trong quá trình thu nhận ảnh
- Nhiễu hệ thống: là nhiễu có quy luật có thểể̉ khử bằng các phép biến đổi
- Nhiễu ngẫu nhiên: vết bẩn không rõ nguyên nhân, ta khắc phục bằng các phép lọc
c) Chỉnh mức xám
Nhằm khắc phục tính không đồng đều của hệ thống gây ra. Thông thường có 2 cách tiếp cận.
- Giảm số mức xám: Thực hiện bằng cách nhóm các mức xám gắn nhau thành 1 bó. Trường hợp chỉ có 2 mức xám thì chính là chuyểể̉n về ảnh đen trắng. Ứng dụng : In ảnh màu ra máy in đen trắng
- Tăng số mức xám: Thực hiện nội suy ra các mức xám trung gian bằng kỹ thuật nội suy. Kỹ thuật này nhằm tăng độ mịn cho ảnh d) Phân tích ảnh
Là khâu quan trọng trong quá trình xử lý ảnh đểể̉ tiến tới hiểể̉u ảnh. Trong phân tích ảnh việc trích chọn đặc điểể̉m là một bước quan trọng. Các đặc điểể̉m của đối tượng được trích chọn tuỳ theo mục đích nhận dạng trong quá trình xử lý ảnh. Có thểể̉ nêu ra một sô đặc điểể̉m của ảnh sau đây:
- Đặc điếm không gian: Phân bô mức xám, phân bô xác suấấ́t, biên độ, điểể̉m uốn V.V..
- Đặc điểể̉m biến đổi: Các đặc điểể̉m loại này được trích chọn bằng việc thực hiện lọc vùng (zonal filtering). Các bộ vùng được gọi là “mặt nạ 11 đặc điểể̉m ” (feature mask) thường là các khe hẹp với hình dạng khác nhau (chữ nhật, tam giác, cung tròn V.V..)
- Đặc điểể̉m biên và đường biên: Đặc trưng cho đường biên của đối tượng và do vậy rấấ́t hữu ích trong việc trích trọn các thuộc tính bấấ́t biến được dùng khi nhận dạng đối tượng. Các đặc điểể̉m này có thểể̉ được trích chọn nhờ toán tử gradient, toán tử la bàn, toán tử Laplace, toán tử “chéo không” (zero crossing) V.V..
e) Nhận dạng
Nhận dạng tự động (automatic recognition), mô tả đồi tượng, phân loại và phân nhóm các mẫu là những vấấ́n đề quan trọng trong thị giác máy, được ứng dụng trong nhiều ngành khoa học khác nhau. Tuy nhiên, một câu hỏi đặt ra là: mẫu (pattern) là gì? Watanabe, một trong những người đi đắu trong lĩnh vực này đà định nghĩa: “Ngược lại với hỗỗ̃n loạn (chaos), mẫu là một thực thểể̉ (entity),
gọi nào đó”. Ví dụ mẫu có thểể̉ là ảnh của vân tay, ảnh của một vật nào đó được chụp, một chữ viết, khuôn mặt người hoặc một ký đồ tín hiệu tiếng nói. Khi biết một mẫu nào đó, đểể̉ nhận dạng hoặc phân loại mẫu đó có thểể̉:
Hoặc phân loại có mẫu (supervised classification), chẳng hạn phân tích phân biệt (discriminant analyis), trong đó mẫu đắu vào được định danh như một thành phần của một lớp đã xác định.
Hoặc phân loại không có mẫu (unsupervised classification hay clustering) trong đó các mâu được gán vào các lớp khác nhau dựa trên một tiêu chuẩn đồng dạng nào đó. Các lớp này cho đến thời điểể̉m phân loại vẫn chưa biết hay chưa được định danh.
Hệ thống nhận dạng tự động bao gồm ba khâu tương ứng với ba giai đoạn chủ yếu sau đây:
- Thu nhận dữ liệu và tiền xử lý. - Biểể̉u diễn dữ liệu.
- Nhận dạng, ra quyết định.
- Bốn cách tiếp cận khác nhau trong lý thuyết nhận dạng là: - Đối sánh mẫu dựa trên các đặc trưng được trích chọn. - Phân loại thống kê.
- Đối sánh cấấ́u trúc.
- Phân loại dựa trên mạng nơ-ron nhân tạo.
Trong các ứng dựng rõ ràng là không thểể̉ chỉ dùng có một cách tiếp cận đơn lẻ đế phân loại “tối ưu” do vậy cẩn sử dụng cùng một lúc nhiều phương pháp và cách tiếp cận khác nhau. Do vậy, các phương thức phân loại tổ hỢp hay được sử dụng khi nhận dạng và nay đã có những kết quả có triểể̉n vọng dựa trên thiết kê các hệ thống lai (hybrid system) bao gồm nhiều mô hình kết hợp.
5.3 Xử lý ảnh sử dụng thư viện EmguCV 5.3.1 Giới thiệu hệ thống phân loại sản phẩm
Hình 5.3 : Các bước phân loại sản phẩm
Camera được sử dụng trong hệ thống nhằm mục đính chụp và gửi ảnh về cho máy tính xử lý ảnh. Sau khi xử lý ảnh , máy tính sẽ tính toán các dữ liệu cần thiết và gửi nó xuống cho bộ điều khiểể̉n trung tâm. Dựa trên các thông tin được gửi xuống, bộ điều khiểể̉n trung tâm sẽ ra lệnh cho cơ cấấ́u chấấ́p hành thực thi việc phân loại sản phẩm
Hình 5.4 : Các mẫu sản phẩm cần phân loại
San phâm cân phân loai trong đô an nay la cac mâu gỗ hinh chư nhât co cung mau săc, cung chiêu rông, chiêu cao, co kich thươc chiêu dai khac nhau. Vi vây phương phap phân loai san phâm bon em sư dung ơ đây la phân loai theo hinh dang va kich thươc chiêu dai vât.
5.3.2 Phân tích hệ thống
Vât cân phân loai đươc vân chuyển nhơ băng tai, khi qua cam biên phat hiên co vât thi băng tai se dưng va tay may Kestrel se di chuyển đên vi tri chup anh để chup va đưa anh vê may tinh để xư ly. Khi may tinh nhân anh tư camera se xư ly anh nhơ phân mêm viêt trên may tinh để xac đinh đươc kich thươc cua vât la bao nhiêu, co thoa man kich thươc cân phân loai. Nêu kich thươc cua vât thao man thi phân mêm se xư ly tiêp va gưi toa đô tâm va goc lêch cua vât tơi PLC để điêu khiển tay may Kestrel di chuyển đên vi tri găp vât. Ngươc lai nêu kich thươc cua vât không thao man thi may tinh se gưi tin hiêu cho băng tai chay tiêp để bo qua vât chơ vât tiêp theo đên để xư ly. Xong qua trinh xư ly thi toa đô tâm, goc lêch cung như anh đa qua xư ly se đươc hiển thi lên giao diên windows form.
5.3.3 OpenCV và EmguCV
a) OpenCV
OpenCV là một thư viện mã nguồn mở hàng đầu cho thị giác máy tính (Computer Vision), xử lý ảnh (Image Processing) và máy học (Machine Learnning). Nó chứa hàng ngàn thuật toán tối ưu hoá , trong đó cung cấấ́p một bộ công cụ phổ biến cho các ứng dụng về thị giác máy tính. OpenCV đang được sử dụng trong rấấ́t nhiều ứng dụng , từ khâu hình ảnh Street View của Google tới việc chạy các chương trình nghệ thuật tương tác , nhận diện khuôn mặt , hay Robot , xe hơi tự lái …….
Hình 5.5 : Thư viện OpenCV với ứng dụng nhận dạng khuôn mặt
OpenCV là một API được viết bằng C++ bao gồm các module chứa hàng loạt các chức năng , từ chuyểể̉n đổi màu sắc hình ảnh ở mức độ thấấ́p tới các công cụ máy học cấấ́p cao
b) EmguCV
EmguCV là một cross flatform .NET, một thư viện xử lý hình ảnh mạnh dành riêng cho ngôn ngữ C#. Cho phép gọi được chức năng của OpenCV là từ .NET. Tương thích ngôn ngữ như: C#, VB, VC ++, Iron Python... Wrapper có thểể̉ được biên dịch bởi Visual Studio, Xamarin Studio và Unity. Nó có thểể̉ chạy trên Windows, Linux, Mac OS X, iOS, Android và Windows Phone
Hình 5.6 : EmguCV : 1 wrapper của OpenCV
Trong đồ án này, EmguCV được nhóm chúng em viết dưới dạng file dll, sau đó đóng gói và sử dụng trong phần mềm giám sát giao diện
5.3.4 Xác định khoảng cách trong không gian 3D
Đểể̉ xác định được khoảng các thức tế trong không gian 3D thông qua xử lý ảnh, người ta thường sử dụng phương pháp camera calibration. Các phương pháp calibration kinh điểể̉n dựa trên mô hình calibration đặc biệt, tức là ta biết được kích thước và vị trí đối tượng trong một hệ tọa độ nhấấ́t định. Các đặc trưng khác (chẳng hạn như góc, đường...) được tách từ ảnh của mô hình hiệu chỉnh camera.
Tuy nhiên các phương pháp này phức tạp và thường dùng cho trường hợp camera phải di chuyểể̉n nhiều vị trí đểể̉ chụp và xử lý ảnh. Còn ở đồ án này camera chỉ cố định tại 1 điểể̉m duy nhấấ́t chụp ảnh, và hơn nữa mắt của camera được đặt song song so với mặt phẳng chứa vật cho nên chúng em chỉ dùng các phương pháp hình học đơn giản đểể̉ lấấ́y được tỷ lệ của kích thước thật của vật so với kích thước trên ảnh. Nhóm đã đưa vào 1 mặt phẳng có dạng hệ tọa độ xy như hình vẽ. Mặt phẳng này được được đặt ngay trên băng tải đểể̉ tiện cho việc tính toán.
Hình 5.7 : Mặt phẳng tọa độ dùng xác định tỷ lệ thực vả ảnh
Trong mặt phẳng này, kích thước của mỗỗ̃i ô vuông có đơn vị là 2cm. Thông qua camera chúng em căn chỉnh sao tọa độ gốc của ảnh trùng với tọa độ gốc của hệ tọa độ Oxy mà nhóm đánh dấấ́u trên mặt phẳng này. Dựa trên ảnh chụp lại mặt phẳng này, ta đo được 1 ô vuông này có kích thước khoảng 294 pixels. Đểể̉ tăng tính chính xác của phép đo này ta đo làm nhiều lần đểể̉ tính ra kích thước trung bình và sai số tuyệt đối của nó
Đểể̉ tìm ra tọa độ của tay máy trên tọa độ ảnh, ta tiến hành đo tọa độ của tâm tay máy so với gốc tọa tọa độ trên mặt phẳng thực thì ta có bảng sau
Bảng 5.2 : Liệt kê kết quả đo tọa độ tay máy
Hình 5.8 : Vị trí giữa camera và vật
Tuy nhiên khi chụp ảnh thì điểể̉m xác định tâm vật cao so với mặt phẳng tọa độ thực tế 1 đoạn h= 5cm. Nếu chỉ dựa trên tọa độ này sẽ dẫn đến tọa độ bị sai, làm cho tay máy đi đến điểể̉m X đểể̉ gắp vật thay vì đến điểể̉m V. Vì vậy ta cần chia tọa độ xy cho tỷ lệ (H-h)/H đểể̉ tay máy có thểể̉ đến đúng điểể̉m V. Với h =5cm là chiều cao của vật và H = 50 cm là khoảng cách từ mắt camera đến mặt phẳng. Như vậy ta cần chia cho tỉ lệ 9/10
Như vậy ta có công thức đểể̉ suy ra tọa độ tâm của vật sau khi xử lý ảnh như sau:
Tọa độ trục X : 17.92+(x*292.4/2)*10/9 (cm) Tọa độ trục Y : 8.18+(y*292.4/2)*10/9 (cm)
Về phần xác định chiều dài của vật qua xử lý ảnh, ta cũng tiến hành đo chiều dài thực tế và chiều dài trên ảnh của vật và tính được tỉ lệ. Đối với mỗỗ̃i phép đo ta lấấ́y giá trị trung bình cộng 5 lần và sau đó chia 2 giá trị trung bình cho nhau đểể̉ lấấ́y tỉ lệ giữa kích thước ảnh và kích thước thực tế.
5.3.5 Thuật toán xử lý ảnh
Hình 5.9 : Lưu đồ xử lý ảnh của hệ thống
- Căt bo phân thưa,loc và nhị phân anh : Phân mêm xư ly anh trên may tinh se căt bo phân thưa năm ngoai băng tai đông thơi loc cac thanh phân nhiêu cua anh, sau đó đưa ảnh về mức xám và nhị phân thành ảnh đen trắng
- Tìm các đường bao trong ảnh nhị phân : Dựa trên danh giới giữa 2 màu đen và trắng, sẽ xác định được các đường viền trong ảnh bao gồm cả vật, ta giữ lại các đường bao khép kín. Sau đó dùng hàm có sẵn đểể̉ xác định