MỤC LỤC
Mỗi frame ảnh thu về được biểu diễn dưới dạng I(x,y) trong đó x,y là tọa độcủa pixel trên frame và I là mức xám tương ứng của pixel đó.
Làm mảnh (erosion) I i j ( , )= 1 chỉkhi tất cảcác pixel trong phần tử cấu trúc có giá trịbằng 1 ( cửa sổnằm hoàn toàn trong đối tượng ) Kết quả của quá trình làm mảnh là ảnh sẽ loại bỏ bớt được những nhiễu nhỏ, đồng thời làm nhỏ bớt đối tượng, tách các đối tượng gần nhau ra. Đểthực hiện việc xác định các đặc trưng hình học của đối tượng, phục vụ cho hệ thống định vị và nhận dạng, cần phải phân biệt các đối tượng (các vùng ảnh đen) với nhau bằng cách gán cho chúng các nhãn khác nhau. Thuật toán gán nhãn đối tượng cũng sử dụng một cửa sổ 3x3 chạy khắp frame. Pixel trung tâm sẽ được kiểm tra để gán nhãn, và các pixel lân cận được dùng để xác định nhãn mới cho pixel trung tâm. Thuật toán thực hiện như sau:. Hình 1.9: Sơ đồthuật toán gán nhãn đối tượng. phía trên của frame).
Đặc biệt một số còn có sẵn những chỉ thị lệnh giúp cho việc tính toán ma trận, tích chập hay thậm chí các phép biến đổi DCT trong quá tình nén ảnh. Có thể tận dụng các mainboard máy tính hay thậm chí các máy tính xách tay với chức năng là một đơn vị xử lý ảnh, và đưa ra quyết định. Ngoài các giải pháp trên, còn nhiều những giải pháp phần cứng khác cho một hệ thống xử lý ảnh số như : Main công nghiệp, Single Board Computer(SBC) sửdụng Single on Chip (SoC).
Mục đích của đề tài là xây dựng một hệ thống xử lý ảnh trên nên FPGA, trong đó thực hiện được một sốthuật toán cơ bản như lọc, phân ngưỡng, phân vùng, xử lý đồng cấu ảnh nhị phân, đánh nhãn đối tượng và cuối cùng là tính toán các đặc trưng của đối tượng. Hệ thống được xây dựng với mục đích thử nghiệm những thuật toán xử lý ảnh số đã được nghiên cứu, sử dụng công nghệ FPGA, đồng thời tạo nền tảng cho hệthống thịgiác máy tính với những thuật toán xử lý cao hơn.
Các vi xử lý này có thể được thiết kế như các khối logic thông thường, mà mã nguồn do các hãng cung cấp, thực thi các lệnh theo chương trình được nạp riêng biệt, và có các ngoại vi được thiết kế linh động ( khối giao tiếp UART, vào/ra đa chức năng GPIO, ethernet..). FPGA được ứng dụng điển hình trong các lĩnh vực như: xửlý tín hiệu số, xử lý ảnh, thị giác máy, nhận dạng giọng nói, mã hóa, mô phỏng (emulation)..FPGA đặc biệt mạnh trong các lĩnh vực hoặc ứng dụng mà kiến trúc của nó yêu cầu một lượng rất lớn xử lý song song, đặc biết là mã hóa và giải mã. FPGA có cấu trúc nhỏgiống như các mảng cổng của hệASIC với các CLBs chỉ bao gồm các phần tử cơ bản rất nhỏ như các cổng NAND, cổng NOR, … Các nhà lý luận cho rằng các phần tửnhỏcó thểnói với nhau tạo lên các chức năng lớn hơn mà không tốn nhiều các phần tử logic.
Thuận lợi của cấu trúc FPGA dựa trên SRAM là chúng dùng một quá trình sản xuất chuẩn mà ở đó các kế hoạch sản xuất chip là gần như giống nhau và luôn luôn được tối ưu cho khả năng hoạt động. Nếu thiết kế dùng HDL, bước tiếp theo là tổng hợp chip, bao gồm việc dùng phần mềm tổng hợp để chuyển đổi thật tối ưu từ thiết kế mức RTL (register transfer level) sang thiết kế mức gate mà có thể gắn vào các khối logic trong FPGA. Hai ứng dụng trực tiếp chính của VHDL là trong mảng các thiết bị logic lập trình được ( Programmable Logic Devices) (bao gồm CPLDs – Complex Programmable Logic Devices và FPGAs – Field Programmable Gate Arrays).
Mỗi khi mã nguồn VHDL được viết, chúng có thể được dùng đểthực thi mạch điện trong các thiết bịlập trình được (từ Altera, Xilinx, Almel, .) hoặc có thể gửi đến các xưởng chế tạo các chíp ASIC.
Là công cụ để xây dựng hệ thống có các vi xử lý nhúng trong FPGA như MicroBlaze (cho tất cảcác họFPGA ) và Power PC ( chỉcho họVirtex). System Generator (sysgen)là công cụ phát triển hệ thống cho FPGA, cho phép thiết kế hệ thống ở dạng các khối, và hỗtrợ mô phỏng, debug, tạo code đểnạp vào FPGA hoặc kết hợp vào những ứng dụng lớn hơn. Trong thư viện của Sysgen có tất cả các khối thực hiện các chức năng từ cơ bản như cộng, trừ, nhân, các khối logic,..cho đến những thiết kếphức tạp hơn như các DSPs, bộlọc số, nhân chập, UART.., các bộnhớtích hợp: Single Port, DualPort Ram, FIFOs, các thanh ghi.
Sysgen còn cho phép người thiết kế tạo ra các khối để thực hiện những nhiệm vụriêng bằng khối Black Box, tại đây người thiết kế sẽ tạo ra các entity và cài mã của nó vào Black Box đểtạo ra các thiết kếriêng của mình. Những thiết kế của Sysgen có thể được dịch ra nhiều kiểu dữ liệu, có thể thành file bit để nạp ngay vào phần cứng, hoặc thành các thiết kế để ghép vào một hệ thống lớn hơn.Với việc kết hợp với Mathwork để xây dựng Sysgen, Xilinx đã làm cho việc thiết kế hệ thống trên nền FPGA của mình trở nên thuận tiện và đơn giản hơn rất nhiều đối với người làm kĩ thuật.
Chức năng: Dualport module đính vào phía các cổng bên host-side của bộ điều khiển XESS SDRAM Controller và chia thành hai phần host-side riêng biệt, mỗi phần có thể hoạt động như các cổng của host-side ban đầu do đó ứng dụng có thể gồm nhiều thành phần truy nhập SDRAM nhưng chỉdùng 1 bộ điều khiển SDRAM Controller. Với công cụ này, người thiết kế có thể sử dụng các core có sẵn đã được cung cấp bởi Xilinx, giảm thiểu công sức và thời gian thiết kế, đồng thời vẫn có thể tự tạo ra các block riêng cho mình sử dụng công cụ Black Box, và đặc biệt, việc gỡ rối và mô phỏng hệ thống có thể thực hiện hoàn toàn trên Matlab, vốn đã rất quen thuộc với sinh viên Điều khiển tự động. Việc đọc và ghi như trên cho phép sử dụng một cách hiệu quả số block ram hữu hạn của FPGA, tránh hoàn toàn khả năng xung đột đọc/ghi, đồng thời loại giúp cho việc đọc và ghi trở nên tương đối độc lập với nhau, giảm thiểu sai sót trong quá trình xử lý.
Dải của tín hiệu nằm từ từ 0 V (tương ứng với màu tối hoàn toàn) và 0.7V (sáng hoàn toàn) điều khiển cường độ của mỗi thành phần màu và 3 thành phần màu kết hợp với nhau tạo lên màu của điểm ảnh (dot) hay phần tử ảnh (pixel) trên màn hình. Tín hiệu gate của vertical sync generator được dùng như tín hiệu báo kết thúc một frame cho các khối dữ liệu pixel bên ngoài, đồng thời nó cũng reset và xóa toàn bộ nội dung của pixel buffer nên bộ VGA generator luôn khởi động từ trạng thái xóa sạch hoàn toàn với mọi frame. Bình thường mỗi block RAM của FPGA có thể lưu trữtới 1024 câu lệnh chương trình (program instructions) và các lệnh này được tự động load trong khi cấu hình FPGA, khi đó vi điều khiển PicoBlaze có thể hoạt động từ 44000 tới 100000 câu lệnh trên giây (MIPS – million instructions per second) tùy thuộc vào họ FPGA được dùng là loại gì và tốc độcủa họ đó.
Vi điều khiển PicoBlaze có nhiệm vụ nhận lệnh điều khiển từ chương trình trên PC và ra các lệnh điều khiển để capture ảnh từ camera và các tín hiệu lựa chọn thuật toán và kích hoạt khối xử lý frame ảnh đã lưu trong SDRAM, đồng thời nhận tín hiệu done và báo về giao diện để biết thuật toán đã xửlý xong.
Chương trình chính luôn luôn nhận các kí tự từ giao diện người dùng và kiểm tra xem gửi lệnh với cú pháp gì. Khối xử lý ngắt sẽ được kích hoạt khi có tín hiệu done từ bộ xử lý ảnh và khi đó xóa tín hiệu kích hoạt khối xử lý ảnh và gửi messenger lên PC. Có thể lựa chọn kết nối hoặc ngắt kết nối với RS232, có hộp thoại hiển thịtrạng thái của giao tiếp RS232.
Cho phép download trực tiếp file cấu hình cho FPGA hoặc Flash qua cổng LPT, nhờcác nút bấm ởphần LPT FPGA Programming. Do chưa có tên cụthểcủa từng thuật toán cụthể nên mới chỉ đặt tên là thuật toán 1, thuật toán 2, … Mỗi khi kết thúc thuật toán đều có bức điện thông báo đã thực hiện thành công.
Kích hoạt chip Video Decoder trên mạch phần cứng qua nút I2C để giao tiếp I2C với chip qua cổng LPT. Đang phát triển để thực hiện lựa chọn giữa capture một ảnh và chụp liên tục khoảng 30 hình/s. Thuật toán 6 : Tính toán các đặc tính của lần lượt từng đối tượng, đồng thời hiện đối tượng đó lên., hiển thị các đặc tính của đối tượng cần xác định ra giao diện.
Kết quả mô phỏng cho thấy việc thực thi các thuật toán và thiết kế hệ thống thực hiện đúng như mong muốn. Tuy nhiên, nếu ảnh có những nhiễu tương đối lớn ( độ dày khoảng hơn 3 pixel ) thì cần nhiều quá trình làm mảnh liên tiếp mới xóa bỏ hoàn toàn được nhiễu.