Tổng quan Phân vùng ảnh là một bước quan trọng trong nhiều lĩnh vực khác nhau như lĩnh vực hình ảnh y tế medical imaging, phát hiện và nhận dạng đối tượng, hệ thống camera giám sát, hệ
TỔNG QUAN
Tổng quan
Phân vùng ảnh là một bước quan trọng trong nhiều lĩnh vực khác nhau như lĩnh vực hình ảnh y tế (medical imaging), phát hiện và nhận dạng đối tượng, hệ thống camera giám sát, hệ thống điều khiển giao thông… Kỹ thuật này là bước tiền xử lý quan trọng trong hầu hết các hệ thống xử lý ảnh, kết quả phân vùng tốt sẽ giúp cho quá trình xử lý về sau đạt hiệu quả cao hơn nhằm tiết kiệm về chi phí tính toán, thời gian cũng như tăng độ chính xác của các ứng dụng trên
Trong lĩnh vực nhận dạng đối tượng, quá trình phân vùng ảnh sẽ tách đối tượng ra khỏi vùng nền Đối tượng ở đây có thể là con người hoặc một vật gì đó chuyển động thuộc vùng tiền cảnh (Fg) Đối tượng sau khi được tách ra trong quá trình phân vùng có thể được xử lý trong các hệ thống như đếm số lượng người ra vào, nhận dạng cử chỉ tay, nhận dạng khuôn mặt
Trong lĩnh vực camera giám sát, quá trình phân vùng ảnh có thể ứng dụng trong việc xác định, giám sát đối tượng đi vào vùng giám sát, cảnh báo chuyển động khi đối tượng di chuyển vào vùng giám sát
Trong lĩnh vực hình ảnh y tế, các kỹ thuật hình ảnh y tế như chụp CT, chụp MRI, chụp X-quang, USG ( Ultrasound), không thể thiếu để có thể phân tích chính xác nhiều bệnh lý khác nhau, qua đó đã hộ trợ đáng kể bác sĩ trong việc chẩn đoán bệnh Trong quá trình phân tích, người chẩn đoán cần phân trích xuất các đường biên cần thiết, các bề mặt hoặc các bộ phận cơ thể ra khỏi bức hình, kỹ thuật này được gọi là phân vùng (segmentation) Tuy nhiên, quá trình phân vùng thủ công là rất tốn thời gian và có thể không cho kết quả tốt Các phân vùng và đường biên này là rất quan trọng đối với các bác sĩ Chính vì vậy, trong vài thập kỷ qua, nhiều thuật toán phân vùng ảnh y tế được đề xuất nhằm tăng độ chính xác trong quá trình phân vùng ảnh
Trong những năm gần đây, cùng với sự phát triển vượt bậc của khoa học máy tính, thì xử lý ảnh là một là một lĩnh vực đang được quan tâm Nó là một ngành khoa học còn tương đối mới mẻ so với nhiều ngành khoa học khác, nó cũng là đối tượng nghiên cứu lĩnh vực thị giác máy tính, là quá trình biến đổi ảnh từ một ảnh ban đầu sang một ảnh mới Nhờ có công nghệ số hoá hiện đại, ngày nay con người đã có thể xử lý tín hiệu nhiều chiều thông qua nhiều hệ thống khác nhau, từ những mạch số đơn giản cho đến những mạch song song cao cấp xử lý ảnh đã được nghiên cứu mạnh mẽ và đã có nhiều ứng dụng trong thực tế: như trong y học, xử lý ảnh để phát hiện và nhận dạng khối u, cải thiện ảnh X quang, nhận dạng đường biên mạch máu từ những ảnh chụp bằng tia X; Trong cuộc sống gia đình, xử lý ảnh được dùng để cải thiện ảnh tivi…
Xử lý ảnh có liên quan đến nhiều ngành khác như: hệ thống thông tin, lý thuyết thông tin, lý thuyết thống kê, trí tuệ nhân tạo, nhận dạng…
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Xử lý ảnh cũng đã tạo ra được rất nhiều ứng dụng hữu ích trong thực tế như: bài toán nhận dạng vân tay, chữ viết, giọng nói… Để phân tích các đối tượng trong ảnh, chúng ta cần phải phân biệt được các đối tượng cần quan tâm với phần còn lại của ảnh Những đối tượng này có thể tìm ra được nhờ các kỹ thuật phân đoạn ảnh, theo nghĩa tách phần tiền cảnh ra khỏi hậu cảnh trong ảnh Chúng ta cần phải hiểu được là:
- Không có kỹ thuật phân đoạn chung cho tất cả các hình ảnh, có thể phương pháp này phân đoạn tốt trong một số trường hợp, có thể phương pháp kia lại tốt hơn trong các trường hợp khác
- Các kỹ thuật phân đoạn ảnh sẽ dựa trên các tính chất khác nhau của ảnh để phân đoạn và tổng hợp thành một cơ sở dữ liệu cho tập ảnh đó
Có thể hiểu phân vùng là tiến trình chia ảnh thành nhiều vùng, mỗi vùng chứa một đối tượng hay nhóm đối tượng cùng kiểu Chẳng hạn, một đối tượng có thể là một kí tự trên một trang văn bản hoặc một đoạn thẳng trong một bản vẽ kỹ thuật hoặc một nhóm các đối tượng có thể biểu diễn một từ hay hay đoạn thẳng tiếp xúc nhau
Phân vùng ảnh còn là một thao tác ở mức thấp trong toàn bộ quá trình xử lý ảnh
Quá trình này thực hiện việc phân vùng ảnh thành các vùng rời rạc và đồng nhất với nhau hay nói cách khác là xác định các biên của các vùng ảnh đó Các vùng ảnh đồng nhất này thông thường sẽ tương ứng với tòan bộ hay từng phần của các đối tượng thật sự bên trong ảnh Vì thế, trong hầu hết các ứng dụng của lĩnh vực xử lý ảnh (image processing), thị giác máy tính, phân vùng ảnh luôn đóng một vai trò cơ bản và thường là bước tiền xử lý đầu tiên trong toàn bộ quá trình trước khi thực hiện các thao tác khác ở mức cao hơn như nhận dạng đối tượng, biểu diễn đối tượng, nén ảnh dựa trên đối tượng, hay truy vấn ảnh dựa vào nội dung … Để có những thao tác chuyên sâu phân vùng ảnh, người ta thường bắt đầu từ phân tích kết cấu ảnh, tìm ra những vùng đặc trưng trong các hình ảnh thu thập, từ đó tạo cơ sở dữ liệu cho các phân tích, đánh giá chuyên sâu hơn Một công cụ thực hiện tốt trong lĩnh vực phân tích kết cấu ảnh đó là phân tích ảnh mức xám từ các ma trận đồng hiện mức xám (Gray Level Co-occurence Matrix), việc thực hiện xây dựng các GLCM hiện nay có thể thực hiện dễ dàng trên phần mềm (như Matlab), nhưng để tính toán một các nhanh chóng, chính xác, tích hợp vào các hệ thống xử lý ảnh chuyên dụng thì vẫn chưa thực sự phổ biến Đề tài nghiên cứu này tập trung vào việc hiện thực hóa khả năng thực hiện phần cứng tính ma trận đồng hiện mức xám (GLCM) và khả năng mở rộng hệ thống (tốc độ, dữ liệu) trên nền FPGA, nhằm ứng dụng vào trong hệ thống xử lý ảnh một cách nhanh chóng, chính xác
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Tình hình nghiên cứu trong và ngoài nước
Việc xây dựng các hệ thống tính toán GLCM đã có từ những thập niên trước và không ngừng phát triển Tuy nhiên các hệ thống thường thể hiện dưới góc độ phần mềm (Software) Ở dạng phần cứng, nó được thực hiện qua các đề tài nghiên cứu khác nhưng yêu cầu thực hiện tương đối ít phức tạp hơn [1]
Nhiệm vụ luận văn
Nhiệm vụ chính của luận văn là nghiên cứu cách tính ma trận đồng hiện mức xám và hiện thực giải thuật này trên FPGA Quá trình thực hiện để đạt được mục tiêu này có thể tóm tắt trong năm bước chính như sau:
Nghiên cứu giải thuật: giới thiệu đặc tính của ma trận đồng hiện mức xám, cách thống kê các giá trị mức xám theo các hướng
Từ cơ sở lý thuyết trên, đề tài làm rõ việc cải tiến giải thuật nhằm thích ứng phần cứng, ứng dụng thuật toán tính toán vào FPGA,
Xây dựng môi trường kiểm tra tính đúng đắn của thiết kế bằng testbench, testcases, scripts và các phần mềm mô phỏng
Xây dựng phần mềm, hiện thực hóa giải thuật bằng ứng dụng xác định vùng đặc trưng ảnh bằng cách kết hợp chặt chẽ phần cứng (FPGA) và phần mềm (Matlab) sử dụng giao thức truyền – nhận UART: người dùng (User) sử dụng Host (PC) nhập một hình ảnh để phần cứng thực hiện tính toán GLCM, sau đó nhận kết quả của GLCM sau khi thực hiện, trả về thông qua giao tiếp UART
Những hạn chế đề tài Luận văn chưa thực hiện được :
Phần cứng: Kit thực hiện là DE2-115, chịu giới hạn về dung lượng bộ nhớ và logic element nên kích thước ảnh con cho một chu kì xử lý là 32x32 điểm ảnh, kích thước GLCM giới hạn trong bốn giá trị 8x8, 16x16, 32x32, 64x64
Giao tiếp UART: hạn chế phần dữ liệu làm cho tiêu tốn nhiều thời gian hơn cho việc truyền nhận các giá trị thông tin của điểm ảnh.
Tóm tắt nội dung luận văn
Nội dung của luận văn được chia thành sáu chương như sau
Chương 1 – GIỚI THIỆU: Giới thiệu tổng quan đề tài, tính thực tiễn và sơ lược về hướng tiếp cận của luận văn bằng giải thuật tính ma trận đồng hiện mức xám (GLCM)
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Chương 2 – CƠ SỞ LÝ THUYẾT: trình bày có nguyên tắc xậy dựng ma trận đồng hiện mức xám, các thông tin thống kê có thể trích xuất từ ma trận này
Chương 3 – THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG : trình bày cụ thể cấu trúc phần cứng IP của GLCM, các engines, nguyên tắc hoạt động, phân bố tài nguyên, cách thức thực hiện IP trên board DE2-115
Chương 4 – THIẾT KẾ VÀ THỰC HIỆN PHÀN MỀM : trình bày giao diện GUI Matlab và và giao tiếp UART với phần cứng
Chương 5 – KẾT QUẢ VÀ ĐÁNH GIÁ: trình bày kết quả đạt được, minh chứng hoạt động của thuật toán trên phần cứng, bao gồm hai bước chính o Kết quả kiểm tra bằng chương trình mô phỏng Quartus, VCS o Thực hiện hoàn chỉnh mô hình ứng dụng tìm kiếm văn bản: HOST
Chương 6 – KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN: đúc kết thành quả cũng như hạn chế của phương pháp, hướng tiếp cận, đồng thời đề ra gợi ý hướng phát triển cho nghiên cứu tiếp theo
Ngoài ra còn hai mục liên quan tới tài liệu tham khảo, phụ lục bao gồm những hình chụp dạng sóng trong quá trình kiểm tra
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
CƠ SỞ LÝ THUYẾT
Cơ sở về kết cấu (Texture)
Kết cấu (Texture) đóng một vai trò quan trọng trong nhiều công việc của thị giác máy tính như kiểm tra bề mặt, phân loại cảnh, và định hướng bề mặt và xác định hình dạng Ví dụ, các tính năng kết cấu bề mặt được sử dụng trong việc kiểm tra các tấm bán dẫn, các tính năng phân bố mức xám của các vùng kết cấu đồng nhất được sử dụng trong phân loại hình ảnh trên không và các biến thể trong các mẫu kết cấu do phép chiếu phối cảnh được sử dụng để xác định hình ảnh ba chiều của các đối tượng
Kết cấu được đặc trưng bởi sự phân bố không gian của các mức màu xám trong một vùng lân cận Vì vậy, kết cấu không thể được xác định cho một điểm Ví dụ, khi quan sát hình ảnh của một sàn lát gạch từ một khoảng cách lớn, chúng tôi quan sát cấu trúc được hình thành bằng cách đặt các viên gạch, nhưng các viên gạch trong các tấm lát không nhận thức được điều này Khi cùng một cảnh được quan sát từ một khoảng cách gần hơn, do chỉ có một vài viên gạch nằm trong khu vực được xem xét nên chúng ta bắt đầu nhận ra các kết cấu được hình thành bởi các vị trí của các mẫu chi tiết Với mục đích của chúng tôi, chúng ta có thể định nghĩa kết cấu là các mẫu lặp lại các biến thể địa phương về cường độ ảnh để phân biệt các đối tượng riêng biệt ở cùng một độ phân giải được quan sát Do đó, một tập kết nối các điểm ảnh thỏa mãn một thuộc tính mức xám nhất định xảy ra nhiều lần trong vùng ảnh tạo thành vùng kết cấu Một ví dụ đơn giản là một mẫu lặp lại các dấu chấm đen trên nền trắng hay văn bản được in trên giấy trắng cũng tạo thành kết cấu Ở đây, mỗi mức nguyên thủy mức xám được tạo thành bởi việc kết nối các tập hợp các điểm ảnh đại diện cho mỗi đối tượng Quá trình đặt các đặt tính lên trên hệ thống và đặt các hệ thống thực hiện tuần tự như trang viết này là một kết cấu có trật tự Có ba vấn đề chính trong phân tích kết cấu: phân loại kết cấu, phân đoạn kết cấu, và phục hồi hình dạng từ kết cấu
Trong phân loại kết cấu, vấn đề là xác định vùng kết cấu đã cho từ một tập các lớp kết cấu nhất định Ví dụ: một khu vực cụ thể trong hình ảnh trên không có thể thuộc về đất nông nghiệp, khu vực rừng hoặc khu vực thành thị Mỗi khu vực này có đặc tính kết cấu độc đáo Các thuật toán phân tích kết cấu trích xuất các tính năng phân biệt từ mỗi vùng để tạo điều kiện phân loại các mô hình như vậy Ngụ ý ở đây là giả định rằng ranh giới giữa các khu vực đã được xác định Các phương pháp thống kê được sử dụng rộng rãi trong phân loại kết cấu Các thuộc tính như sự xuất hiện đồng thời cấp độ xám, tương phản, entropy và tính đồng nhất được tính từ các mức xám để phân loại.Trong những phương pháp này một mô hình kết cấu được giả định đầu tiên và các thông số của nó làm chuẩn cho các mô hình kết cấu học tập Sau đó, các vùng ảnh khác được ước lượng
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi và sử dụng mô hình gần giống với vùng ảnh đầu vào ban đầu Các thông số này sẽ hữu ích như tính phân biệt để phân loại khu vực
Trái ngược với phân loại kết cấu, nhãn lớp của một vùng đơn nhất được xác định bằng cách sử dụng các thuộc tính được tính từ vùng đó, việc lấy mẫu kết cấu liên quan đến việc tự động xác định ranh giới giữa các vùng văn bản khác nhau trong một hình ảnh Mặc dù các phép đo kết cấu là định lượng, một khi được xác định, rất có ích trong phân đoạn, hầu hết các phương pháp thống kê để xác định các tính chất kết cấu không cung cấp các phép đo chính xác trừ phi tính toán được giới hạn trong một vùng kết cấu đơn Cả hai phương pháp dựa trên vùng và các phương pháp dựa trên ranh giới đã cố gắng để phân đoạn hình ảnh kết cấu Những phương pháp này tương tự như những phương pháp được sử dụng cho các phương pháp tách đối tượng
Phân tích cấu trúc là lĩnh vực hoạt động tích cực của nghiên cứu, và nhiều phương pháp, được thiết kế cho một ứng dụng cụ thể, đã được đề xuất trong tài liệu Tuy nhiên, không có phương pháp chung nào hữu ích trong nhiều tình huống khác nhau.[2]
Ma trận đồng hiện mức xám (Gray Level Co-occurrence Matrix - GLCM)
Do cấu trúc là thuộc tính không gian nên biểu đồ histogram một chiều không hữu ích trong việc mô tả cấu trúc (ví dụ: một hình ảnh trong đó các điểm ảnh thay đổi từ đen sang trắng trong một mặt bàn cờ sẽ có biểu đồ histogram tương tự như hình ảnh trong đó nửa trên Là màu đen và nửa dưới là màu trắng) Để nắm bắt sự phụ thuộc không gian của các giá trị cấp độ xám góp phần nhận thức về kết cấu, một ma trận phụ thuộc hai chiều được gọi là ma trận đồng hiện mức xám được sử dụng rộng rãi trong phân tích cấu trúc
GLCM là một ma trận chứa đựng số lần xuất hiện của 2 mức xám trong tất cả các cặp mức xám của một hình ảnh Cột và hàng của GLCM là giá trị mức xám của điểm ảnh đang xét và điểm ảnh đáp ứng theo không gian và khoảng cách tương ứng Do đó, kích thước của GLCM bằng với giá trị mức xám được biểu diễn của hình ảnh GLCM có 2 thông số để tính toán ma trận là khoảng cách giữa các điểm ảnh d và góc của điểm ảnh lân cận 𝜃.[3]
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Hình 1 Các góc tính toán ứng với khoảng cách giữa 2 điểm ảnh d = 5
Ví dụ: Ma trận mức xám tương quan tạo thành từ hình ảnh gốc với 8 giá trị mức xám và khoảng cách d= 1, 𝜃 = 0 o Tương tự cho các góc còn lại [4]
Trong giới hạn đề tài, thiết kế chọn bốn hướng chính cho việc so sánh các cặp giá trị mức xám để thực hiện tính toán GLCM đó là 0 o , 45 o , 90 o , 135 o , kích thước ảnh con đầu vào là 32x32 điểm ảnh với giá trị mức xám của mỗi điểm ảnh là từ 0 đến 255, khoảng cách d tính toán cho các cặp điểm ảnh sẽ lần lượt là 1, 2, 3, 4; cuối cùng, kích thước GLCM đầu ra sẽ có bốn giá trị là 8x8, 16x16, 32x32, 64x64
Hình 2 Ma trận mức xám tương quan P(i,j) tạo từ ảnh gốc với (d, θ) =(1,0)
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Hình ảnh bên dưới là ví dụ về một ảnh con đầu vào kích thước 4x4, với các giá trị quy đinh về hàng, cột, mức xám cho từng điểm ảnh
Hình 3 Ảnh mức xám đầu vào và cường độ mức xám của nó
Các GLCM của các hướng được tính toán cho ma trận trên như sau:
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
2.2.2 Một số đặc tính thống kê trích xuất từ GLCM
Haralick đã đăng kí 14 thông tin thống kê được trích xuất từ ma trận đồng hiện mức xám, các thông tin này sẽ được sử dụng trong phân tích kết cấu của hình ảnh [5]
Một số thống kê được tính toán dựa trên ma trận đồng hiện mức xám như sau:
Giá trị entropy thể hiện mức độ hỗn loạn các giá trị mức xám của điểm ảnh theo mức độ phân bố
Giá trị energy thể hiện tổng các giá trị bình phương trong GLCM
Giá trị contrast cho biết mức độ sai lệch cục bộ trong hình ảnh
Tính đồng nhất (Homogeneity)
Giá trị homogeneity thể hiện mức độ phân bố gần với đường chéo của GLCM Đề tài luận văn này tập trung vào vấn đề tính toán GLCM thực hiện trên FPGA tích hợp thành một IP, để áp dụng cho các ứng dụng cụ thể của người dùng
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Sơ đồ thực hiện phần cứng tham khảo
Dưới đây là sơ đồ thực hiện phần cứng thực hiện tính toán GLCM cho ảnh con đầu vào có kích thước 8x8 và giá trị mức xám có giá trị từ 1 đến 8 Kết quả tính toán được cập nhật vào RAM GLCM kết quả với kích thước 8x8.[1]
Từ sơ đồ thực hiện trên, ta cải tiến các giá trị thông số tính toán của hệ thống như sau:
Ảnh con đầu vào kích thước 32x32 điểm ảnh với mức xám 8 bit từ 0 đến 255
Cho phép người dùng có thể thay đổi các máy trạng thái FSM1, FSM2 để có thể tạo các GLCM với các góc theta, khoảng cách giữa 2 điểm ảnh, kích thước GLCM đầu ra
Thay thế máy trạng thái FSM3 bằng một khối normalize
Kết quả thực hiện được lưu trữ vào RAM và truyền tới các khối sau
Xây dựng một hệ thống truyền nhận, kiểm tra việc thực hiện tính GLCM bằng cách kết hợp phần cứng và phần mềm thông qua giao tiếp UART
5 bit Counter Binary Counter (IP Core)
Hình 4 Sơ đồ thực hiện GLCM tham khảo
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Lưu đồ thực hiện giải thuật tính GLCM
Lưu đồ thực hiện giải thuật tính GLCM từ lý thuyết:
S Đ Đọc các cặp địa chỉ RAM tương ứng vị trí cặp điểm ảnh theo giá trị cấu hình glcm_dis, glcm_theta
Ghi ảnh con vào 2 RAM
Chuẩn hóa các cặp giá trị mức xám theo giá trị cấu hình glcm_size
Ghép cặp giá trị mức xám chuẩn hóa thành một địa chỉ
RAM GLCM kết quả theo dạng addr={value1,value2} Đọc giá trị tại addr của RAM GLCM kết quả
Cộng giá trị tại addr lên 1 đơn vị rồi ghi giá trị vào addr
S Bật cờ báo cho phép GLCM Interface đọc GLCM kết quả Đ
Count = 0 GLCM Interface đọc giá trị tại địa chỉ addr = count
Tắt cờ glcm_rdy, nhận ảnh con tiếp theo Đ Đ Đ
Hình 5 Lưu đồ thực hiện giải thuật GLCM
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG
Mô hình thực hiện
Người dùng chọn một hình ảnh cần tính toán GLCM (kích thước bất kì)
Matlab chia hình ảnh thành các ảnh con kích thước 32x32 điểm ảnh
Mỗi byte được Matlab truyền qua FPGA board theo UART protocol
UART controller nhận dữ liệu từ Host và truyền qua GLCM process interface
Matlab chuyển các thông số (vị trí hàng, cột, giá trị mức xám) của mỗi điểm ảnh thành 3 bytes
Sau khi nhận xong tất cả các giá trị điểm ảnh của một ảnh con 32x32 điểm ảnh, GLCM process sẽ thực hiện tính toán ma trận GLCM theo các thông số được cấu hình qua các switch
Sau khi tính toán xong, các giá trị kết quả sẽ được đóng gói thành 4 frames (1 bytes/ frame) cho mỗi giá trị kết quả.
Mỗi frames sẽ được truyền tới Host thông qua UART protocol
Matlab nhận các frames truyền, tách, ghép các thông số tương ứng mỗi điểm ảnh của
Matlab tái tạo lại ma trận GLCM từ FPGA truyền về tương ứng với 1 ảnh con được tính toán
Matlab tiếp tục truyền các ảnh con cho đến khi hết hình ảnh ban đầu
Matlab thực hiện kiểm tra các kết quả khi tính toán từ FPGA gửi về so với kết quả tính toán do Matlab thực hiện
Kết thúc Thông báo kết quả so sánh trên Matlab
Hình 6 Lưu đồ giải thuật
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi Lưu đồ giải thuật bao gồm 3 phần chính:
Matlab thực hiện phân chia hình ảnh gốc thành các ảnh con, sau đó truyền các giá trị thông số của mỗi diểm ảnh (giá trị hàng, cột, mức xám) từ Host (thông qua GUI tạo bởi matlab) bằng giao thức (protocol) UART tới FPGA
Các ảnh con sẽ được tính toán ma trận GLCM trên FPGA và thực hiện truyền lại tới Host thông qua UART protocol
Kết quả nhận được từ FPGA sẽ được tổng hợp lại thành các thông số hoàn chỉnh của một GLCM kết quả cho từng ảnh con thông qua Matlab.
FPGA board
Board DE2-115 là board mạch phục vụ cho việc nghiên cứu và phát triển các lĩnh vực luận lý số học (digital logic), tổ chức máy tính (computer organization) và FPGA, do đó nó cung cấp khá nhiều tính năng cũng như ngoại vi hỗ trợ, dưới đây là thông tin các tính năng chi tiết của một board DE2-115 phục vụ trong đề tài luận văn (Altera):
- FPGA: Vi mạch FPGA Altera Cyclone EP4CE115
- Các thiết bị xuất nhập:
+ USB Blaster cho lập trình và điều khiển API người dùng, hỗ trợ cả hai chế độ lập trình JTAG (Joint Test Action Group) và AS (Active Serial)
+ Cổng giao tiếp RS-232 và cổng nối 9-pin
- Bộ nhớ: Up to 3.9 Mbits
- Logic element (LEs): 114,480 LEs - Switch, key, LCD, các đèn LED:
+ Bộ dao động 50MHz và bộ dao động ngoài
Cấu trúc RTL
Thiết kế được phân chia thành hai tiến trình Giao tiếp và Xử lý bằng hai miền độc lập, kết nối với nhau bởi khối GLCM interface
Phần giao tiếp, đề tài sử dụng UART với nhiều lựa chọn baud rates, song công (full duplex) có nhiệm vụ truyền tải dữ liệu qua lại giữa Host (Matlab) – GLCM IP
Phần xử lý gồm bốn phần chính, khối lưu ảnh con có kích thước 32x32 điểm ảnh; khối đọc quét các cặp giá trị điểm ảnh tương ứng với các thông số cấu hình chi tiết
(khoảng cách d, góc theta); khối chuẩn hóa các giá trị mức xám tương ứng với GLCM đầu ra; khối kết quả sẽ thực hiện tính toán giá trị GLCM tương ứng và lưu trữ kết quả GLCM đầu ra để các module sau sử dụng kết quả hoặc gửi các giá trị này tới Host (Matlab) thông qua UART
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Hình 7 Sơ đồ khối GLCM
Toàn bộ thiết kế hoạt động ở tần số f = 125Mhz
UART là từ viết tắc universal asynchronous receiver/transmitter là phương thức truyền, nhận theo dạng song song (1 byte dữ liệu 8 bits) sang nối tiếp (1 bit) theo định dạng cho trước.[6] vị trí 1 2 3 4 5 6 7 8 9 10 start bit data bit (5-8) stop bit start bit data0 data1 data2 data3 data4 data5 data6 data7 stop bit control bit data bit
Luận văn cố định số lượng dữ liệu truyền là 8 bits và số stop bit là 1 bit, không sử dụng control flow bit Mặc định tốc độ Baudrate là 115200 bps (bit per second)
GLCM result (glcm_result.v) GLCM Control Read
GLCM Sub-image buffer (glcm_iamgebuf.v)
Host SW UART interface GLCM interface
LED status display (uart_wrapper.v)
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Khối GLCM Interface là cầu nối giữa UART và GLCM IP, có chức năng giải mã dữ liệu gửi từ UART control, đồng thời mã hóa các dữ liệu từ GLCM IP thành các byte tương ứng và gửi tuần tự theo thứ tự nhất định Định dạng dữ liệu từ Host (Matlab) đến GLCM IP, mỗi điểm ảnh của ma trận ảnh con 32x32 được biểu diễn bởi các thông số hàng (5 bits), cột (5 bits), giá trị mức xám (8 bits): bit 7 6 5 4 3 2 1 0
Frame 1 0 0 row[4] row[3] row[2] row[1] row[0] col[4]
Frame 2 0 1 col[3] col[2] col[1] col[0] val[7] val[6]
Frame 3 1 0 val[5] val[4] val[3] val[2] val[1] val[0]
Bảng 1 Cấu trúc mã hóa dữ liệu truyền từ Host đến GLCM IP Định dạng dữ liệu nhận từ GLCM IP đến Host (Matlab), mỗi điểm ảnh của ma trận GLCM được biểu diễn bởi các thông số hàng (6 bits), cột (6 bits), giá trị (10 bits): bit 7 6 5 4 3 2 1 0
Frame 1 0 0 row[5] row[4] row[3] row[2]
Frame 2 0 1 row[1] row[0] col[5] col[4] col[3] col[2]
Frame 3 1 0 col[1] col[0] val[9] val[8] val[7] val[6]
Frame 4 1 1 val[5] val[4] val[3] val[2] val[1] val[0]
Bảng 2 Cáu trúc mã hóa dữ liệu truyền từ GLCM IP đến Host bit kiểm tra, lặp lai cho mỗi pixel giá trị hàng giá trị cột giá trị mức xám/glcm giá trị rỗng
Do mỗi ảnh con có 32x32= 1024 điểm ảnh, nên sau khi nhận được đủ 1024x3072 frames thì khối GLCM Process sẽ tiến hành xử lý tính toán GLCM Kết quả tính toán sau khi xong sẽ được truyền ngược lại từ GLCM IP tới Host Tùy thuộc vào cấu hình kích thước GLCM đầu ra (có 4 kích thước cụ thể là 8x8, 16x16, 32x32, 64x64 ) mà các số lượng điểm ảnh cần truyền sẽ thay đổi khác nhau
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Sơ đồ khối của các module con trong khối GLCM process
Gray Control Read buf1_vld, buf1_addr
Gray_vld, Gray_row, Gray_col,
Gray_val buf2_vld, buf2_addr GLCM
Normalize buf1_vld, buf1_val buf2_vld, buf2_val
Cfg_distance Cfg_theta Cfg_size
Rd2_dout Rd2_vld Rd2_addr data_ready
Hình 8 Sơ đồ khối của GLCM Process Đây là khối xử lý chính của thiết kế, dữ liệu của mỗi ảnh con 32x32 sẽ được lưu trữ tại khối GLCM image buffer bằng cách ghép các địa chỉ của hàng và cột lại với nhau thành một địa chỉ duy nhất và lưu vào hai buffer
Sau khi lưu trữ xong, khối Gray Control Read sẽ tiến hành quét các vị trí trong hai buffer này theo hai thông số cfg_distance (quy định khoảng cách giữa 2 điểm ảnh cần so sánh,có 4 giá trị tương ứng 0: d=1, 1: d=2 , 2:d=3, 3:d=4), thông số cfg_theta (quy định góc giữa 2 điểm ảnh cần so sánh,có 4 giá trị tương ứng 0: theta=0 o , 1: theta E o ,
2: theta o , 3: theta 5 o ) và đưa ra các giá trị địa chỉ cụ thể cho hai buffer
Giá trị mức xám của hai điểm ảnh tương ứng với hai vị trí cụ thể sẽ được đưa qua khối chuẩn hóa GLCM đầu ra theo thông số cfg_size (quy định kích thước của GLCM đầu ra,có 4 giá trị tương ứng 0:8x8, 1:16x16 , 2:32x32, 3:64x64), kết quả đầu ra sẽ là một giá trị địa chỉ tương ứng với vị trí trong ma trận kết quả sẽ được tăng lên 1 đơn vị
Khối GLCM result có chức năng nhận giá trị địa chỉ từ khối Normalize và lưu trữ vào buffer lần lượt cho từng ảnh con tương ứng, ví dụ ảnh con 32x32 thứ nhất sẽ lưu ở buffer 1, ảnh con thứ hai sẽ lưu trữ ở buffer 2, và tiếp tục cho đến khi kết thúc ảnh mức xám được tính toán, cách làm này để giảm thời gian chờ khi xử lý một ảnh con, sẽ được trình bày cụ thể trong mục 3.3.8 Khi quá trình quét toàn bộ một ảnh con được thực hiện xong, cờ cảnh báo sẽ được bật để cho khối GLCM interface tiến hành đọc dữ liệu và gửi đến host thông qua UART
Sơ đồ trạng trái cho hoạt động của khối GLCM process, có 2 trạng thái là ghi dữ liệu ảnh mức xám và đọc dữ liệu GLCM, mỗi trạng thái có sơ đồ cụ thể bên dưới
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi Quá trình ghi dữ liệu của ảnh mức xám được thực hiện như sau:
Trạng thái WRITE GRAY IMAGE: bắt đầu nhận các thông số của điểm ảnh và ghi dữ liệu vào hai vùng nhớ RAM (địa chỉ 10 bits là ghép hai giá trị hàng và cột, dữ liệu 8 bits là giá trị mức xám của điểm ảnh tương ứng) đến khi cnt_gray 1024 (tương ứng với 32x32 điểm ảnh) thì bật cờ báo gray_write_done cho trạng thái tiếp theo Sau khi kết thúc quá trinh GRAY SCAN, cờ báo sẽ bật để cho phép một ảnh con mới được ghi vào Nếu gray_wrrite_done được bật mà không có GLCM BUF nào trống, chuyển sang trạng thái GLCM WAIT READ để chờ
Môi trường kiểm tra thiết kế và tổng hợp thiết kế
Môi trường mô phỏng Verilog cung cấp một công cụ đồ họa hoặc văn bản hiển thị để hiển thị các kết quả mô phỏng Một số môi trường mô phỏng đi xa hơn, nó cung cấp một công cụ đồ họa cho việc chỉnh sửa đầu vào dữ liệu kiểm tra tới thiết kế module trong quá trình kiểm tra Như các công cụ biên tập dạng sóng, chúng thường phù hợp cho những thiết kế nhỏ Đối với các thiết kế lớn với nhiều bus và dữ liệu điều khiển thì biên tập dạng sóng trở nên phức tạp Một vấn đề trong biên tập dạng sóng là mỗi môi trường mô phỏng sử dụng một tập các thủ tục khác nhau để chỉnh sưa dạng sóng, vì vậy khi chuyển sang một môi trường mô phỏng mới đòi hỏi phải học lại một tập các thủ tục chỉnh sửa dạng sóng mới
Quá trình kiểm tra trải qua hai bước độc lập:
Kiểm tra các engines: kiểm tra các sub-module trong GLCM process module, kiểm tra tất cả các trường hợp xảy ra
Kiểm tra toàn hệ thống: giống phần thực hiện ở trên có thêm kết nối UART, giả lập truyền nhận dữ liệu qua UART các giá trị hàng, cột, giá trị mức xám của các ảnh con (sub-image)
Môi trường kiểm tra bao gồm csh scripts, testbench, testcases
Quá trình kiểm tra sử dụng các công cụ mô phỏng (simulation tool), tổng hợp (synthesis tool) sau:
Verilog CoS: công cụ kiểm tra chính của Synopsys, tích hợp các lệnh để kiểm tra dạng sóng (dve, simv) giúp thực hiện mô phỏng hoạt động của các khối xử lý một cách trực quan, chính xác hơn [7]
Quartus II: công cụ phân tích, tổng hợp các logic từ ngôn ngữ Verilog HDL thành các cổng logic để thực hiện trên FPGA (cụ thể là board DE2-115) [8]
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Môi trường kiểm tra GLCM process
Môi trường làm việc chủ yếu của các kỹ sư phần cứng là trên nền tảng hệ điều hành mở gồm hai nhánh chính (Linux/Unix) Ở đây, hệ điều hành Fedora, một nhánh của Linux được lấy làm ví dụ Ở đây chỉ là một số kiến thức cơ bản nhất về cách tổ chức file trong môi trường Fedor được giới thiệu và chỉ ra sự khác biệt trong cách sử dụng trong hệ điều hành Window trong việc gọi các chương trình Đây là môi trường hỗ trợ kiểm tra quá trình thực hiện của GLCM process thông qua các interface với khối GLCM Interface Kiểm tra hoạt động và các bắt tay giữa các khối trong GLCM process
Cấu trúc lưu trữ của các thư mục và file trong thiết kế
./ Thư mục hiện hành rtl/ Thư mục chứa RTL source file tb/ Thư mục chứa file testbench, testcase, result của thiết kế tb/list.f Cung cấp danh sách các file rtl cần compile tb/glcm_tb.v Testbench file tb/testcase_full.txt File chứa các giá trị mức xám của ảnh gốc tb/result.txt File chứa kết quả GLCM đầu ra
Bảng 9 Cấu trúc thư mục file compile
Hỗ trợ các lệnh của công cụ VCS của Synopsis được thực hiện trong hệ điều hành
Ubuntu Ví dụ về tính tiện lợi của lệnh là việc sử dụng biến hệ thống này được mô tả như sau Nếu muốn gọi một trình mô phỏng logic “vcs”, thay vì người dùng phải sử dụng đường dẫn tuyệt đối “/home/quanghan/synopsys/VCS_2014/bin/vcs” thì chỉ cần gõ
“vcs”; khi mà đường dẫn “/home/quanghan/synopsys/VCS_2014/bin/” đã được lưu sẵn trên biến $PATH Động tác này làm giảm đi tính dư thừa của các câu lệnh và tiện lợi cho người dùng trong việc kiểm tra, thực hiện Trong thiết kế này, tôi sử dụng lại môi trường đã được xây dựng trước đó, nên không đi sâu vào phần cấu trúc mà chỉ tìm hiểu về cách sử dụng môi trường để kiểm tra thiết kế của luận văn
Câu lệnh thực hiện compile và hiển thị user guilde:
Vcs –R –debug_all +v2k –f list.f –gui
Vcs : lệnh chạy chương trình mô phỏng -R: thực hiện lệnh chạy
-f list.f: tùy chọn compile tất cả các file Verilog source có trong file list.f
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
+v2k: tùy chọn để chương trình mô phỏng có thể hiều những tính năng mới trong chuẩn IEEE 1364-2001
-gui: hiển thị giao diện người dùng của cửa sổ kết quả sau khi biên dịch xong.
Bảng 10 Hình ảnh compile các RTL file trong thiết kế
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
End Simulation Cfg_distance cfg_theta cfg_size
Bảng 11 Sơ đồ khối của testbench GLCM process
Clock generation block kiến tạo tín hiệu clock cho toàn hệ thống ở tần số 125MHz
Command FSM 1 block hoạt động theo tuần tự sau:
Kiểm tra trạng thái gray_ready của khối DUT
Đọc lần lượt 1024 giá trị từ file testcase.txt, mỗi giá trị mức xám tạo các giá trị hàng, cột tương ứng gửi cho DUT sau mỗi xung clock
Lặp lại bước các bước trên cho tới khi kết thúc file testcase.txt
Command FSM 2 block hoạt động theo tuần tự sau:
Kiểm tra trạng thái glcm_ready của khối DUT
Đọc lần lượt các giá trị đầu ra của GLCM cho từng ảnh con tương ứng, mỗi giá trị được gửi ra ngoài sau mỗi xung clock, các giá trị sẽ được ghi vào file result.txt
Lặp lại bước các bước trên cho tới khi kết thúc sau 2048 clock không có tín hiệu glcm_rdy.
Môi trường kiểm tra hệ thống (UART, GLCM process)
Môi trường kiểm tra hệ thống tương tự như môi trường kiểm tra GLCM process, tuy nhiên, môi trường này thì các khối GLCM Interface, UART cũng là các đối tượng cần kiểm tra Môi trường này hỗ trợ việc kiểm tra toàn bộ hệ thống, các kết nối giữa các khối UART, GLCM Interface, GLCM process
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
./ Thư mục hiện hành rtl/ tb/result.txt tb/ Thư mục chứa file testbench, testcase, result của thiết kế tb/list.f Cung cấp danh sách các file rtl cần compile tb/top_tb.v Testbench file của module hệ thống tb/testcase.txt File chứa các giá trị mức xám của ảnh gốc tb/result.txt File chứa kết quả GLCM đầu ra
Bảng 12 Cấu trúc thư mục chứa các file trong mô phỏng
Tương tự như shell command của môi trường testbench cho GLCM process
File testcase trong trường hợp này là các giá trị mức xám của một ảnh màu đầu vào có kích thước 640x480 Nhờ công cụ Matlab, ảnh màu được chuyển đổi thành ảnh mức xám, và được ghi vào file testcase.txt Đoạn code trong file top_tb.v sẽ đọc lần lượt các giá trị trong file testcase.txt và gửi tới giao tiếp serial của khối UART Interface
Kết quả sau khi thực hiện xong tính toán GLCM cho toàn bộ ảnh gốc sẽ lưu trữ trong file result.txt, để kiểm tra kêt quả này, cần dùng đến công cụ matlab để có thể chuyển đổi các thông số này thành các hình ảnh trực quan để có thể đánh giá cho những phần thống kê sau
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
End Simulation Cfg_distance cfg_theta cfg_size
Hình 11 Testbench của hệ thống
Các khối Asychronous Reset, Clock Generator, End Simulation, Write result file không thay đổi so với môi trường AVL woods testbench Điểm khác biệt của môi trường này là khối tạo Baud Rate và chức năng sử dụng của 2 khối Command FSM 1, 2:
Khối Baud Rate: tạo tốc độ baud của UART trong đề tài này là 115200 bps, để làm tín hiệu cho các khối Command
Khối Command FSM 1: tương như như trong môi trường testbench cho khối GLCM Process, nhưng giao tiếp là đường truyền serial, gửi từng byte dữ liệu cho khối UART Interface cho đến khi hết dữ liệu trong file testcase.txt
Khối Command FSM 2: nhận từng bit dữ liệu trên giao tiếp serial và tách các dữ liệu để ghi vào file result.txt
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM
Giao diện Matlab UIs
GUI là giao diện hiển thị có chứa nhiều điều khiển (components) mang tính tương tác cho phép người sử dụng thực thi trực quan mà không cần tạo các chương trình hay hiểu rõ cú pháp từng dòng lệnh cho mỗi tác vụ Với người dùng thông thường, điều quan trọng là thao tác chứ không nhất thiết phải hiểu rõ quy trình cũng như phương thức hoạt động của mỗi một lần nhấp chuột
Matlab UIs là cửa sổ cho phép xây dựng các công cụ điều khiển (components) tùy chọn thể loại, kích thước, vị trí [9] Để xây dựng chương trình phần mềm cho người dùng thao tác, đề tài sử dụng Matlab UIs tạo giao diện gồm các nút nhấn (Push Button), ô nhập dữ liệu (Edit Text), ô hiển thị thông tin (Static Text) và Pop-up Menu
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Hình 12 Hình ảnh khởi động của Matlab UIs
Giao diện bao gồm ba phần chính: kết nối, kiểm tra kết nối, xuất nhập bên phần trái; phần nhập hình ảnh, chọn kích thước ảnh con, kích thước GLCM, chế độ truyền; phần hiển thị ảnh con và ảnh GLCM kết quả
Phần kết nối xây dựng liên kết giữa Host và UART bao gồm các giá trị thiết lập baud rate, data bits, Parity bit, Stop bit, Flow control types
Phần kiểm tra kết nối gồm cả truyền – nhận hai hướng, có 3 chế độ dữ liệu:
Loại UART được dùng cho việc kiểm tra Host – UART, dữ liệu đầu vào của ảnh được truyền đến UART, sau đó nhận lại các giá trị này và tạo ma trận ảnh tương ứng với ma trận mức xám của ảnh đầu vào Mục đích để kiểm tra hoạt động của phần cứng UART IP
Loại GLCM Loop back được dùng cho kiểm tra Host – UART – GLCM
Interface, tại đây dữ liệu được mã hóa và truyền tới UART, qua tới khối Rx GLCM Interface và truyền ngược dữ diệu nhận được về lại khối Tx GLCM Interface để gửi ngược lại Host Mục đích để kiểm tra các khối mã hóa và giải mã của khối GLCM Interface được trình bày theo các quy định ở bảng 1 và bảng 2
Loại GLCM Core được dùng để kiểm tra tính dữ liệu chính của khối GLCM IP thực hiện Dữ liệu được truyền xuống IP, tính toán ma trận GLCM và gửi kết quả tới Host thông qua các khối UART
Sơ đồ kiểm tra của từng khối ứng với chế độ tương ứng:
Hình 13 Sơ đồ khối kiểm tra của từng khối
Phần xây dựng cây, tìm kiếm từ gồm chọn tác vụ, ô nhập dữ liệu và phần trả kết quả
Hình ảnh bên dưới là giao diện thực hiện của chương trình, gồm các phần:
Phần phát hiện và hiển thị cổng COM kết nối
Phần chọn ảnh đầu vào (ảnh xám, ảnh màu)
Phần chọn kích thước ảnh con đầu vào (ở đây GLCM IP mặc định là 32x32)
Phần chọn kết quả GLCM đầu ra (có 4 kích thước 8x8, 16x16, 32x32, 64x64) Host
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Phần chọn chế độ kiểm tra
Phần chọn bắt đầu truyền dữ liệu
Hình 14 Giao diện của chương trình
Kiểm tra kết nối Host (Matlab) – UART – Control Panel
Mục tiêu của bước này là kiểm tra giao tiếp Matlab, UART và board
Là phần mềm hỗ trợ của Altera cho các dòng sản phẩm của mình Người dùng chỉ việc sử dụng nó (load SOF file có sẵn) cho việc kiểm tra giao tiếp Host với board thông qua cổng USB-Blaster
Sử dụng các tính năng có sẵn của Control Panel, đường truyền Host – UART – FPGA được sử dụng để thử truyền và nhận dữ liệu
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi Mục đích của bước này là kiểm tra việc truyền/nhận dữ liệu của phần mềm Matlab thông qua kết nối với một IP UART chuẩn của Altera
Hình 15 Giao diện Control Panel
4.2.2 Kiểm tra nhận cổng giao tiếp kết nối, thực hiện truyền nhận dữ liệu
Bảng sau là các tiến trình kiểm tra bằng Control Panel và công cụ Matlab
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Chọn nút nhấn Detect serial port
- Pop-up ngay dưới xuất hiện cổng COM được mở
“Please choose a serial port and enter a test word to verify”
Gõ ký tự bất kỳ vào ô trống ngay dưới
- Nhập dữ liệu truyền Ô Receive của Control Panel hiển thị dòng ký tự vừa nhập thể hiện việc truyền thành công
- Nhập dữ liệu vào ô Send của Control Panel,
Phát dữ liệu từ FPGA
Nhấn vào nút Verify TX Serial communication
- Host sẵn sang, chấp nhận dữ liệu từ FPGA Ô TX Serial response hiển thị đầy đủ dữ liệu nhập từ Control Panel thể hiện việc nhận thành công
Nhấn vào nút Clear TX text
Chuẩn bị nhận lần tiếp
Xóa dữ liệu vừa nhận
Bảng 13 Bảng thứ tự kiểm tra matlab
Trong toàn bộ quá trình Matlab hoạt động, mọi tác vụ kiểm tra, đọc hình ảnh, gửi dữ liệu, nhận dữ liệu, … điều được ghi ra file nhằm mục đích kiểm chứng quá trình Encode thành chuổi bit cho UART có đúng hay không và file này cũng là cơ sở cho việc tạo testcase, thực hiện việc kiểm tra phần cứng sử dụng Simulation tool ở giai đoạn (phase) tiếp theo
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
KẾT QUẢ VÀ ĐÁNH GIÁ
Kết quả thực hiện
Toàn bộ quá trình kiểm tra thông qua bốn giai đoạn độc lập
Trình tự Đối tượng Môi trường Công cụ
Phân bố tài nguyên, bộ nhớ
3 Matlab, UART, Control Panel Application,
Matlab Control Panel 4 SW+HW System: Matlab,
Bảng 14 Trình tự kiểm tra hệ thống
Môi trường này kiểm tra tính liên tực của quá trình xử lý, tính toán cho các GLCM đầu ra, quản lý các trạng thái hoạt động của GLCM IP
Môi trường giả lập xây dựng một hệ thống đọc các giá trị mức xám của một ảnh gốc được tạo ra bằng công cụ Matlab, từ đó truyền đến GLCM IP để thực hiện việc tính toán cần thiết, kết quả cuối cùng sẽ được môi trường giả lập ghi lại vào trong log file, để thực hiện việc kiểm tra, người dùng sử dụng công cụ Matlab để so sánh kết quả tính toán bằng phần mềm và kết quả tính toán thông qua môi trường giả lập
Các lỗi xảy ra được phát hiện bằng môi trường này:
Bắt tay giữa các khối trong module chưa chặt chẽ (các cờ báo ready chưa chính xác)
Quản lý các buffer chưa chính xác, chưa sử dụng hết tài nguyên
Các giá trị config khác nhau bị thay đổi trong quá trình tính toán GLCM
Các kết quả GLCM chưa có cách kiểm tra nhanh chóng cho những trường hợp ảnh gốc đầu vào có kích thước lớn
Các trạng thái xử lý bị chồng lấn, gây sai lệch kết quả tính toán
Hình ảnh bên dưới là quá trình lặp có chu kì của việc truyền dữ liệu ảnh con, tính toán GLCM, truyền giá trị GLCM ra ngoài GLCM IP Quá trình này được lặp lại cho tới ảnh con cuối cùng của ảnh mức xám ban đầu
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Hình ảnh cụ thể việc truyền một ảnh con 32x32, các giá trị hàng cột được quét theo chiều từ trái qua phải, từ trên xuống dưới, các giá trị hàng và cột được thể hiện như hình bên dưới
Hinh ảnh cụ thể cho việc nhận một GLCM, số lượng ảnh con cho một ảnh gốc kích thước 640x480 là 300 ảnh con, cnt_sub thể hiện số lượng cạnh lên của tín hiệu ogray_rdy ở đây số lượng là 301, thể hiện GLCM IP đang chờ đợi một ảnh con truyền
Hình 16 Hình ảnh truyền ảnh con và đọc GLCM kết quả từ GLCM IP
Hình 17 Hình ảnh ghi một ảnh con vào khối GLCM IP
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi vào, và sự truyền ảnh con cho một hình ảnh gốc ban đầu là 300 tương ứng với cạnh lên của tín hiệu ogray_rdy
Hình ảnh cụ thể của một ảnh GLCM kết quả, các giá trị hàng, cột, giá trị được gửi lần lượt theo thứ tự từ trái qua phải, từ trên xuống dưới cho GLCM kết quả Trong tường hợp này là kết quả của GLCM với các thông số khoảng cách d=1, góc theta = 0 o , kích thước GLCM = 16x16
5.1.3 Kiểm tra hệ thống phần cứng
Testbench bao giả lập Host truyền nhận dữ liệu thông qua UART Các dữ liệu được truyền trực tiếp qua giao tiếp serial, điều này giúp giả lập sự truyền nhận thông tin một cách trực quan, dễ phát hiện lỗi Đặt điểm của môi trường này đã bao gồm các đặc điểm của môi trường kiểm tra
GLCM IP, ngoài ra còn có thêm phần kiểm tra UART Các lỗi được phát hiện trong môi trường này:
Hình 18 Hình ảnh một GLCM kết quảHình 19 Hình ảnh đọc các giá trị GLCM kêt quả cuối cùng từ GLCM IP
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
Baudrate sai so với cấu hình
UART không nhận, truyền được dữ liệu theo định dạng startbit[1], data[7:0], stopbit[1]
GLCM interface không giải mã được dữ liệu từ UART
Hiển thị không đúng cờ trạng thái của GLCM IP
Các hình ảnh thực hiện tổng hợp trên phần mềm Quartus II 9.0 của hệ thống GLCM IP
Hình ảnh sử dụng các LE, tài nguyên RAM của GLCM IP
Hình ảnh tần số tối đa của hệ thống
Hình ảnh sơ đồ kết nối của toàn bộ hệ thống thực hiện
Hình 20 Hinh ảnh resource RAM và LE
Hình 21 Tốc độ xung clock tối đa của hệ thống
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
D ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
D ENA SCLR SDATA SLOAD Q PRE
SW[16 17]~input UART_RXD~input
~GND fflopx:fflopx2:odat[0] fflopx:ppwrite_en:odat[0] fifoc_fshx:fifoc_fshxi:Equal0~2 fifoc_fshx:fifoc_fshxi:fifo_len[8] glcm_process:DUT:pixel_fail glcm_process:DUT:state.CLEAR glcm_process:DUT:state.IDLE glcm_process:DUT:state.PROCESS glcm_process:DUT:state.READ glcm_process:DUT:state.WAITREAD receiver:receiveri:stk_full
ENA SCLR SDATA SLOAD Q PRE
D ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
CLR D ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
ENA SCLR SDATA SLOAD Q PRE
D ENA SCLR SDATA SLOAD Q PRE
COUT LOGIC_CELL_COMB (55AA)
LOGIC_CELL_COMB (FFFE) DATAA
LOGIC_CELL_COMB (FEFF) cnt2[7]~32_COMBOUT cnt2[7]_Q cnt1[9]~34_COMBOUT cnt1[9]_Q cnt2[12]~42_COMBOUT cnt2[12]_Q cnt1[14]~44_COMBOUT cnt1[14]_Q cnt2[1]~20_COMBOUT cnt2[1]_Q cnt1[2]~20_COMBOUT cnt1[2]_Q cnt2[5]~28_COMBOUT cnt2[5]_Q cnt1[7]~30_COMBOUT cnt1[7]_Q cnt2[10]~38_COMBOUT cnt2[10]_Q cnt1[12]~40_COMBOUT cnt1[12]_Q cnt2[15]~48_COMBOUT cnt2[15]_Q cnt2[3]~24_COMBOUT cnt2[3]_Q cnt1[5]~26_COMBOUT cnt1[5]_Q cnt2[8]~34_COMBOUT cnt2[8]_Q cnt1[10]~36_COMBOUT cnt1[10]_Q SW[5]~input_O
SW[4]~input_O SW[3]~input_O SW[2]~input_O SW[1]~input_O SW[0]~input_O SW[17]~input_O SW[16]~input_O UART_RXD~input_O
~GND_COMBOUT glcm_core:iglcm_core_fflopx:fflopx2:odat[0] glcm_core:iglcm_core_fflopx:ppwrite_en:odat[0] glcm_core:iglcm_core_fifoc_fshx:fifoc_fshxi:Equal0~2 glcm_core:iglcm_core_fifoc_fshx:fifoc_fshxi:fifo_len[8] glcm_core:iglcm_core_glcm_process:DUT:pixel_fail glcm_core:iglcm_core_glcm_process:DUT:state.CLEAR glcm_core:iglcm_core_glcm_process:DUT:state.IDLE glcm_core:iglcm_core_glcm_process:DUT:state.PROCESS glcm_core:iglcm_core_glcm_process:DUT:state.READ glcm_core:iglcm_core_glcm_process:DUT:state.WAITREAD glcm_core:iglcm_core_receiver:receiveri:stk_full cnt1[15]~46_COMBOUT cnt1[15]_Q cnt1[0]~16_COMBOUT cnt1[0]_Q cnt2[6]~30_COMBOUT cnt2[6]_Q cnt2[11]~40_COMBOUT cnt2[11]_Q blink~0_COMBOUT blink_Q cnt1[1]~18_COMBOUT cnt1[1]_Q cnt1[6]~28_COMBOUT cnt1[6]_Q cnt1[11]~38_COMBOUT cnt1[11]_Q cnt2[13]~44_COMBOUT cnt2[13]_Q cnt1[3]~22_COMBOUT cnt1[3]_Q cnt1[8]~32_COMBOUT cnt1[8]_Q cnt1[13]~42_COMBOUT cnt1[13]_Q cnt2[2]~22_COMBOUT cnt2[2]_Q cnt2[4]~26_COMBOUT cnt2[4]_Q cnt2[9]~36_COMBOUT cnt2[9]_Q cnt2[14]~46_COMBOUT cnt2[14]_Q cnt1[4]~24_COMBOUT cnt1[4]_Q cnt2[0]~16_COUT SW[15]~input_O
Equal0~0_COMBOUT Equal0~1_COMBOUT Equal0~4_COMBOUT
KEY[1]~input cnt2[7] cnt1[9] cnt2[12] cnt1[14] cnt2[1] cnt1[2] cnt2[5] cnt1[7] cnt2[10] cnt1[12] cnt2[15] cnt1[5] cnt2[8] cnt1[10] glcm_core:iglcm_core cnt1[15] cnt1[0] cnt2[6] cnt2[11] blink cnt1[1] cnt1[6] cnt1[11] cnt2[13] cnt1[3] cnt1[8] cnt1[13] cnt2[4] cnt2[9] cnt2[14] cnt1[4] cnt2[14]~18 Equal1~0
KEY[0]~input cnt2[0]~16 cnt2[14]~19 CLOCK50~input cnt2[3] cnt2[2]
Hình 22 Sơ đồ khối thực hiện toàn hệ thống GLCM IP
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi
5.1.4 Kiểm tra phần mềm và kết nối
Sử dụng công cụ có sẵn của DE2 – 115: Control Panel để kiểm tra Matlab và UART
Thực hiện các tác vụ truyền từ Matlab, truyền từ Control Panel và phải nhận được đúng giá trị
5.1.5 Kiểm tra toàn bộ hệ thống: phần cứng kết nối phần mềm
Thực hiện việc truyền nhận dữ liệu từ host tới FPGA với dữ liệu là ảnh mức xám đầu vào, nhận dữ liệu đầu ra từ FPGA, ghi thông tin vào file output_data.txt
Kết quả thực hiện với từng kích thước GLCM đầu ra đối với ảnh mức xám đầu vào có kích thước 64x64:
Hình 23 Hình ảnh gửi và nhận giữa host và FPGA trên Control Panel
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi Kết quả GLCM 8x8:
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi Kết quả GLCM 32x32:
Hình 27 Kết quả GLCM 64x64Hình 26 Kết quả GLCM 32x32
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi Kết quả chạy khác của chương trình:
Hình ảnh với ảnh 320x240: kết quả ma trận GLCM 8x8 của từng khối ảnh con 32x32 được thể hiện như sau:
Vùng ảnh con phía trên: các kết quả GLCM tập trung biên góc trên bên trái
Vùng ảnh con ở giữa (chứa các đối tượng): các kết quả GLCM phân tán dọc theo đường chéo từ trên xuống dưới, từ trái qua phải, chứng tỏ độ phân tán của các cặp giá trị mức xám
Vùng ảnh con phía dưới: Các kết quả GLCM tập trung ở giữa, thể hiện sự đồng nhất trong vùng ảnh con nhưng có sai khác so với vùng ảnh bên trên do giá trị mức xám của từng điểm ảnh
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi Các hệ thống cờ cảnh báo của hệ thống khi chạy trên board DE2-115
Cảnh báo của khối UART: uart_flag
Đánh giá
Dựa trên nền tảng lý thuyết về cách xây dựng ma trận GLCM, đề tài đã thực hiện thành công GLCM IP trên FPGA, đạt được các mục tiêu đề ra
Với cải tiến về kích thước ảnh con đưa vào, phương pháp chuẩn hóa nhằm tiết kiệm thời gian so sánh, phân tích tăng cường thời gian xử lý, dung lượng lưu trữ dữ liệu thấp
Hệ thống tách biệt giữa các phần giao tiếp và Thực thi, cho phép tích hợp các GLCM IP vào các ứng dụng cụ thể phù hợp với nhu cầu sử dụng của người dùng
Hệ thống được chia nhỏ thành các module riêng biệt, giúp người dùng quan sát, phân loại các sự cố, giám sát hoạt động tốt hơn
Hệ thống kiểm tra phần cứng chia thành nhiều cấp bậc khác nhau: kiểm tra từng khối riêng biệt, giúp xác định nhanh chóng các vị trí lỗi xảy ra trong thiết kế, giảm thiểu thời gian sửa lỗi
Ngoài ra, đề tài thực hiện trên nhiều môi trường kiểm tra độc lập từ phần mềm đến phần cứng và sử dụng các công cụ hỗ trợ mang tính công nghiệp với độ tin cậy cao
Ưu tiên phát triển môi trường (testbench) và mô phỏng (simulation) ở dạng command line (batch mode) làm giảm đáng kể thời gian kiểm tra (verfication)
Tạo nhiều trường hợp kiểm tra (testcases) với cùng một ảnh gốc, thay đổi 64 trường hợp ứng với các giá trị thông số cấu hình
Các bản Matlab, VCS, Quartus II sử dụng trong đề tài là các công cụ nổi tiếng trong công nghiệp có độ tin cậy cao
Thiết kế IP tính GLCM GVHD: T.S Trương Công Dung Nghi