1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn thạc sĩ Kỹ thuật điện tử: Tính ma trận đồng hiện mức xám (GLCM) - Ứng dụng phát hiện vùng đặc trưng ảnh

62 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Cấu trúc

  • Chương 1 TỔNG QUAN (12)
    • 1.1. Tổng quan (12)
    • 1.2. Tình hình nghiên cứu trong và ngoài nước (14)
    • 1.3. Nhiệm vụ luận văn (14)
    • 1.4. Tóm tắt nội dung luận văn (14)
  • Chương 2 CƠ SỞ LÝ THUYẾT (16)
    • 2.1 Cơ sở về kết cấu (Texture) (16)
    • 2.2 Ma trận đồng hiện mức xám (Gray Level Co-occurrence Matrix - GLCM) (17)
      • 2.2.1 Cấu trúc GLCM (17)
      • 2.2.2 Một số đặc tính thống kê trích xuất từ GLCM (20)
    • 2.3 Sơ đồ thực hiện phần cứng tham khảo (21)
    • 2.4 Lưu đồ thực hiện giải thuật tính GLCM (22)
  • Chương 3 THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG (23)
    • 3.1 Mô hình thực hiện (23)
    • 3.2 FPGA board (24)
    • 3.3 Cấu trúc RTL (24)
      • 3.3.1 Tần số hoạt động (25)
      • 3.3.2 UART (25)
      • 3.3.3 GLCM Interface (26)
      • 3.3.4 GLCM process (27)
      • 3.3.5 GLCM buffer image (29)
      • 3.3.6 Gray control read (30)
      • 3.3.7 GLCM normalize (31)
      • 3.3.8 GLCM result (33)
    • 3.4 Môi trường kiểm tra thiết kế và tổng hợp thiết kế (36)
    • 3.5 Môi trường kiểm tra GLCM process (37)
      • 3.5.1 Cấu trúc (37)
      • 3.5.2 Shell script (37)
    • 3.6 Môi trường kiểm tra hệ thống (UART, GLCM process) (39)
      • 3.6.1 Cấu trúc (40)
      • 3.6.2 Shell script (40)
      • 3.6.3 Testcase (40)
      • 3.6.4 Testbench (41)
  • Chương 4 THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM (42)
    • 4.1 Giao diện Matlab UIs (42)
    • 4.2 Kiểm tra kết nối Host (Matlab) – UART – Control Panel (44)
      • 4.2.1 Control panel (44)
      • 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 (45)
      • 4.2.3 Kết quả đầu ra (46)
  • Chương 5 KẾT QUẢ VÀ ĐÁNH GIÁ (47)
    • 5.1 Kết quả thực hiện (47)
      • 5.1.1 Quy trình kiểm tra (47)
      • 5.1.2 Kiểm tra GLCM process (47)
      • 5.1.3 Kiểm tra hệ thống phần cứng (49)
      • 5.1.4 Kiểm tra phần mềm và kết nối (52)
      • 5.1.5 Kiểm tra toàn bộ hệ thống: phần cứng kết nối phần mềm (52)
    • 5.2 Đánh giá (57)
  • Chương 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN (58)
    • 6.1 Kết luận (58)
    • 6.2 Mặt hạn chế (58)
      • 6.2.1 Giao tiếp UART và mở rộng ma trận GLCM kết quả (58)
      • 6.2.2 Phần mềm (Matlab, giao tiếp UART) (58)
      • 6.2.3 Phần cứng (FPGA) (59)
    • 6.3 Hướng phát triển (59)
      • 6.3.1 Xây dựng hệ thống tính toán GLCM tối ưu hơn (59)
      • 6.3.2 Thực hiện tính toán, đánh giá các vùng ảnh đặc trưng trong các hệ thống (60)
  • Chương 7 TÀI LIỆU THAM KHẢO (61)
    • II. Quá trình đào tạo Đại học (62)

Nội dung

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

Ngày đăng: 09/09/2024, 04:33

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN