Triển khai FPGA theo cấu trúc CORDIC

Một phần của tài liệu Nghiên cứu thuật toán chuyển đổi hough 3d ứng dụng phát hiện mặt phẳng sv project 3 HD (Trang 25)

Các phương trình CORDIC được sửa đổi trước đó có thể được thực hiện theo những cách khác nhau: nối tiếp, song song, lặp hoặc liên tầng. Một vài lựa chọn có thể dùng. Các kiến trúc chủ yếu được mô tả trong phần tham khảo.

Trong việc thực hiện lặp đi lặp lại song song, ít nhất các bit quan trong của thanh ghi Y (hoặc Z tùy theo chế độ sử dụng) quyết định toán tử cộng hoặc trừ được thực hiện cho lần lặp kế tiếp. Một máy trạng thái đơn giản là cần thiết để điều khiển yếu tố khác và trình tự thuật toán. Kiến trúc này được thể hiện trong hình 2.4.

Việc thực hiện song song – liên tầng dựa trên dạng của phương trình CORDIC, cấu trúc song song của một bit đơn lẻ được liên tầng nhiều như số lần lặp và số bit. Điều này được thể hiện trong hình 2.5.

Hai sự đơn giản hoá được thực hiện khi cấu trúc liên tầng được sử dụng. Điều đầu tiên, duy nhất 1 bit được dịch thay vì dịch n bit. Điều thứ hai, bảng tra cứu hiện đã được phân tán trên tất cả các cấu trúc. Ngoài ra giá trị (x y z0, ,0 0) đầu vào không phức tạp mà không cần ghép kênh. Rõ ràng là các thiết bị FPGA không phù hợp với loại kiến trúc này. Điều này là do số lượng lớn các mối liên kết cần thiết trong từng giai đoạn. Khi việc xử lý được thực hiện trên các từ có độ rộng 16 bit, mỗi giai đoạn sẽ yêu cầu 48 bit đầu vào và đầu ra. Tuỳ thuộc các công cụ CAD có sẵn, kết quả nói chung của vị trí và quá trình định tuyến FPGA rất rõ ràng, các trễ thêm được giới thiệu. Điều này đúng với thiết bị FPGA nhỏ.

9 208 5.64

10 232 4.83

11 256 4.43

12 280 3.78

13 304 3.48

Ảnh hưởng của số lần lặp đến độ phức tạp và tần số hoạt động có thể thấy rõ ràng trong bảng 2 khi cấu trúc được thực hiện trên thiết bị Xilinx 4010. Sự phức tạp được đo bằng cách sử dụng khối tế bào logic (CLB). Đối với các thiết bị gia đình cụ thể, một CLB bao gồm hai flip-flop, 2 bảng tra cứu thực hiện logic tổ hợp và một số điều khiển logic khác. Thực tế, thành phần của mỗi CLB bao gồm 2 flip-flop, ống dẫn và cấu trúc này có giá trị gần như không có gì. Tuy nhiên, tần số lớn nhất đạt được khi thanh ghi được thêm vào tại mỗi lần lặp. Điều này có thể được thấy trong bảng 3, trong đó báo cáo tóm tắt với đường ống khác nhau số thanh ghi. Việc đạt được tần số là quan trong hơn nhiều việc tăng số lượng CLB. Kiến trúc này rất hấp dẫn khi dùng các thiết bị FLAG mật độ cao như Virtex của Xilinx hoặc Flex của Altera.

Độ phức tạp cao, trễ lớn và số lượng lớn các mối liên kết cần thiết giữa các yếu tố trong một giai đoạn lặp đi lặp lại duy nhất là những bất lợi chính của việc thực hiện song song. Khi việc thực hiện nối tiếp được xem xét, độ phức tạp được mong đợi là nhỏ. Tuy nhiên, thông lượng và độ trễ phải được nghiên cứu chặt chẽ. Thông lượng được xác định trong phương trình (17):

( )

/ i

F N W (17)

Trong đó F là viết tắt của tần số đồng hồ, Ni là số lần lặp và W là chiều rộng của từ dữ liệu. Như thể hiện trong hình 6, mỗi lần lặp yêu cầu W chu kỳ.

Kiến trúc này hoạt động với tần số cao hơn so với kiến trúc song song và có thể dễ dàng gắn vào một thiết bị FPGA duy nhất. Do kiến trúc đơn giản, nên nó có thể đạt được tần số hoạt động cao. Ngoài ra, thông lượng có thể được tính tương tự kiến trúc song song – liên tầng. Bảng 4 tóm tắt báo cáo của việc thực hiện lặp nối tiếp với 13 lần lặp trên thiết bị FPGA Xilins 4010.

tham số cũng như xây dựng thẳng đường khung ảnh 720x576 pixels/khung phải được xử lý trong vòng 40 ms.Từ đó ta có thể thấy việc xử lý 1 điểm ảnh không được vượt quá 88,25 ns (1 tần số tối thiểu 11,3 MHz). Kiến trúc chung được biểu diễn trên Hình 2.7. Hai đơn vị CORDIC được sử dụng tính toán tham số ρ vàθ đồng thời. Hai đơn vị trên

sử dụng các chế độ khác nhau. Khối đầu tiên được biểu diễn qua Hình 2.8. Chi tiết thiết kế mỗi đơn vị được biểu diễn qua Hình 2.9 và Hình 2.10.

Bảng 4 Báo cáo thực hiện FPGA CORDIC lặp nối tiếp

được quét để xây dựng đường thẳng khung. Hai bộ nhớ được gói ở phần cuối mỗi khung. Địa chỉ bus của bộ nhớ không gian tham số là kết nói giữa ρ vàθ . Trong khi

một bộ nhớ được quét, quan trọng là để thông báo vào cuối mỗi chu kỳ đọc, vị trí nhớ hiện nay được xóa bằng cách sử dụng nguyên tắc chu kỳ đọc-chỉnh sửa. Lý do của việc làm điều đó là để dọn dẹp bộ nhớ cho các khung kế tiếp. Khi định dạng dữ liệu của 9 bit cho ρ và 12 bit cho θ với 9 chần lặp cho các thuật toán CORDIC đã được sử dụng,

việc đó liên quan đến việc tính toán không gian tham số trên Xilinx XC4010EPC84 [17] chip, cho ta thấy 2 lần tần số tối thiểu cần thiết có thể được sử dụng. Kết quả thực hiện sau có thể được xem trong Bảng 5.

Tuy nhiên, những hạn chế thời gian thực chỉ được đáp ứng cho một số các chuẩn. Table truyền hình ảnh 6, nơi mà độ phân giải được đưa ra trong pixel và fps là viết tắt của khung hình mỗi giây, chương trình chuẩn mà có thể sử dụng phương pháp này (gradient và CORDIC) để tính toán biến đổi Hough đổi trong thời gian thực.

Bảng 5 Báo cáo thực hiện tham số không gian

2.4.1 Tìm đường thẳng

Khối tìm đường thẳng sử dụng bộ nhớ không gian tham số như một đối tượng khởi động.

Bộ nhớ không gian tham số đã được quét để tìm ra giá trị bỏ phiếu cao nhắm xác định các tham số của dòng. Một số giá trị bỏ phiếu có thể là nhỏ do một trong hai phân đoạn ngắn hoặc do bỏ phiếu tán. Không đủ chính xác và chất lượng bộ dò lọc cạnh không tốt chính là lý do để bỏ phiếu phân tán. Để khắc phục vấn đề này khối tìm đường thẳng dòng phải bao gồm một đơn vị ngưỡng trong đó giá trị bỏ phiếu tối thiểu được cố định giá trị để xác định một dòng hợp lệ. Các đơn vị ngưỡng có thể được thực hiện với một so sánh đơn giản. Các đường thẳng khối phát hiện dựa trên các thuật toán sau đây:

Đường thẳng ảnh ( )x y,

được khởi tạo bằng 0 Mỗi giá trị ( , )ρ θ trong không gian tham số

Nếu ( , )ρ θ ≥ ngưỡng

Cho x=0 to xmax

( sin ) max 2 cot( ) max 2 (cot )

Y = ρ θ +x θ +yx θ

Tăng dòng (y x, ) nếu y∈[0, ymax]

End End

Hình 2.10 Kiến trúc đơn vị tham số

Thuật toán dựa trên mối quan hệ với biến đổi Hough nói chung. Trong quá trình xử lý này ta không biết biến XY . phụ thuộc vào giá trị ρ trong khi các không gian

tham sẽ được quét x là hàm của yy cũng là hàm củax . Như trong Hình 2.11 bốn đơn vị CORDIC và hai bộ cộng được yêu cầu. Một đơn vị đầu tiên được thiết kế bao gồm cả hai giá trị sinθ và cosθ . Hai đơn vị CORDIC được thiết kế để biểu diễn hai bộ

chia (sinθ cosθ hoặc cos sinθ θ ) và (ρ sinθ hoặc ρ cosθ ). Đơn vị tính toán cuối cùng bao gồm cả ( ymax − y).tanθ

hoặc ( ymax 2−x).cotθ .

Hình 2.11 Kiến trúc khối xấy dựng lại đường thẳng

Ba đơn vị CORDIC là các tầng trong khi cái thứ tư hoạt động song song với đơn vị đầu tiên theo Bảng 5 và sự xác định rang buộc thời gian thực thời gian tối đa đến một điểm không được vượ quá giới hạn. Điều này đảm bảo thời gian thực sẽ chạy.

Hình 2.12 biểu diễn kết quả của thuật toán trên thực hiện bằng ngôn ngữ C, áp dụng cho các ảnh khác nhau.

Hình 2.12 Kết quả tìm đường thẳng

Bảng 6 Tiêu chuẩn truyền dẫn ảnh có thể sử dụng kiến trúc đề xuất cho tính toán không gian tham số biến đổi thời gian thực Hough

trong không gian tham số Bao gồm cả một đơn vị khai thác maxima địa phương để từ chối phiếu phân tán để nâng cao hơn ngưỡng cố định đồng thời nâng cao chất lượng.

Hình 2.13 Hệ thống nguyên mẫu thử nghiệm

2.4.2 Nguyên mẫu

Việc thực hiện các kiến trúc trên đã được làm trên XC4010EPC84 để đo thời gian tính toán và đánh giá sự phức tạp. toàn bộ thiết kế (phát hiện cạnh, tính toán không gian tham số và thẳng đường xây dựng hình ảnh) được thực hiện trên hệ thống như trong Hình 13. Hệ thống bao gồm một camera thương mại, một dữ liệu vào-ra độc lập từ board Celoxica, một bảng Virtex PCI cũng từ Celoxica và cuối cùng một màn hình hiển thị chuẩn. Các dữ liệu vào- ra đọc lập tách bus của điểm ảnh và đồng bộ hóa tín hiệu điểm ảnh của từ dữ liệu camera dòng chảy theo dòng tín hiệu số. Board PCI bao gồm một chip Xilinx VIRTEX1000 FPGA, 8 MB tĩnh bộ nhớ và cầu PCI. Các cầu PCI chỉ được sử dụng để chuyển các tập tin cấu hình bit vào chip Virtex. một lần xử lý trên bảng VIRTEX1000, dữ liệu của điểm ảnh là đã trở lại trên bảng dữ liệu đầu vào- ra để được xem trên màn hình chuẩn. Với công nghệ VIRTEX1000, thiết kế có thể sử dụng đồng hồ hệ thống lên đến 200 MHz bao gồm cả đầu vào- ra [19]

KẾT LUẬN

Một kiến trúc thời gian thực cho gradient dựa biến đổi Hough đã được đưa ra và phát triển. Để thực hiện các hàm lượng giác và toán tử số học một cách phù hợp nên thuật toán CORDIC đã được áp dụng. Chỉ cần thanh ghi dịch và bộ cộng để xây dựng nên thuật toán này.

Kết quả khả quan đã được thu được từ khu vực silicon và tốc độ điểm của sự quan sát. Sự lựa chọn của chín lần lặp đã cho kết quả tốt. Tăng số lượng lần lặp sẽ nâng cao độ chính xác, nhưng sẽ làm chậm quá trình xử lý. Việc làm này đã chỉ ra rằng tính toán không gian tham số Hough dựa trên gradient và thuật toán CORDIC cho bài toán phát hiện có thể được thực hiện trên quy mô vừa sử dụng thiết bị FPGA, với ràng buộc thời gian đáp ứng cho một số các chuẩn truyền hình ảnh.

Cách tiếp cận này sẽ định hướng cho công việc tương lai đối với việc sử dụng tăng thêm các lần lặp các thuật toán CORDIC và sử dụng nhiều bit biểu diễn cho dữ liệu và nhiều hơn nữa hình dạng phức tạp, các đối tượng có thể được tách ra mà vẫn đáp ứng được yêu cầu xử lý theo thời gian thực.

THAM KHẢO

[1] P.V.C. Hough, Method and Means for Recognizing Complex Patterns, United State Patent. No. 3 069654, December, 1962.

[2] R.O. Duda, P.E. Hart, Use of the hough transform to detect lines and curves in pictures, CACM 15 (1) (1972) 11–15.

[3] H. Maıˆtre, Un Panorama de la Transforme ´e de Hough, Traitement du Signal 2 (4) (1985).

[4] M. Meribout, M. Nakanishi, T. Ogur, A real-time image segmentation on massively parallel architecture, Real-Time Imaging 5 (1999) 279–291.

[5] D. Houzet, Video Rate Hough Transform Implementation on the SIMD/MIMD

Parallel Architecture, GFLOP, Manuscript of July 15th 1993. Supported by CNRS PRC-

GDR ANM.

[6] K. Hanahara, et al., A real-time processor for the Hough transform, IEEE Transactions on Pattern Analysis and Machine Intelligence 10 (1) (1988) 124–125. [7] LSI Logic, L64250 Histogram/Hough Transform Processor, August 1989.

[8] F. O’Gormans, M.B. Clowes, Finding picture edges through collinearity of feature points, IEEE Transactions on Computers C-25 (4) (1976) 449–456.

[9] F. Zhou, P. Kornerup, A high speed Hough transform using CORDIC, Paper Presented at DSP95 Conference of Limassol, Chypre, June, 1995.

[10] H. Koshimizu, M. Numada, FIHT2 algorithm: a fast incremental Hough transform, IEICE Transactions E 74 (10) (1991).

[11] D. Demigny, B. Mazar,Transforme´e de Hough, de´tection de segments temps re ´el test pour une coope´ration FPGA/DSP, Paper Presented at GDR/PRC ISIS, January, 1998.

[12] The CORDIC trigonometric computing technique, IRE Transactions on Electronic Computers EC 8 (3) (1959) 330–334.

[13] J.S. Walther, A unified algorithm for elementary functions, Spring Joint computer Conference Proceedings 38 (1971) 379–385.

[14] Y.H. Hu, The quantization effect of the CORDIC algorithm, IEEE Transactions on Signal Processing 40 (4) (1992) 834–844.

[15] N. Lindlbauer, Application of FPGA’s to musical gesture and processing, Master Thesis, Department of computer science and Electrical of Landshut University Germany, November, 1999.

[16] R. Andrak, A survey algorithm for FPGA based computers, In Proceeding of the 1998 ACM/ SIGDA Sixth International Symposium on Field Programmable Gate Arrays, Monterey, CA, pp. 191–200, February 22–24, 1998. (http://www.andraka.com/biblio.htm).

[17] APS-X84 VHDL/FPGA Synthesis tutorial, FPGA Basics,http://www. users.erols.com/aaps/x84lab/FPGA.htm.

[18] M.G. Albanesi, M. Ferretti, D. Rizzo, Benchmarking Hough transform architectures for real-time, Real-Time Imaging 6 (2000) 155–172.

Một phần của tài liệu Nghiên cứu thuật toán chuyển đổi hough 3d ứng dụng phát hiện mặt phẳng sv project 3 HD (Trang 25)

w